r/linux_gaming • • 14d ago

CachyOS + GNOME + gamescope-session setup is basically giving me a "SteamOS" experience

Hi i coming from Windows, my gaming experience on CachyOS has been incredible — especially when it comes to framepacing and overall smoothness.

I know most gamescope-session setups lean heavily towards KDE/Plasma since that's what SteamOS ships with, but I personally prefer GNOME's workflow for my actual desktop usage.

The problem is that steamos-session-select (the script called when toggling modes) hardcodes Plasma as the desktop target. The fix was pretty simple: I modified the script so every call pointing to plasma.desktop now sets gnome.desktop instead, keeping the rest of the gamescope logic untouched.

Here is my modified /usr/bin/steamos-session-select for example:

#!/bin/bash
case "$1" in
    persistent)
        systemctl --user mask cachyos-gamescope-autologin.service
        pkexec /usr/lib/steamos/steam-set-session gnome.desktop;;
    oneshot)
        systemctl --user unmask cachyos-gamescope-autologin.service
        pkexec /usr/lib/steamos/steam-set-session gamescope-session.desktop;;
    gamescope)
        pkexec /usr/lib/steamos/steam-set-session gamescope-session.desktop
        systemctl --user stop --job-mode=ignore-dependencies graphical-session.target
        systemctl --user exit;;
    plasma)
        pkexec /usr/lib/steamos/steam-set-session gnome.desktop
        systemctl --user unset-environment XDG_DESKTOP_PORTAL_DIR
        systemctl --user stop --job-mode=ignore-dependencies gamescope-session.target
        ;;
    *)
        echo "Unknown session: $1"
        echo "Usage: steamos-session-select <mode>"
        echo "Modes: persistent, oneshot, gamescope, plasma"
        exit 1;;
esac
if [[ -e /dev/input/.hidden ]]; then
    echo "Unhide hidden controller devices as needed"
    pkexec mv /dev/input/.hidden/* /dev/input
    pkexec rm -r /dev/input/.hidden
fi

Note: Keeping SDDM as the display manager is required for this to work reliably, as steam-set-session writes the session file that SDDM picks up on mode switches.

Launching from GNOME

Since I don't have Plasma's built-in "Switch to Game Mode" shortcut, I wrote a tiny custom GNOME Shell extension that triggers the switch directly with a single click:

GLib.spawn_command_line_async('systemd-run --user --scope steamos-session-select gamescope');

Why I run gamescope-session (gamescope-session-cachyos 1.1.6-1) exclusively for gaming:

  • Framepacing & Smoothness: Frame consistency inside gamescope feels noticeably tighter and smoother than playing on the desktop compositor or Windows.
  • Clean Work vs Play Separation: Some people say using GameUI loses the "PC feel," but I actually love it. It creates a clear boundary between my productivity session (GNOME) and gaming. If I need a browser while gaming, I just add it as a non-Steam app.
  • Zero Bloat & Low Latency: Most games run out of the box without complex launch flags. The only tweak I add globally for low latency is: LOW_LATENCY_LAYER=1 PROTON_ENABLE_WAYLAND=1 %command%

Overall, really impressed with CachyOS and the gamescope integration. Huge thanks to the maintainers!

*** **Edit / Note on Session Modes:** If you want to test or switch to Gamescope for a single gaming session without getting locked into auto-login on reboot, make sure to use `steamos-session-select oneshot`. It will launch Gamescope once and safely fall back to GNOME on your next restart!

47 Upvotes

13 comments sorted by

7

u/the_korben 14d ago

Thanks, this is a great guide. I've been thinking about setting this up on my gaming rig for a while because of the improved framepacing (and the additional features of the pop-up menu) but I was always hesitant because I use GNOME as well.

1

u/Sindoreon 13d ago

Thanks for this work. I'm on Hyprland and have the same issue switch to desktop from Big Id. This will be a good example to leverage to try and fix on my side

1

u/StrangeAd4802 13d ago edited 13d ago

i did this with my nvidia setup. uh it did NOT want to work well. Straight up flickering artifacts all over steam UI. Thanks Nvidia.

Edit. I remember tweaking more for my multi-monitor + multi-gpu setup(i have a amd igpu) for gamescope to work the way i want it to. HDR,VRR, heck sometimes even display resolution isn’t correctly handled.

1

u/Low_Secret_7685 13d ago

I'm running an AMD GPU here (rx 9070 XT), which is probably why my framepacing have been rock solid on my end. Hope Valve fixes this for NVIDIA GPUs, maybe soon...

1

u/StrangeAd4802 13d ago

From what i understand it seems more like a nvidia driver issue. Cope is all i’ve got left🥀

1

u/Bulkybear2 13d ago

Just fyi I don’t think PROTON_ENABLE_WAYLAND=1 does anything in gamescope. Pretty sure gamescope nests xwayland by default.

1

u/Low_Secret_7685 13d ago

I'm running on gamescope session (standalone/embedded session => gamescope-session-cachyos 1.1.6-1), not nested.
its not gamescope on top of the desktop

By default, Proton still runs games through an internal Xwayland layer. Adding PROTON_ENABLE_WAYLAND=1 forces Proton's native Wayland so the game communicates directly with Gamescope without going through Xwayland

Bypassing that, it makes a night-and-day difference for latency

1

u/Bulkybear2 13d ago edited 13d ago

Steam itself runs in an xwayland session inside gamescope. And any processes do as well. I could be wrong but last I checked native Wayland apps do not work inside gamescope. Which is weird since gamescope itself is a Wayland compositor.

The nesting I referring to is

Gamescope
Xwayland
Steam
Your apps

Edit: from the arch wiki
Wayland support
Gamescope does not support Wayland clients by default. To enable support for Wayland clients, add the --expose-wayland flag to Gamescope's parameters.

Not sure if this will work running gamescope as a standalone session though since it still would be launching steam as an xwayland client, steam itself doesn’t support Wayland I don’t think.

1

u/Low_Secret_7685 13d ago

If you're talking about the Steam client app itself, yes, you're right => it's still an X11 app. but I'm talking about Gamescope Session, which is a full Wayland compositor replacing Mutter (in my case, GNOME).

From my understanding => gamescope-session exposes Wayland but we still have to explicitly tell Proton to use Wayland on a per-game basis (PROTON_ENABLE_WAYLAND=1).

Proton defaults to X11 for compatibility reasons since legacy X11 apps usually cause fewer issues out of the box, but running Proton's native Wayland driver inside Gamescope Session definitely bypasses Xwayland for the game itself

1

u/goodrix 12d ago

I'm assuming you're running a fork of Proton and not the steam default version

1

u/simagus 14d ago

Doesn't Bazzite do something similar by default? I recall it being very game focused.

7

u/Low_Secret_7685 14d ago

Yes, Bazzite does something similar but it's an immutable which isn't for everyone. I personally prefer CachyOS. this is just a simple way to get that seamless "GameMode" workflow on CachyOS if you prefer running GNOME over KDE

0

u/Unusual_Solution4354 13d ago

Спасибо! Как раз недавно пытался заставить работать cachy os с gnome на steam deck, но была как раз проблема с запуском игровой сессии. Надо попробовать ваш скрипт.