A manager script to make gamescope easier to use on desktop
Shell
217
49 commits
updated Aug 18, 2026
A manager script to make gamescope easier to use on the desktop (or if you use it in desktop mode and gamemode)
Originally made for Bazzite, released here so more projects can make use of it! ❤️
Turn this

Into this (you can also replace scopebuddy with scb if you set that up)

Features:
Look at https://docs.bazzite.gg/Advanced/scopebuddy/
SCB_AUTO_*)ScopeBuddy can automatically detect your display settings and configure gamescope accordingly:
-W and -H)-r) to your current monitor refresh rate. NOTE: this has known limitations, and often doesn't work if --adaptive-sync or SCB_AUTO_VRR is set.--framerate-limit) to your current monitor refresh rate. NOTE: this has known limitations, and often doesn't work if --adaptive-sync or SCB_AUTO_VRR is set.kscreen-doctor (requires jq)gdctl (requires jq and upstream version with --format=json support) or gnome-randr as fallbackjq)In Steam launch options:
SCB_AUTO_RES=1 SCB_AUTO_HDR=1 SCB_AUTO_VRR=1 scopebuddy -- %command%
In config file (~/.config/scopebuddy/scb.conf):
# Enable auto-detection for resolution, HDR, and VRR
SCB_AUTO_RES=1
SCB_AUTO_HDR=1
SCB_AUTO_VRR=1
SCB_AUTO_REFRESH=1
SCB_AUTO_FRAME_LIMIT=1
ScopeBuddy supports two methods for GNOME display detection:
For GNOME users with an upstream version of gdctl that supports --format=json. ScopeBuddy will automatically test if your gdctl version supports this.
You can check if you have a version that supports this by running
gdctl show --format=json in your terminal. If you see output about your display, your version is supported.
If you see
usage: gdctl [-h] COMMAND ...
gdctl: error: unrecognized arguments: --format=json
Then your distribution's version doesn't support JSON output yet. You can either proceed to option 2 (gnome-randr) or download the upstream version of gdctl from this merge request:
Note: The GNOME GitLab may require authentication to download files directly. If you encounter a permissions error, log in to your GitLab account in your browser, navigate to the merge request, and download the
gdctlfile manually. Save it as~/.local/bin/gdctl-mr4708and make it executable:
chmod +x ~/.local/bin/gdctl-mr4708
Then use it with the GDCTL_COMMAND variable:
In Steam launch options:
GDCTL_COMMAND=$HOME/.local/bin/gdctl-mr4708 SCB_AUTO_RES=1 SCB_AUTO_HDR=1 SCB_AUTO_VRR=1 scopebuddy -- %command%
In config file:
export GDCTL_COMMAND="$HOME/.local/bin/gdctl-mr4708"
SCB_AUTO_RES=1
SCB_AUTO_HDR=1
SCB_AUTO_VRR=1
If gdctl is not available or doesn't support --format=json, ScopeBuddy will automatically fall back to using gnome-randr.
gnome-randr is shipped by default with Bazzite's GNOME-based images, and should be available through package managers on most other distros.
You can also specify a custom gnome-randr path:
In config file:
export GNOME_RANDR_COMMAND="$HOME/.local/bin/gnome-randr"
SCB_AUTO_RES=1
SCB_AUTO_HDR=1
SCB_AUTO_VRR=1
Wlroots compositors do not have any concept of a primary monitor, so the monitor must be specified with gamescope's -O or --prefer-output flag. See Multi-Monitor Support for more info.
If you're using multiple monitors and want to target a specific display, use gamescope's -O or --prefer-output flag:
SCB_AUTO_RES=1 scopebuddy -O DP-3 -- %command%
Scopebuddy can be configured to bypass gamescope entirely using the SCB_NOSCOPE=1 variable.
Most of the SCB_AUTO_* variables are ignored in this mode. However, HDR can be used in non-gamescope contexts by using any fork/variant of Proton version 10+ with experimental support for wayland enabled.
One of the following Proton versions is required for this feature to work:
These can either be set per-game in the "Properties -> Compatibility" tab, or Globally in "Steam Settings -> Compatibility"
In scb.conf:
SCB_AUTO_HDR=1
SCB_NOSCOPE=1
Alternatively, SCB_NOSCOPE can be left out of scb.conf and set in either a game-specific scb.conf file or directly launch options: SCB_NOSCOPE=1 scb -- %command%.
Optional for $SCB_AUTO_RES/$SCB_AUTO_HDR/$SCB_AUTO_VRR:
kscreen-doctor (usually pre-installed) and jq (installed by default on Bazzite)gdctl with --format=json support (requires jq) OR gnome-randr (see GNOME Support section above)jq)sudo curl -Lo /usr/local/bin/scopebuddy https://raw.githubusercontent.com/HikariKnight/ScopeBuddy/refs/heads/main/bin/scopebuddy
sudo chmod +x /usr/local/bin/scopebuddy
sudo wget -O /usr/local/bin/scopebuddy https://raw.githubusercontent.com/HikariKnight/ScopeBuddy/refs/heads/main/bin/scopebuddy
sudo chmod +x /usr/local/bin/scopebuddy
scb symlink because we love short commandsNOTE: You only need to do this once
sudo ln -s scopebuddy /usr/local/bin/scb
Home Manager (flake-based), add an input:
inputs.scopebuddy.url = "github:HikariKnight/ScopeBuddy";
Then add the package:
home.packages = [
inputs.scopebuddy.packages.${pkgs.stdenv.hostPlatform.system}.default
];
Install the Terra Repository, then install ScopeBuddy:
dnf install ScopeBuddy
ScopeBuddy is available in the Arch User Repository (AUR) via the scopebuddy-git package. Using an AUR helper such as yay:
yay -S scopebuddy-git
Or, manually:
git clone https://aur.archlinux.org/scopebuddy-git.git
cd scopebuddy-git
makepkg -si
TealMango in the Bazzite community has made a GUI tool to configure scopebuddy. Well worth to check it out here: ScopeBuddy-GUI
344 followers · starred Feb 2026
420 followers · starred Jan 2026
469 followers · starred Mar 2026
238 followers · starred Oct 2026
A manager script to make gamescope easier to use on desktop
Shell
217
49 commits
updated Aug 18, 2026
A manager script to make gamescope easier to use on the desktop (or if you use it in desktop mode and gamemode)
Originally made for Bazzite, released here so more projects can make use of it! ❤️
Turn this

