├── README.md ├── etc ├── X11 │ └── Xsession.d │ │ └── 50rotate-screen ├── environment.d │ └── handheld.conf ├── sddm.conf.d │ ├── cachyos.conf │ ├── steam-deckify.conf │ └── virtualkbd.conf ├── skel │ ├── .config │ │ └── deckscale │ └── Desktop │ │ └── steamos-gamemode.desktop ├── systemd │ └── logind.conf.d │ │ └── steam-deckify.conf └── xdg │ ├── autostart │ ├── deckscale.desktop │ └── steam.desktop │ ├── baloofilerc │ ├── gtk-2.0 │ └── gtkrc │ ├── gtk-3.0 │ └── settings.ini │ ├── kcminputrc │ ├── kdeglobals │ ├── kscreenlockerrc │ ├── kwinrc │ ├── kwinrulesrc │ ├── plasma-nm │ └── powermanagementprofilesrc └── usr ├── bin ├── deckscale ├── gamescope-wayland-teardown-workaround ├── startplasma-steamos-oneshot └── steamos-add-to-steam ├── lib ├── firmware │ ├── TAS2XXX1EB3.bin │ ├── ath11k │ │ └── QCA206X │ │ │ └── hw2.1 │ │ │ ├── Data.msc │ │ │ ├── amss.bin │ │ │ ├── board-2.bin │ │ │ ├── board.bin │ │ │ ├── boardg.bin │ │ │ ├── m3.bin │ │ │ └── regdb.bin │ ├── qca │ │ ├── hpbtfw21.tlv │ │ ├── hpnv21.309 │ │ ├── hpnv21.bin │ │ ├── hpnv21g.309 │ │ └── hpnv21g.bin │ └── ti │ │ └── tas2781 │ │ └── TAS2XXX1EB30.bin ├── hwsupport │ └── valve-hardware ├── modprobe.d │ └── blacklist-handheld.conf ├── os-branch-select ├── os-session-select ├── sdboot-manage.conf.d │ └── handheld-arguments ├── systemd │ └── system │ │ └── hhd@.service.d │ │ └── override.conf └── udev │ └── rules.d │ └── 99-kwin-ignore-tablet-mode.rules └── share ├── cachyos-handheld ├── common │ └── wireplumber │ │ └── alsa-card1.conf ├── legion-go │ ├── multiwayCor48.wav │ ├── pipewire │ │ └── filter-chain.conf │ └── wireplumber │ │ └── alsa-card0.conf ├── msi-claw │ └── wireplumber │ │ └── alsa-card0.conf └── rog-ally │ ├── game.wav │ ├── pipewire │ └── filter-chain.conf │ └── wireplumber │ ├── alsa-card0-x.conf │ └── alsa-card0.conf ├── icons └── hicolor │ └── 64x64 │ └── apps │ └── steamdeck-gaming-return.svg ├── kservices5 └── ServiceMenus │ └── steam.desktop ├── libalpm └── hooks │ └── blocked-packages.hook ├── plasma └── kickeractions │ └── steam.desktop ├── polkit-1 └── actions │ ├── org.cachyos.host.policy │ ├── org.cachyos.priv.write.policy │ └── org.cachyos.session.select.policy └── wayland-sessions └── plasma-steamos-oneshot.desktop /README.md: -------------------------------------------------------------------------------- 1 | # Cachyos-Handheld-Edition 2 | 3 | Handheld Edition of CachyOS 4 | 5 | This will include our own calamares, adjusted desktop and scripts for proper installation on handhelds. 6 | We will provide only the online installation, so an internet connection will be mandatory. 7 | 8 | Currently it is not planned to support more bootloaders, but if there is any interest we can simply add them as in our default ISOs, for now we will default to systemd-boot. 9 | There will be support for 5 different filesystems: 10 | 11 | - xfs 12 | - ext4 13 | - btrfs (default) 14 | - zfs 15 | - bcachefs 16 | 17 | There will also be automatic snapshotting implemented, to make it easy for users to rollback if they run into issues. 18 | Bcachefs could be generally a good idea for handhelds, but it is not fully ready yet and we don't suggest it for now. 19 | 20 | ## Features 21 | - scx_lavd used as default scheduler - LAVD is a latency sensitive scheduler, which is intended to be used for handhelds and gaming 22 | - Steam Deck like Steam Expierence 23 | - Gamescope Session properly implemented 24 | - Kernel Patched to have support for Steam Deck OLED 25 | - Steam Deck OLED Firmware included as default 26 | - HDR correctly implemented via kernel patches 27 | - All dependecies and packages bundled for a proper gaming expierence (cachyos-gaming-meta) 28 | - Support for Winesync/Fastsync/NTSync 29 | - BBRv3 used as default 30 | - OpenRGB Patches included 31 | - Screensharing for Discord (via xwaylandvideobridge) 32 | - CachyOS Kernel 33 | - CachyOS Repository (all packages compiled with avx2/avx512 including auto detection for cpu support) 34 | - Orientation patches for several handheld devices 35 | - Support for Rog Ally patched in the kernel 36 | - Fixes and improvements for VRR on AMD 37 | 38 | ## Planned 39 | - Improve the experience further to provide a Steam Deck similar experience to SteamOS 40 | - Provide the Steam Deck Themes 41 | - Enhance Hardware Support 42 | 43 | ## Device specific / Officially supported devices 44 | Device specific customizations are mainly provided by the chwd profiles [Profiles](https://github.com/CachyOS/chwd/blob/master/profiles/pci/handhelds/profiles.toml) and the kernel. 45 | ### Steam Deck 46 | Valve's powerbuttond is used to handle power button events\ 47 | Steam is used for controller support. 48 | ### ROG Ally 49 | steam-powerbuttond-git is used to handle power button events.\ 50 | InputPlumber is used for controller support.\ 51 | Rogue enemy is an alternative that provides power profile switching and controller support. 52 | ### Lenovo Legion 53 | Handheld Daemon (HHD) is used by default to provide power button handling and controller support. 54 | 55 | ## Non Officially supported hardware. 56 | On not tested/supported hardware, you may face issues such as wrong screen orientation, missing sound, etc. 57 | HHD is not enabled automatically on unknown hardware, as such it must be enabled for specific controllers to work. 58 | 59 | 60 | ## Desktop Support 61 | 62 | it is generally planned to enhance the support further also for desktops. 63 | This generally already works, but swichting the gamesession on Desktops could show problems. 64 | 65 | 66 | ## Additonal Information 67 | 68 | ### How can I disable scx_lavd and use the BORE/EEVDF Scheduler? 69 | 70 | This can be simply done with following: 71 | ``` 72 | sudo systemctl disable scx.service 73 | sudo systemctl mask scx.service 74 | ``` 75 | ### How can I change the default desktop scaling? 76 | For unofficially support devices the scaling is provided by KDE.\ 77 | For officially supported devices (deck, ally, legion go, etc) the scaling is provided by a custom deckscale script.\ 78 | The values used by this script can be configured using the configuration file located at ~/.config/deckscale\ 79 | If this file does not exist for you, create it and add the contents from [this file.](https://github.com/CachyOS/CachyOS-Handheld/blob/main/etc/skel/.config/deckscale) 80 | 81 | ## Credit to: 82 | - ChimeraOS 83 | - Ripplingsnake 84 | - Manjaro (Phillip Müller for the base deckify package) 85 | 86 | ## Maintainers 87 | - Pogogo007 (Nekoh) 88 | - ptr1337 89 | -------------------------------------------------------------------------------- /etc/X11/Xsession.d/50rotate-screen: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | # OrangePi NEO-01 Screen Rotation Quirk 6 | if [[ $(cat /sys/devices/virtual/dmi/id/product_name) == "NEO-01" && \ 7 | $(cat /sys/devices/virtual/dmi/id/sys_vendor) == "OrangePi" ]]; then 8 | # Rotate the builtin screen every time so it's the right way around. 9 | xrandr --output "$(xrandr -q | grep eDP | cut -d" " -f1)" --rotate "right" 10 | fi 11 | -------------------------------------------------------------------------------- /etc/environment.d/handheld.conf: -------------------------------------------------------------------------------- 1 | #Used to make Decky loader point plugins to the correct user 2 | DECKY_USER=deck 3 | DECKY_USER_HOME=/home/deck 4 | #Used to allow maliit virtual keyboard to adapt its colors to the current theme 5 | QT_QUICK_CONTROLS_STYLE=org.kde.desktop 6 | -------------------------------------------------------------------------------- /etc/sddm.conf.d/cachyos.conf: -------------------------------------------------------------------------------- 1 | #Removed due to deckify 2 | #[Autologin] 3 | #Relogin=false 4 | #Session=plasma 5 | #User= 6 | 7 | [General] 8 | HaltCommand=/usr/bin/systemctl poweroff 9 | RebootCommand=/usr/bin/systemctl reboot 10 | 11 | [Theme] 12 | Current=breeze 13 | 14 | [Users] 15 | MaximumUid=60000 16 | MinimumUid=1000 17 | -------------------------------------------------------------------------------- /etc/sddm.conf.d/steam-deckify.conf: -------------------------------------------------------------------------------- 1 | [General] 2 | DisplayServer=wayland 3 | GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell 4 | [Autologin] 5 | Relogin=true 6 | #This is only for first boot as a file that overrides this gets created once /usr/lib/os-session-select runs 7 | Session=gamescope-session.desktop 8 | User=deck 9 | [X11] 10 | # Janky workaround for wayland sessions not stopping in sddm, kills 11 | # all active sddm-helper sessions on teardown 12 | DisplayStopCommand=/usr/bin/gamescope-wayland-teardown-workaround 13 | # rotate screen as needed 14 | DisplayCommand=/etc/X11/Xsession.d/50rotate-screen 15 | [Wayland] 16 | CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1 --inputmethod maliit-keyboard -------------------------------------------------------------------------------- /etc/sddm.conf.d/virtualkbd.conf: -------------------------------------------------------------------------------- 1 | [General] 2 | InputMethod=qtvirtualkeyboard 3 | -------------------------------------------------------------------------------- /etc/skel/.config/deckscale: -------------------------------------------------------------------------------- 1 | #Configuration file for the deckscale script 2 | #Uncomment and change the values for the device you want/use 3 | #The values are scaling factors. Ex 1.25 = 125% 4 | #Deck=1.0 5 | #LegionGO=2.0 6 | #Ally=1.25 7 | #GPDWinFour=1.5 -------------------------------------------------------------------------------- /etc/skel/Desktop/steamos-gamemode.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Return to Gaming Mode 3 | Exec=qdbus org.kde.Shutdown /Shutdown org.kde.Shutdown.logout 4 | Icon=steamdeck-gaming-return 5 | Terminal=false 6 | Type=Application 7 | StartupNotify=false 8 | -------------------------------------------------------------------------------- /etc/systemd/logind.conf.d/steam-deckify.conf: -------------------------------------------------------------------------------- 1 | [Login] 2 | HandlePowerKey=ignore 3 | KillUserProcesses=True 4 | -------------------------------------------------------------------------------- /etc/xdg/autostart/deckscale.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Comment=Scale the desktop for handheld devices 4 | Exec=/usr/bin/deckscale 5 | Name=Steam Deck desktop rescaler 6 | X-GNOME-Autostart-enabled=true 7 | X-KDE-autostart-phase=0 8 | -------------------------------------------------------------------------------- /etc/xdg/autostart/steam.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Actions=Store;Community;Library;Servers;Screenshots;News;Settings;BigPicture;Friends; 3 | Categories=Network;FileTransfer;Game; 4 | Comment[en_US]=Application for managing and playing games on Steam 5 | Comment=Application for managing and playing games on Steam 6 | Comment[bg]=Приложение за ръководене и пускане на игри в Steam 7 | Comment[cs]=Aplikace pro spravování a hraní her ve službě Steam 8 | Comment[da]=Applikation til at håndtere og spille spil på Steam 9 | Comment[de]=Anwendung zum Verwalten und Spielen von Spielen auf Steam 10 | Comment[el]=Εφαρμογή διαχείρισης παιχνιδιών στο Steam 11 | Comment[es]=Aplicación para administrar y ejecutar juegos en Steam 12 | Comment[fi]=Steamin pelien hallintaan ja pelaamiseen tarkoitettu sovellus 13 | Comment[fr]=Application de gestion et d'utilisation des jeux sur Steam 14 | Comment[hu]=Alkalmazás a Steames játékok futtatásához és kezeléséhez 15 | Comment[it]=Applicazione per la gestione e l'esecuzione di giochi su Steam 16 | Comment[ja]=Steam 上でゲームを管理&プレイするためのアプリケーション 17 | Comment[ko]=Steam에 있는 게임을 관리하고 플레이할 수 있는 응용 프로그램 18 | Comment[nl]=Applicatie voor het beheer en het spelen van games op Steam 19 | Comment[no]=Program for å administrere og spille spill på Steam 20 | Comment[pl]=Aplikacja do zarządzania i uruchamiania gier na platformie Steam 21 | Comment[pt_BR]=Aplicativo para jogar e gerenciar jogos no Steam 22 | Comment[pt_PT]=Aplicação para organizar e executar jogos no Steam 23 | Comment[ro]=Aplicație pentru administrarea și jucatul jocurilor pe Steam 24 | Comment[ru]=Приложение для игр и управления играми в Steam 25 | Comment[sv]=Ett program för att hantera samt spela spel på Steam 26 | Comment[th]=โปรแกรมสำหรับจัดการและเล่นเกมบน Steam 27 | Comment[tr]=Steam üzerinden oyun oynama ve düzenleme uygulaması 28 | Comment[uk]=Програма для керування іграми та запуску ігор у Steam 29 | Comment[vi]=Ứng dụng để quản lý và chơi trò chơi trên Steam 30 | Comment[zh_CN]=管理和进行 Steam 游戏的应用程序 31 | Comment[zh_TW]=管理並執行 Steam 遊戲的應用程式 32 | Exec=/usr/bin/steam -silent -steamdeck %U 33 | GenericName[en_US]= 34 | GenericName= 35 | Icon=steam 36 | MimeType= 37 | Name[en_US]=Steam 38 | Name=Steam 39 | OnlyShowIn=KDE 40 | Path= 41 | PrefersNonDefaultGPU=true 42 | StartupNotify=true 43 | Terminal=false 44 | TerminalOptions= 45 | Type=Application 46 | X-KDE-RunOnDiscreteGpu=true 47 | X-KDE-SubstituteUID=false 48 | X-KDE-Username= 49 | -------------------------------------------------------------------------------- /etc/xdg/baloofilerc: -------------------------------------------------------------------------------- 1 | [Basic Settings] 2 | # Indexing-Enabled=true #disable indexing completely 3 | 4 | [General] 5 | only basic indexing=true 6 | 7 | -------------------------------------------------------------------------------- /etc/xdg/gtk-2.0/gtkrc: -------------------------------------------------------------------------------- 1 | gtk-theme-name="Vapor" 2 | -------------------------------------------------------------------------------- /etc/xdg/gtk-3.0/settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-theme-name=Vapor 3 | -------------------------------------------------------------------------------- /etc/xdg/kcminputrc: -------------------------------------------------------------------------------- 1 | [Libinput][Defaults] 2 | PointerAccelerationProfile=1 3 | -------------------------------------------------------------------------------- /etc/xdg/kdeglobals: -------------------------------------------------------------------------------- 1 | [KDE] 2 | LookAndFeelPackage=com.valve.vapor.desktop 3 | SingleClick=false 4 | 5 | [KDE Action Restrictions][$i] 6 | action/switch_user=false 7 | action/start_new_session=false 8 | action/lock_screen=false 9 | 10 | [KDE Control Module Restrictions][$i] 11 | kcm_sddm.desktop=false 12 | #Commented to allow plymouth to be modified 13 | #kcm_plymouth.desktop=false 14 | 15 | #Do not mess with fonts for now. 16 | #[General] 17 | #font=Noto Sans,11,-1,5,50,0,0,0,0,0 18 | #menuFont=Noto Sans,11,-1,5,50,0,0,0,0,0 19 | #smallestReadableFont=Noto Sans,9,-1,5,50,0,0,0,0,0 20 | #toolBarFont=Noto Sans,11,-1,5,50,0,0,0,0,0 21 | 22 | # This is a konsole specific setting belonging to /etc/xdg/konsolerc 23 | # However we cannot ship this file anymore since upstream konsole ships now this file 24 | # https://gitlab.steamos.cloud/jupiter/tasks/-/issues/854 25 | [Desktop Entry] 26 | DefaultProfile=Vapor.profile 27 | -------------------------------------------------------------------------------- /etc/xdg/kscreenlockerrc: -------------------------------------------------------------------------------- 1 | [Daemon] 2 | Autolock=false 3 | LockOnResume=false 4 | -------------------------------------------------------------------------------- /etc/xdg/kwinrc: -------------------------------------------------------------------------------- 1 | [Wayland] 2 | InputMethod[$e]=/usr/share/applications/com.github.maliit.keyboard.desktop 3 | VirtualKeyboardEnabled=true 4 | [Xwayland] 5 | XwaylandEisNoPrompt=true 6 | -------------------------------------------------------------------------------- /etc/xdg/kwinrulesrc: -------------------------------------------------------------------------------- 1 | [$Version] 2 | update_info=kwinrules.upd:replace-placement-string-to-enum,kwinrules.upd:use-virtual-desktop-ids 3 | 4 | [1] 5 | Description=Window settings for Steam Keyboard 6 | above=true 7 | aboverule=2 8 | skiptaskbar=true 9 | skiptaskbarrule=2 10 | title=Steam Keyboard 11 | titlematch=2 12 | type=16 13 | typerule=2 14 | wmclass=steam 15 | wmclasscomplete=true 16 | wmclassmatch=2 17 | 18 | [9bd6e503-ac60-4e7b-9131-0b10c84b37eb] 19 | Description=Window settings for Steam Keyboard 20 | above=true 21 | aboverule=2 22 | title=Steam Keyboard 23 | titlematch=2 24 | type=16 25 | typerule=2 26 | wmclass=steam 27 | wmclasscomplete=true 28 | wmclassmatch=2 29 | 30 | [General] 31 | count=1 32 | rules=1 33 | -------------------------------------------------------------------------------- /etc/xdg/plasma-nm: -------------------------------------------------------------------------------- 1 | [General] 2 | SystemConnectionsByDefault=true 3 | 4 | -------------------------------------------------------------------------------- /etc/xdg/powermanagementprofilesrc: -------------------------------------------------------------------------------- 1 | [AC] 2 | icon=battery-charging 3 | 4 | [AC][DPMSControl] 5 | idleTime=600 6 | lockBeforeTurnOff=1 7 | 8 | [AC][DimDisplay] 9 | idleTime=300000 10 | 11 | [AC][HandleButtonEvents] 12 | lidAction=1 13 | powerButtonAction=1 14 | powerDownAction=16 15 | triggerLidActionWhenExternalMonitorPresent=false 16 | 17 | [Battery] 18 | icon=battery-060 19 | 20 | [Battery][DPMSControl] 21 | idleTime=60 22 | lockBeforeTurnOff=1 23 | 24 | [Battery][DimDisplay] 25 | idleTime=60000 26 | 27 | [Battery][HandleButtonEvents] 28 | lidAction=1 29 | powerButtonAction=1 30 | powerDownAction=16 31 | triggerLidActionWhenExternalMonitorPresent=false 32 | 33 | [Battery][SuspendSession] 34 | idleTime=300000 35 | suspendThenHibernate=false 36 | suspendType=1 37 | 38 | [LowBattery] 39 | icon=battery-low 40 | 41 | [LowBattery][BrightnessControl] 42 | value=30 43 | 44 | [LowBattery][DPMSControl] 45 | idleTime=60 46 | lockBeforeTurnOff=1 47 | 48 | [LowBattery][DimDisplay] 49 | idleTime=60000 50 | 51 | [LowBattery][HandleButtonEvents] 52 | lidAction=1 53 | powerButtonAction=1 54 | powerDownAction=16 55 | triggerLidActionWhenExternalMonitorPresent=false 56 | 57 | [LowBattery][SuspendSession] 58 | idleTime=300000 59 | suspendThenHibernate=false 60 | suspendType=1 61 | -------------------------------------------------------------------------------- /usr/bin/deckscale: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | # Original - https://github.com/Nobara-Project/steamdeck-edition-packages/blob/main/gamescope-session-plus/usr/bin/deckscale 3 | # Copyright (C) 2022-2023 CachyOS team 4 | # 5 | # This program is free software; you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation; either version 2 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License along 16 | # with this program; if not, write to the Free Software Foundation, Inc., 17 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 | 19 | # Refresh our desktop icons 20 | #cp /etc/skel/Desktop/* "$HOME"/Desktop/ 21 | #chmod +x "$HOME"/Desktop/* 22 | 23 | # We need to wait until the display is available before executing our changes 24 | sleep 5 25 | 26 | scale=0 27 | rotation="none" 28 | 29 | #Source config file for scaling values 30 | if [[ -f ~/.config/deckscale ]]; then 31 | source ~/.config/deckscale 32 | fi 33 | 34 | #Find enabled eDP device. 35 | for p in /sys/class/drm/*eDP*/enabled; do 36 | if [[ $(cat $p) == "enabled" ]]; then 37 | cardpath=${p%/enabled} 38 | dp=${cardpath#*/card?-} 39 | echo "Found first enabled eDP card. Using $cardpath" 40 | #Break out of loop to only use first card found. 41 | break 42 | fi 43 | done 44 | 45 | #Check for specific devices 46 | edid=$(edid-decode $cardpath/edid) 47 | # Steam Deck 48 | if [[ ! -z $(grep 'ANX7530 U' <<< "$edid") ]]; then 49 | if [[ -n "$Deck" ]]; then 50 | scale=$Deck 51 | else 52 | scale=1.0 53 | fi 54 | rotation="right" 55 | echo "Steam Deck display found." 56 | # GPD Win 4 screen 57 | elif [[ ! -z $(grep 'G1618-04' <<< "$edid") ]]; then 58 | if [[ -n "$GPDWinFour" ]]; then 59 | scale=$GPDWinFour 60 | else 61 | scale=1.5 62 | fi 63 | echo "GPD Win 4 display found" 64 | # Lenovo Legion Go screen 65 | elif [[ ! -z $(grep 'Go Display' <<< "$edid") ]]; then 66 | if [[ -n "$LegionGO" ]]; then 67 | scale=$LegionGO 68 | else 69 | scale=2.0 70 | fi 71 | rotation="left" 72 | echo "Lenovo Legion Go display found." 73 | # ROG Ally 74 | elif [[ ! -z $(grep 'TL070FVXS01-0' <<< "$edid") ]]; then 75 | if [[ -n "$Ally" ]]; then 76 | scale=$Ally 77 | else 78 | scale=1.25 79 | fi 80 | echo "ROG Ally display found" 81 | else 82 | echo "No known display found." 83 | fi 84 | 85 | # Run rotate command if a rotation was found 86 | if [[ $rotation != "none" ]]; then 87 | /usr/bin/kscreen-doctor output.$dp.rotation.$rotation 88 | echo "$rotation rotation applied." 89 | else 90 | echo "No rotation applied." 91 | fi 92 | # Run scale command if a scale was found 93 | if (( $(echo "$scale 0" | awk '{print ($1 != $2)}') )); then 94 | /usr/bin/kscreen-doctor output.$dp.scale.$scale 95 | echo "$scale scale factor applied." 96 | else 97 | echo "No scaling applied." 98 | fi 99 | -------------------------------------------------------------------------------- /usr/bin/gamescope-wayland-teardown-workaround: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu 4 | 5 | TARGETS=('/bin/bash /usr/bin/gamescope-session-plus' 6 | '/usr/bin/kwin_wayland') 7 | 8 | for target in "${TARGETS[@]}"; do 9 | for processtree in $(pgrep -xf "$target" || true); do 10 | kill -- "-$processtree" 11 | done 12 | done 13 | -------------------------------------------------------------------------------- /usr/bin/startplasma-steamos-oneshot: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | die() { echo >&2 "!! $*"; exit 1; } 6 | 7 | SENTINEL_FILE="steamos-session-select" 8 | SENTINEL_VALUE="plasma-steamos-oneshot.desktop" 9 | 10 | # If we proceed, execute this 11 | CHAINED_SESSION="/usr/lib/plasma-dbus-run-session-if-needed" 12 | CHAINED_SESSION_ARGS="/usr/bin/startplasma-wayland" 13 | # If we decide the sentinel is consumed, execute this command instead and fail 14 | RESTORE_SESSION=(steamos-session-select) # No arguments restores the session 15 | 16 | # Find or check config sentinel 17 | check_sentinel() 18 | { 19 | if [[ -z ${HOME+x} ]]; then 20 | echo >&2 "$0: No \$HOME variable!" 21 | # Rather than break we'll just launch plasma and hope for the best? 22 | return 0 23 | fi 24 | 25 | local config_dir="${XDG_CONF_DIR:-"$HOME/.config"}" 26 | ( 27 | cd "$HOME" 28 | cd "$config_dir" 29 | sentinel_value="$(cat "$SENTINEL_FILE")" 30 | [[ $sentinel_value = "$SENTINEL_VALUE" ]] || return 1 31 | rm "$SENTINEL_FILE" 32 | ) || return 1 # If we couldn't read the value or it wasn't what we wanted 33 | 34 | # Found value and removed it, we're good to continue 35 | return 0 36 | } 37 | 38 | if check_sentinel; then 39 | # We found and consumed the oneshot sentinel, proceed to launch plasma 40 | echo >&2 "$0: Found and removed sentinel file for one-shot plasma, proceeding to launch" 41 | exec $CHAINED_SESSION $CHAINED_SESSION_ARGS 42 | else 43 | echo >&2 "$0: Sentinel value not found, executing session-select to restore session" 44 | "${RESTORE_SESSION[@]}" || echo >&2 "$0: !! Failed to restore previous session, executing chained session" 45 | # Session restore should've stopped us, if it is broken at least let plasma continue to open 46 | exec $CHAINED_SESSION $CHAINED_SESSION_ARGS 47 | fi 48 | -------------------------------------------------------------------------------- /usr/bin/steamos-add-to-steam: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | set -e 4 | 5 | add_to_steam() { 6 | encodedUrl="steam://addnonsteamgame/$(python3 -c "import urllib.parse;print(urllib.parse.quote(\"$1\", safe=''))")" 7 | touch /tmp/addnonsteamgamefile 8 | steam "$encodedUrl" 9 | } 10 | 11 | show_error() { 12 | if [ "$show_dialog" = "1" ]; then 13 | kdialog --title Error --error "$1" 14 | else 15 | echo "$1" >&2 16 | fi 17 | } 18 | 19 | if [ $(id -u) = "0" ]; then 20 | show_error "This script cannot be run as root" 21 | exit 1 22 | fi 23 | 24 | if [ "$XDG_SESSION_TYPE" = "tty" ] && ! pgrep -x steam >/dev/null 2>&1; then 25 | show_error "Cannot run this script from a tty if Steam is not running" 26 | exit 1 27 | fi 28 | 29 | if [ "$1" = "-ui" ]; then 30 | show_dialog=1 31 | shift 32 | fi 33 | 34 | file=$(realpath "$1") 35 | if [ ! -e "$file" ] 36 | then 37 | echo "Usage: steamos-add-to-steam [-ui] " 38 | exit 1 39 | fi 40 | mime=$(kmimetypefinder "$file") 41 | case "$mime" in 42 | "application/x-desktop"|"application/x-ms-dos-executable"|"application/x-msdownload"|"application/vnd.microsoft.portable-executable") 43 | add_to_steam "$file" 44 | ;; 45 | "application/x-executable"|"application/vnd.appimage"|"application/x-shellscript") 46 | if [ -x "$file" ]; then 47 | add_to_steam "$file" 48 | else 49 | show_error "Unable to add non-Steam game. Is the file executable?" 50 | fi 51 | ;; 52 | *) 53 | show_error "Unsupported file type" 54 | ;; 55 | esac 56 | -------------------------------------------------------------------------------- /usr/lib/firmware/TAS2XXX1EB3.bin: -------------------------------------------------------------------------------- 1 | ti/tas2781/TAS2XXX1EB30.bin -------------------------------------------------------------------------------- /usr/lib/firmware/ath11k/QCA206X/hw2.1/amss.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/ath11k/QCA206X/hw2.1/amss.bin -------------------------------------------------------------------------------- /usr/lib/firmware/ath11k/QCA206X/hw2.1/board-2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/ath11k/QCA206X/hw2.1/board-2.bin -------------------------------------------------------------------------------- /usr/lib/firmware/ath11k/QCA206X/hw2.1/board.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/ath11k/QCA206X/hw2.1/board.bin -------------------------------------------------------------------------------- /usr/lib/firmware/ath11k/QCA206X/hw2.1/boardg.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/ath11k/QCA206X/hw2.1/boardg.bin -------------------------------------------------------------------------------- /usr/lib/firmware/ath11k/QCA206X/hw2.1/m3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/ath11k/QCA206X/hw2.1/m3.bin -------------------------------------------------------------------------------- /usr/lib/firmware/ath11k/QCA206X/hw2.1/regdb.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/ath11k/QCA206X/hw2.1/regdb.bin -------------------------------------------------------------------------------- /usr/lib/firmware/qca/hpbtfw21.tlv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/qca/hpbtfw21.tlv -------------------------------------------------------------------------------- /usr/lib/firmware/qca/hpnv21.309: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/qca/hpnv21.309 -------------------------------------------------------------------------------- /usr/lib/firmware/qca/hpnv21.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/qca/hpnv21.bin -------------------------------------------------------------------------------- /usr/lib/firmware/qca/hpnv21g.309: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/qca/hpnv21g.309 -------------------------------------------------------------------------------- /usr/lib/firmware/qca/hpnv21g.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/qca/hpnv21g.bin -------------------------------------------------------------------------------- /usr/lib/firmware/ti/tas2781/TAS2XXX1EB30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/lib/firmware/ti/tas2781/TAS2XXX1EB30.bin -------------------------------------------------------------------------------- /usr/lib/hwsupport/valve-hardware: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | inverted=false 3 | while getopts "i" flag; do 4 | case $flag in 5 | i) inverted=true ;; 6 | esac 7 | done 8 | #Exits with 0 for Valve handhelds unless inverted 9 | SYS_ID="$(cat /sys/devices/virtual/dmi/id/product_name)" 10 | if [[ ":Jupiter:Galileo:" =~ ":$SYS_ID:" ]]; then 11 | if $inverted; then 12 | exit 1 13 | else 14 | exit 0 15 | fi 16 | fi 17 | if $inverted; then 18 | exit 0 19 | else 20 | exit 1 21 | fi -------------------------------------------------------------------------------- /usr/lib/modprobe.d/blacklist-handheld.conf: -------------------------------------------------------------------------------- 1 | blacklist wdat_wdt 2 | -------------------------------------------------------------------------------- /usr/lib/os-branch-select: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | os_name="$(grep '^NAME=' /etc/os-release 2>/dev/null | cut -d= -f2- | tr -d '"')" 6 | 7 | if [[ $# -eq 1 ]]; then 8 | case "$1" in 9 | -c|-l) 10 | echo "$os_name" 11 | exit 0 12 | ;; 13 | stable) 14 | exit 0 15 | ;; 16 | *) 17 | echo "Invalid option. Usage: steamos-select-branch " 1>&2 18 | exit 1 19 | ;; 20 | esac 21 | fi 22 | 23 | echo "Usage: steamos-select-branch " 1>&2 24 | -------------------------------------------------------------------------------- /usr/lib/os-session-select: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | die() { echo >&2 "!! $*"; exit 1; } 6 | 7 | # FIXME Purge old files and use this one 8 | 9 | # File this script will modify, in addition to (potentially) the per-user sentinel file 10 | CONF_FILE="/etc/sddm.conf.d/zz-steamos-autologin.conf" 11 | 12 | # IF this file exists. The entry inside is what startplasma-steamos-oneshot uses to decide weither to boot gamescope or plasma 13 | SENTINEL_FILE="steamos-session-select" 14 | 15 | # For sanity this shipped file must be present, to ensure we're still on a normal-looking setup. 16 | CHECK_FILE="/etc/sddm.conf.d/cachyos.conf" 17 | 18 | session="${1:-gamescope}" 19 | 20 | session_launcher="" 21 | create_sentinel="" 22 | session_uses_x11="" 23 | 24 | case "$session" in 25 | plasma-persistent) 26 | session_launcher="plasma.desktop" 27 | ;; 28 | plasma-x11-persistent) 29 | session_launcher="plasmax11.desktop" 30 | session_uses_x11=1 31 | ;; 32 | plasma) 33 | session_launcher="plasma-steamos-oneshot.desktop" 34 | create_sentinel=1 35 | ;; 36 | gamescope) 37 | #session_launcher="opengamepadui-session.desktop" 38 | #session_launcher="gamescope-session-steam.desktop" 39 | #session_launcher="gamescope-session-steam-plus.desktop" 40 | session_launcher="gamescope-session.desktop" 41 | ;; 42 | *) 43 | echo >&2 "!! Unrecognized session '$session'" 44 | exit 1 45 | ;; 46 | esac 47 | 48 | if [[ "$2" == "--sentinel-created" ]]; then 49 | SENTINEL_CREATED=1 50 | fi 51 | 52 | # Update config sentinel 53 | if [[ -z $SENTINEL_CREATED ]]; then 54 | [[ -n ${HOME+x} ]] || die "No \$HOME variable" 55 | config_dir="${XDG_CONF_DIR:-"$HOME/.config"}" 56 | ( 57 | cd "$HOME" 58 | mkdir -p "$config_dir" 59 | cd "$config_dir" 60 | echo "$session_launcher" > "$SENTINEL_FILE" 61 | ) 62 | 63 | # If we were executed as a session user and then re-execute as root below, we don't want to set root's sentinel too 64 | export SENTINEL_CREATED=1 65 | echo "Updated user selected session to $session_launcher" 66 | fi 67 | 68 | # Become root 69 | if [[ $EUID != 0 ]]; then 70 | exec pkexec "$(realpath $0)" "$session" --sentinel-created 71 | exit 1 72 | fi 73 | 74 | { 75 | if [[ -n $session_uses_x11 ]]; then 76 | # Default is Wayland (Archlinux has x11 as its default. Therefore this is useless most of the time.) 77 | echo "[General]" 78 | echo "DisplayServer=X11" 79 | fi 80 | echo "[Autologin]" 81 | echo "Session=$session_launcher" 82 | } > "$CONF_FILE" 83 | 84 | echo "Updated system autologin session to $session_launcher" 85 | systemctl reset-failed sddm 86 | systemctl restart sddm 87 | echo "Restarted SDDM" 88 | 89 | if [[ -e /dev/input/.hidden ]]; then 90 | echo "Unhide hidden controller devices as needed" 91 | pkexec mv /dev/input/.hidden/* /dev/input 92 | pkexec rm -r /dev/input/.hidden 93 | fi 94 | -------------------------------------------------------------------------------- /usr/lib/sdboot-manage.conf.d/handheld-arguments: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #Check for legacy installs to not duplicate kernel arguments 4 | LEGACY=false 5 | if grep "fbcon=vc:2-6" /etc/sdboot-manage.conf; then 6 | LEGACY=true 7 | fi 8 | 9 | SYS_ID="$(cat /sys/devices/virtual/dmi/id/product_name)" 10 | 11 | 12 | #Steam Deck OLED and LCD 13 | if [[ ":Jupiter:Galileo:" =~ ":$SYS_ID:" ]]; then 14 | if ! "$LEGACY"; then 15 | LINUX_OPTIONS+="fbcon=vc:2-6 amd_iommu=off amdgpu.gttsize=8128 spi_amd.speed_dev=1 audit=0 iomem=relaxed amdgpu.ppfeaturemask=0xffffffff" 16 | fi 17 | #ROG Ally 18 | elif [[ "$SYS_ID" =~ (ROG\ Ally).* ]]; then 19 | if ! "$LEGACY"; then 20 | LINUX_OPTIONS+="fbcon=vc:2-6" 21 | fi 22 | #Lenovo legion Go 23 | elif [[ "$SYS_ID" =~ (83E1) ]]; then 24 | if ! "$LEGACY"; then 25 | LINUX_OPTIONS+="fbcon=vc:2-6 amdgpu.sg_display=0" 26 | else 27 | LINUX_OPTIONS+="amdgpu.sg_display=0" 28 | fi 29 | fi 30 | 31 | ############## 32 | # Unset so they dont get used by sd-boot-manager accidently (improbable but why not) 33 | unset LEGACY 34 | unset SYS_ID -------------------------------------------------------------------------------- /usr/lib/systemd/system/hhd@.service.d/override.conf: -------------------------------------------------------------------------------- 1 | #[Service] 2 | #Environment="HHD_QAM_GAMESCOPE=1" 3 | -------------------------------------------------------------------------------- /usr/lib/udev/rules.d/99-kwin-ignore-tablet-mode.rules: -------------------------------------------------------------------------------- 1 | # Tell KWin to ignore the trackpad for determining tablet mode 2 | 3 | KERNEL=="event[0-9]*", ATTRS{phys}=="usb-0000:04:00.4-3/input1", TAG+="kwin-ignore-tablet-mode" 4 | -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/common/wireplumber/alsa-card1.conf: -------------------------------------------------------------------------------- 1 | # Source: https://github.com/ublue-os/bazzite 2 | 3 | monitor.alsa.rules = [ 4 | { 5 | matches = [ 6 | { 7 | node.name = "~alsa_input.*" 8 | alsa.card_name = "acp5x" 9 | } 10 | { 11 | node.name = "~alsa_input.*" 12 | alsa.card_name = "acp6x" 13 | } 14 | { 15 | node.name = "~alsa_input.*" 16 | alsa.card_name = "sof-nau8821-max" 17 | } 18 | { 19 | node.name = "~alsa_output.*" 20 | alsa.card_name = "acp5x" 21 | } 22 | { 23 | node.name = "~alsa_output.*" 24 | alsa.card_name = "acp6x" 25 | } 26 | { 27 | node.name = "~alsa_output.*" 28 | alsa.card_name = "sof-nau8821-max" 29 | } 30 | ] 31 | actions = { 32 | update-props = { 33 | session.suspend-timeout-seconds = 0 34 | api.alsa.headroom = 1024 35 | } 36 | } 37 | } 38 | ] 39 | 40 | -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/legion-go/multiwayCor48.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/share/cachyos-handheld/legion-go/multiwayCor48.wav -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/legion-go/pipewire/filter-chain.conf: -------------------------------------------------------------------------------- 1 | # Convolver Configuration for Pipewire 2 | # 3 | # This configuration applies separate left and right convolver effects using the corresponding impulse response files 4 | # to the entire system audio output. 5 | # Source: https://github.com/ChimeraOS/device-quirks 6 | 7 | context.modules = [ 8 | { name = libpipewire-module-filter-chain 9 | args = { 10 | node.description = "Legion GO" 11 | media.name = "Legion GO" 12 | filter.graph = { 13 | nodes = [ 14 | { 15 | type = builtin 16 | label = convolver 17 | name = convFL 18 | config = { 19 | filename = "/usr/share/cachyos-handheld/legion-go/multiwayCor48.wav" 20 | channel = 0 21 | } 22 | } 23 | { 24 | type = builtin 25 | label = convolver 26 | name = convFR 27 | config = { 28 | filename = "/usr/share/cachyos-handheld/legion-go/multiwayCor48.wav" 29 | channel = 1 30 | } 31 | } 32 | ] 33 | inputs = [ "convFL:In" "convFR:In" ] 34 | outputs = [ "convFL:Out" "convFR:Out" ] 35 | } 36 | capture.props = { 37 | node.name = "Legion GO" 38 | media.class = "Audio/Sink" 39 | priority.driver = 1000 40 | priority.session = 1000 41 | audio.channels = 2 42 | audio.position = [ FL FR ] 43 | } 44 | playback.props = { 45 | node.name = "Legion GO corrected" 46 | node.passive = true 47 | audio.channels = 2 48 | audio.position = [ FL FR ] 49 | node.target = "alsa_output.pci-0000_c2_00.6.analog-stereo" 50 | } 51 | } 52 | } 53 | ] 54 | -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/legion-go/wireplumber/alsa-card0.conf: -------------------------------------------------------------------------------- 1 | # Source: https://github.com/ublue-os/bazzite 2 | 3 | monitor.alsa.rules = [ 4 | { 5 | matches = [ 6 | { 7 | node.name = "alsa_output.pci-0000_c2_00.6.analog-stereo" 8 | } 9 | ] 10 | actions = { 11 | update-props = { 12 | priority.driver = 900 13 | priority.session = 900 14 | api.alsa.period-size = 256 15 | api.alsa.headroom = 1024 16 | session.suspend-timeout-seconds = 0 17 | } 18 | } 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/msi-claw/wireplumber/alsa-card0.conf: -------------------------------------------------------------------------------- 1 | # MSI Claw has issues with audio cutting out, this works around it 2 | monitor.alsa.rules = [ 3 | { 4 | matches = [ 5 | { 6 | node.name = "~alsa_output.pci-0000_00_1f.3*" 7 | } 8 | ] 9 | actions = { 10 | update-props = { 11 | api.alsa.headroom = 1024 12 | } 13 | } 14 | } 15 | ] 16 | -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/rog-ally/game.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CachyOS/CachyOS-Handheld/58be765d469a045b76ac5c45eb0cd07b6389bc57/usr/share/cachyos-handheld/rog-ally/game.wav -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/rog-ally/pipewire/filter-chain.conf: -------------------------------------------------------------------------------- 1 | # Convolver Configuration for Pipewire 2 | # 3 | # This configuration applies separate left and right convolver effects using the corresponding impulse response files 4 | # to the entire system audio output. 5 | # Source: https://github.com/ublue-os/bazzite 6 | 7 | context.modules = [ 8 | { name = libpipewire-module-filter-chain 9 | args = { 10 | node.description = "ROG Ally/X" 11 | media.name = "ROG Ally/X" 12 | filter.graph = { 13 | nodes = [ 14 | { 15 | type = builtin 16 | label = convolver 17 | name = convFL 18 | config = { 19 | blocksize = 256 # FFT block size 20 | tailsize = 2048 # Tail block size in FFT 21 | gain = 1.0 # Overall gain to apply to the IR file 22 | delay = 0 # Extra delay in samples 23 | filename = 24 | "/usr/share/cachyos-handheld/rog-ally/game.wav" # Path to the impulse response file 25 | offset = 0 # Sample offset in the file as the start of the IR 26 | length = 0 # Number of samples to use as the IR 27 | channel = 0 # Channel to use from the file as the IR 28 | resample_quality = 4 # Resample quality 29 | } 30 | } 31 | { 32 | type = builtin 33 | label = convolver 34 | name = convFR 35 | config = { 36 | blocksize = 256 # FFT block size 37 | tailsize = 2048 # Tail block size in FFT 38 | gain = 1.0 # Overall gain to apply to the IR file 39 | delay = 0 # Extra delay in samples 40 | filename = "/usr/share/cachyos-handheld/rog-ally/game.wav" # Path to the impulse response file 41 | offset = 0 # Sample offset in the file as the start of the IR 42 | length = 0 # Number of samples to use as the IR 43 | channel = 1 # Channel to use from the file as the IR 44 | resample_quality = 4 # Resample quality 45 | } 46 | } 47 | ] 48 | inputs = [ "convFL:In" "convFR:In" ] 49 | outputs = [ "convFL:Out" "convFR:Out" ] 50 | } 51 | capture.props = { 52 | node.name = "ROG Ally/X" 53 | media.class = "Audio/Sink" 54 | priority.driver = 1000 55 | priority.session = 1000 56 | audio.channels = 2 57 | audio.position = [ FL FR ] 58 | } 59 | playback.props = { 60 | node.name = "ROG Ally/X corrected" 61 | node.passive = true 62 | audio.channels = 2 63 | audio.position = [ FL FR ] 64 | node.target = "alsa_output.pci-0000_09_00.6.analog-stereo" 65 | } 66 | } 67 | } 68 | ] 69 | -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/rog-ally/wireplumber/alsa-card0-x.conf: -------------------------------------------------------------------------------- 1 | # Source: https://github.com/ublue-os/bazzite 2 | 3 | monitor.alsa.rules = [ 4 | { 5 | matches = [ 6 | { 7 | node.name = "alsa_output.pci-0000_64_00.6.analog-stereo" 8 | } 9 | ] 10 | actions = { 11 | update-props = { 12 | priority.driver = 900 13 | priority.session = 900 14 | api.alsa.period-size = 256 15 | api.alsa.headroom = 1024 16 | session.suspend-timeout-seconds = 0 17 | } 18 | } 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /usr/share/cachyos-handheld/rog-ally/wireplumber/alsa-card0.conf: -------------------------------------------------------------------------------- 1 | # Source: https://github.com/ublue-os/bazzite 2 | 3 | monitor.alsa.rules = [ 4 | { 5 | matches = [ 6 | { 7 | node.name = "alsa_output.pci-0000_09_00.6.analog-stereo" 8 | } 9 | ] 10 | actions = { 11 | update-props = { 12 | priority.driver = 900 13 | priority.session = 900 14 | api.alsa.period-size = 256 15 | api.alsa.headroom = 1024 16 | session.suspend-timeout-seconds = 0 17 | } 18 | } 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /usr/share/icons/hicolor/64x64/apps/steamdeck-gaming-return.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /usr/share/kservices5/ServiceMenus/steam.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | TryExec=steam 3 | Type=Service 4 | X-KDE-ServiceTypes=KonqPopupMenu/Plugin 5 | MimeType=application/x-desktop;application/x-executable;application/vnd.appimage;application/x-shellscript;application/x-ms-dos-executable;application/x-msdownload; 6 | Actions=addToSteam 7 | 8 | [Desktop Action addToSteam] 9 | Exec=steamos-add-to-steam -ui %u 10 | Icon=steam 11 | Name=Add to Steam 12 | -------------------------------------------------------------------------------- /usr/share/libalpm/hooks/blocked-packages.hook: -------------------------------------------------------------------------------- 1 | [Trigger] 2 | Operation = Install 3 | Operation = Upgrade 4 | Type = Package 5 | Target = packagekit 6 | Target = packagekit-qt6 7 | Target = packagekit-qt5 8 | 9 | [Action] 10 | Description = "The transaction is attempting to install packagekit. Packagekit is broken on arch and should not be used. Transaction cancelled." 11 | When = PreTransaction 12 | Exec = /usr/bin/false 13 | AbortOnFail 14 | -------------------------------------------------------------------------------- /usr/share/plasma/kickeractions/steam.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | TryExec=steam 3 | Type=Service 4 | Actions=addToSteam 5 | 6 | [Desktop Action addToSteam] 7 | Exec=steamos-add-to-steam -ui %u 8 | Icon=steam 9 | Name=Add to Steam 10 | -------------------------------------------------------------------------------- /usr/share/polkit-1/actions/org.cachyos.host.policy: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | CachyOS 8 | https://cachyos.org 9 | 10 | 11 | Set the hostname 12 | package-x-generic 13 | 14 | yes 15 | yes 16 | yes 17 | 18 | /usr/bin/steamos-polkit-helpers/steamos-set-hostname 19 | 20 | 21 | 22 | Set the timezone 23 | package-x-generic 24 | 25 | yes 26 | yes 27 | yes 28 | 29 | /usr/bin/steamos-polkit-helpers/steamos-set-timezone 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /usr/share/polkit-1/actions/org.cachyos.priv.write.policy: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | CachyOS 8 | https://cachyos.org 9 | 10 | 11 | Helper to write to a set of device nodes 12 | package-x-generic 13 | 14 | yes 15 | yes 16 | yes 17 | 18 | /usr/bin/steamos-polkit-helpers/steamos-priv-write 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /usr/share/polkit-1/actions/org.cachyos.session.select.policy: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | CachyOS 8 | https://cachyos.org 9 | 10 | 11 | Helper to switch sessions 12 | package-x-generic 13 | 14 | yes 15 | yes 16 | yes 17 | 18 | /usr/lib/os-session-select 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /usr/share/wayland-sessions/plasma-steamos-oneshot.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Exec=/usr/bin/startplasma-steamos-oneshot 3 | TryExec=/usr/bin/startplasma-steamos-oneshot 4 | DesktopNames=KDE (One-Time Launch) 5 | Name=Plasma (One-Time Launch) 6 | Comment=Plasma by KDE - One Time Launch Redirect for SteamOS Sessions. Wayland Version 7 | --------------------------------------------------------------------------------