6.8 KiB
Super Alt S - Gaming Mode for KDE Plasma
Switch between KDE Plasma desktop and Steam Big Picture Gaming Mode with a keyboard shortcut. Built for Arch Linux and CachyOS.
Super+Alt+S to enter Gaming Mode. Super+Alt+R to return to desktop.
What it does
This installer sets up a full console-like gaming experience on your KDE Plasma desktop by configuring:
- Gamescope session using ChimeraOS packages (
gamescope-session-git,gamescope-session-steam-git) - Steam Big Picture running in a dedicated Wayland session via gamescope
- One-key switching between KDE Plasma and Gaming Mode via SDDM session management
- GPU auto-detection for NVIDIA, AMD dGPU, and AMD APU systems
- Performance mode with CPU governor, GPU power management, and kernel tuning
- NetworkManager integration so Steam has network access even if your desktop uses iwd/systemd-networkd
- External drive auto-mounting for Steam libraries on secondary drives
- Shader cache optimisation for reduced stuttering
- Installation verification to confirm everything is set up correctly
Requirements
- Arch Linux or CachyOS (or any Arch-based distro with KDE Plasma)
- KDE Plasma 6 (Wayland)
- SDDM display manager
- AMD or NVIDIA GPU (Intel-only is not supported)
- Steam (installed during setup if missing)
- AUR helper (yay or paru) for ChimeraOS session packages
Install
git clone https://git.no-signal.uk/nosignal/super-alt-s.git
cd super-alt-s
chmod +x super-alt-s.sh
./super-alt-s.sh
The installer is interactive and will walk you through each step, asking before making changes.
Usage
| Action | Shortcut |
|---|---|
| Enter Gaming Mode | Super+Alt+S (from KDE Plasma) |
| Return to Desktop | Super+Alt+R (from Gaming Mode) |
| Return to Desktop (fallback) | Steam > Power > Exit to Desktop |
What gets installed
Packages (via pacman + AUR)
- Steam and all required 32-bit libraries
- GPU-specific Vulkan drivers (NVIDIA or AMD)
- gamescope, mangohud, gamemode, proton-ge-custom-bin
- gamescope-session-git + gamescope-session-steam-git (ChimeraOS AUR packages)
- python-evdev (for keybind monitoring)
Scripts
| File | Purpose |
|---|---|
/usr/local/bin/switch-to-gaming |
Switches from KDE to Gaming Mode |
/usr/local/bin/switch-to-desktop |
Switches from Gaming Mode to KDE |
/usr/local/bin/gamescope-session-nm-wrapper |
Session wrapper with NetworkManager + performance mode |
/usr/local/bin/gaming-keybind-monitor |
Python daemon monitoring Super+Alt+R in Gaming Mode |
/usr/local/bin/gaming-session-switch |
Updates SDDM config for session switching |
/usr/local/bin/gamescope-nm-start |
Starts NetworkManager for gaming session |
/usr/local/bin/gamescope-nm-stop |
Stops NetworkManager and restores iwd |
/usr/local/bin/steam-library-mount |
Auto-mounts external drives with Steam libraries |
/usr/lib/os-session-select |
Handles Steam's "Exit to Desktop" menu option |
System config
| File | Purpose |
|---|---|
/etc/sddm.conf.d/zz-gaming-session.conf |
SDDM autologin session switching |
/etc/sudoers.d/gaming-session-switch |
Passwordless sudo for session switching |
/etc/sudoers.d/gaming-mode-sysctl |
Passwordless sudo for performance tuning |
/etc/udev/rules.d/99-gaming-performance.rules |
CPU/GPU sysfs permissions |
/etc/security/limits.d/99-gaming-memlock.conf |
Memory lock limits for esync |
/etc/pipewire/pipewire.conf.d/10-gaming-latency.conf |
Low-latency audio |
/etc/environment.d/99-shader-cache.conf |
Shader cache sizes |
/etc/polkit-1/rules.d/50-gamescope-networkmanager.rules |
NM access for wheel group |
/etc/polkit-1/rules.d/50-udisks-gaming.rules |
Drive mount access for wheel group |
User config
| File | Purpose |
|---|---|
~/.config/environment.d/gamescope-session-plus.conf |
Resolution, refresh rate, GPU settings |
~/.config/kglobalshortcutsrc |
Super+Alt+S shortcut registration |
GPU support
NVIDIA
- Auto-detects NVIDIA GPU and installs required drivers/utils
- Checks and configures
nvidia-drm.modeset=1kernel parameter (supports GRUB, systemd-boot, and Limine) - Sets up GBM backend and Vulkan adapter
- NVIDIA gamescope wrapper with
--force-compositionif supported - Caps resolution at 2560x1440 for gamescope compatibility
- Performance mode includes persistence mode, max power limit, and runtime suspend disable
AMD (dGPU)
- Installs Vulkan RADEON drivers
- Enables adaptive sync and HDR
- Distinguishes between discrete GPUs and integrated APUs using PCI device identification
AMD APU
- Supported as a fallback when no discrete GPU is found
- Same session setup with APU-specific display detection
Verify installation
Run verification without reinstalling:
./super-alt-s.sh --verify
This checks all files, permissions, packages, user groups, and service status.
Options
./super-alt-s.sh # Full install
./super-alt-s.sh --verify # Verification only
./super-alt-s.sh --version # Show version
./super-alt-s.sh --help # Show help
How it works
-
KDE to Gaming Mode (Super+Alt+S): The
switch-to-gamingscript updates SDDM's session config togamescope-session-steam-nm, kills any existing gamescope, and restarts SDDM. SDDM auto-logs in to the gaming session. -
Gaming session startup: The
gamescope-session-nm-wrapperenables performance mode (CPU governor, GPU power), starts NetworkManager, launches the Steam library drive monitor, starts the keybind monitor, then hands off to ChimeraOS'sgamescope-session-pluswhich launches gamescope with Steam. -
Gaming Mode to KDE (Super+Alt+R): The
gaming-keybind-monitorPython daemon detects the key combo via evdev and callsswitch-to-desktop, which shuts down Steam, kills gamescope, updates SDDM config back to KDE Plasma, and restarts SDDM. -
Cleanup on exit: Performance mode is restored to balanced, NetworkManager is stopped (iwd restarted if needed), drive monitor and keybind monitor are killed.
Troubleshooting
No network in Gaming Mode
- Check NetworkManager is installed:
pacman -S networkmanager - Test manually:
sudo systemctl start NetworkManager && nmcli general - Check logs:
journalctl -u NetworkManager -n 50
Shortcut not working in KDE
- Log out and back in after install
- Or set manually: System Settings > Shortcuts > search "Gaming Mode"
Super+Alt+R not working in Gaming Mode
- Ensure you're in the
inputgroup:groups | grep input - Check python-evdev:
python3 -c "import evdev" - Check input devices:
ls /dev/input/event*
NVIDIA: black screen or no display
- Verify kernel parameter:
cat /proc/cmdline | grep nvidia-drm.modeset - Reboot if you just added the parameter
- Check DRM cards:
ls /sys/class/drm/card*/device/driver -la
License
MIT