Into this (you can also replace scopebuddy with scb if you set that up)

Features:
Look at https://docs.bazzite.gg/Advanced/scopebuddy/
SCB_AUTO_*)ScopeBuddy can automatically detect your display settings and configure gamescope accordingly:
-W and -H)-r) to your current monitor refresh rate. NOTE: this has known limitations, and often doesn't work if --adaptive-sync or SCB_AUTO_VRR is set.--framerate-limit) to your current monitor refresh rate. NOTE: this has known limitations, and often doesn't work if --adaptive-sync or SCB_AUTO_VRR is set.kscreen-doctor (requires jq)gdctl (requires jq and upstream version with --format=json support) or gnome-randr as fallbackjq)In Steam launch options:
SCB_AUTO_RES=1 SCB_AUTO_HDR=1 SCB_AUTO_VRR=1 scopebuddy -- %command%
In config file (~/.config/scopebuddy/scb.conf):
# Enable auto-detection for resolution, HDR, and VRR
SCB_AUTO_RES=1
SCB_AUTO_HDR=1
SCB_AUTO_VRR=1
SCB_AUTO_REFRESH=1
SCB_AUTO_FRAME_LIMIT=1
ScopeBuddy supports two methods for GNOME display detection:
For GNOME users with an upstream version of gdctl that supports --format=json. ScopeBuddy will automatically test if your gdctl version supports this.
You can check if you have a version that supports this by running
gdctl show --format=json in your terminal. If you see output about your display, your version is supported.
If you see
usage: gdctl [-h] COMMAND ...
gdctl: error: unrecognized arguments: --format=json
Then your distribution's version doesn't support JSON output yet. You can either proceed to option 2 (gnome-randr) or download the upstream version of gdctl from this merge request:
Note: The GNOME GitLab may require authentication to download files directly. If you encounter a permissions error, log in to your GitLab account in your browser, navigate to the merge request, and download the
gdctlfile manually. Save it as~/.local/bin/gdctl-mr4708and make it executable:
chmod +x ~/.local/bin/gdctl-mr4708
Then use it with the GDCTL_COMMAND variable:
In Steam launch options:
GDCTL_COMMAND=$HOME/.local/bin/gdctl-mr4708 SCB_AUTO_RES=1 SCB_AUTO_HDR=1 SCB_AUTO_VRR=1 scopebuddy -- %command%
In config file:
export GDCTL_COMMAND="$HOME/.local/bin/gdctl-mr4708"
SCB_AUTO_RES=1
SCB_AUTO_HDR=1
SCB_AUTO_VRR=1
If gdctl is not available or doesn't support --format=json, ScopeBuddy will automatically fall back to using gnome-randr.
gnome-randr is shipped by default with Bazzite's GNOME-based images, and should be available through package managers on most other distros.
You can also specify a custom gnome-randr path:
In config file:
export GNOME_RANDR_COMMAND="$HOME/.local/bin/gnome-randr"
SCB_AUTO_RES=1
SCB_AUTO_HDR=1
SCB_AUTO_VRR=1
Wlroots compositors do not have any concept of a primary monitor, so the monitor must be specified with gamescope's -O or --prefer-output flag. See Multi-Monitor Support for more info.
If you're using multiple monitors and want to target a specific display, use gamescope's -O or --prefer-output flag:
SCB_AUTO_RES=1 scopebuddy -O DP-3 -- %command%
Scopebuddy can be configured to bypass gamescope entirely using the SCB_NOSCOPE=1 variable.
Most of the SCB_AUTO_* variables are ignored in this mode. However, HDR can be used in non-gamescope contexts by using any fork/variant of Proton version 10+ with experimental support for wayland enabled.
One of the following Proton versions is required for this feature to work:
These can either be set per-game in the "Properties -> Compatibility" tab, or Globally in "Steam Settings -> Compatibility"
In scb.conf:
SCB_AUTO_HDR=1
SCB_NOSCOPE=1
Alternatively, SCB_NOSCOPE can be left out of scb.conf and set in either a game-specific scb.conf file or directly launch options: SCB_NOSCOPE=1 scb -- %command%.
Optional for $SCB_AUTO_RES/$SCB_AUTO_HDR/$SCB_AUTO_VRR:
kscreen-doctor (usually pre-installed) and jq (installed by default on Bazzite)gdctl with --format=json support (requires jq) OR gnome-randr (see GNOME Support section above)jq)sudo curl -Lo /usr/local/bin/scopebuddy https://raw.githubusercontent.com/HikariKnight/ScopeBuddy/refs/heads/main/bin/scopebuddy
sudo chmod +x /usr/local/bin/scopebuddy
sudo wget -O /usr/local/bin/scopebuddy https://raw.githubusercontent.com/HikariKnight/ScopeBuddy/refs/heads/main/bin/scopebuddy
sudo chmod +x /usr/local/bin/scopebuddy
scb symlink because we love short commandsNOTE: You only need to do this once
sudo ln -s scopebuddy /usr/local/bin/scb
Home Manager (flake-based), add an input:
inputs.scopebuddy.url = "github:HikariKnight/ScopeBuddy";
Then add the package:
home.packages = [
inputs.scopebuddy.packages.${pkgs.stdenv.hostPlatform.system}.default
];
Install the Terra Repository, then install ScopeBuddy:
dnf install ScopeBuddy
ScopeBuddy is available in the Arch User Repository (AUR) via the scopebuddy-git package. Using an AUR helper such as yay:
yay -S scopebuddy-git
Or, manually:
git clone https://aur.archlinux.org/scopebuddy-git.git
cd scopebuddy-git
makepkg -si
TealMango in the Bazzite community has made a GUI tool to configure scopebuddy. Well worth to check it out here: ScopeBuddy-GUI
344 followers · starred Feb 2026
420 followers · starred Jan 2026
469 followers · starred Mar 2026
238 followers · starred Oct 2026