ProtonShiftLinux game configuration toolkit for Proton, Gamescope & MangoHud
One library for Steam, Heroic, and Lutris. One editor for Gamescope, MangoHud, and ScopeBuddy. No terminal gymnastics. No JSON spelunking.
$ flatpak remote-add --user --if-not-exists i4c https://flatpak.i4c.studio/index.flatpakrepo$ flatpak install i4c io.github.i4ctime.protonshift
Open source, tested for real
Built for the Proton era
Your stack, one UI
Every tool in your gaming stack
ProtonShift doesn't replace the launchers and tools you already use - it gives each one a sensible interface and puts them all in one desktop app.
The config sprawl problem
Why ProtonShift?
Linux gaming finally works. The configuration around it still doesn't. ProtonShift gathers the sprawl into one desktop app - no terminal gymnastics, no JSON spelunking, no winetricks arcana.
| The task | The old way | ProtonShift |
|---|---|---|
Launch optionsThe same game, configured twice | Steam's matchbox dialog + Heroic JSON files | One real editor + presets |
MangoHud overlay | nano ~/.config/MangoHud/MangoHud.conf | Visual editor, 9 presets |
Gamescope flags | Pasted from a Reddit comment | Command builder + live preview |
ScopeBuddyPer-app gamescope overrides | Hand-edit scb.conf and scb.conf.d/ | KV editor + per-app overrides |
System-wide tuning | environment.d/*.conf in a text editor | Presets that explain themselves |
Winetricks verbs | protontricks from a terminal | GUI + one-click quick verbs |
Wine prefixes | A compatdata folder you're afraid to touch | Prefix inspector, one click |
Save files | Manual copies - if you can find them | Auto-detect + ZIP backups |
Known game issues | Hours of forum archaeology | Fixes database, one-click apply |
Reflects ProtonShift v1.3.1. Spotted a config file we missed? Open an issue.
What ships in ProtonShift
The Full Toolkit
From unified library discovery to a live gamepad tester - everything built so you never hand-edit a config file again. Click any feature to see how it works.
Quick Start
Three commands to a running app. No PPA, no clone, no system packages touched.
# Once per machine (user install, no sudo) $ flatpak remote-add --user --if-not-exists i4c https://flatpak.i4c.studio/index.flatpakrepo
No man page required
Gamescope Command Builder
Build a complete Gamescope command with sliders and switches instead of flags pasted from a Reddit comment. Try it - the command below updates live.
# Launch options - one click to add gamescope -W 2560 -H 1440 -w 1920 -h 1080 -r 144 -F fsr --fsr-sharpness 5 -f -- %command%
In the app, one click adds this to the launch options of the game selected in Library, replacing an existing gamescope line instead of nesting it (or copies it to the clipboard). If a ScopeBuddy override exists for the game, the builder picks it up and offers to round-trip your changes back. Gamescope missing? You get install hints for Ubuntu, Fedora, and Arch instead of a stack trace.
Flag reference
What the builder writes for you
17 flags covered by switches, sliders, and quick buttons. Pick a category to browse.
| Flag | What it does |
|---|---|
-W / -H | Output resolution - what your monitor receives (720p–4K quick buttons in the builder) |
-w / -h | Game resolution - what the game renders internally before upscaling |
-f | Start in fullscreen |
-b | Borderless window mode |
--force-grab-cursor | Keep the cursor confined to the game window |
Gamescope, layered per game
ScopeBuddy Integration
ScopeBuddy intercepts gamescope invocations and layers arguments per application. ProtonShift ships a first-class editor for it - global config, per-app overrides, and detection toasts. Flip the switches; the file updates.
Global config · scb.conf
SCB_GAMESCOPE_ARGS"-f --adaptive-sync"SCB_AUTO_RESMatch the display's native resolutionSCB_AUTO_HDREnable HDR when the display supports itSCB_AUTO_VRREnable variable refresh rateSCB_AUTO_FRAME_LIMITCap FPS at the display refresh rateSCB_DEBUGVerbose logging for troubleshooting
# ~/.config/scopebuddy/scb.confSCB_GAMESCOPE_ARGS="-f --adaptive-sync"SCB_AUTO_RES=1SCB_AUTO_HDR=1SCB_AUTO_VRR=1SCB_AUTO_FRAME_LIMIT=0SCB_DEBUG=0
Per-app overrides · scb.conf.d/
1086940.confBaldur's Gate 3-W 3840 -H 2160 --hdr-enabled1245620.confElden Ring-r 60 -F fsr --fsr-sharpness 3553850.confHelldivers 2-w 1920 -h 1080 -r 144
ScopeBuddy detected - overrides apply on next launch.
A real editor for scb.conf. Inspect the global config and its environment side-by-side. Every SCB_ variable - GAMESCOPE_ARGS, AUTO_RES, AUTO_HDR, AUTO_VRR, AUTO_REFRESH, NOSCOPE, NESTEDFIX, APPENDMODE - gets a labelled control instead of a bare KV line.
Per-app overrides, managed. Create, edit, duplicate, and delete override files under scb.conf.d/. Every game's detail page has a ScopeBuddy card that deep-links straight to the right <appid>.conf.
Detection that tells you things. Toasts when ScopeBuddy is installed, missing, or shadowed by an older fork - with install hints for Bazzite/SteamOS, Fedora (Terra), Arch (AUR), NixOS, and a curl fallback.
No more nano ~/.config/MangoHud/MangoHud.conf
MangoHud Visual Editor
Toggle metrics by category, position the overlay on 8 anchor points, set the hotkey - for the global config and per-game wine-<game>.conf overrides. Click any category for the full metric list.
Nine presets to start fast
Pick a preset, get a config
The sensible default: FPS, GPU, CPU, RAM.
# Preset: Standard - applied with one click fps frame_timing gpu_stats gpu_temp cpu_stats cpu_temp ram
Per-game overrides live in wine-<game>.conf files - ProtonShift auto-discovers existing ones, deep-links from each game's detail page, and creates new ones on demand.
Hardware at a glance
System Dashboard
GPU name, driver, VRAM size and temperature, power profiles, and session details - read straight from your system by the app itself when you open the page, with no server in between. Displays, shader caches and controllers have pages of their own.
Every GPU vendor, no control panel
NVIDIA via nvidia-smi (name, driver, VRAM size and temperature), AMD and Intel via DRM sysfs (kernel driver and temperature), plus distro, kernel, CPU, session type, desktop and architecture - read when the page opens or you press Refresh.
Power profiles, one click
Switch between performance, balanced, and battery saver. Supports system76-power on Pop!_OS and powerprofilesctl everywhere else.
Displays and caches, one page over
On their own pages: monitor detection via xrandr, hyprctl, wlr-randr, or kscreen-doctor with per-monitor resolution and refresh rate, and a 15 second keep-or-revert dialog after every change - plus per-game shader cache size with one-click clearing.
# What the System page runs for an NVIDIA card (AMD and Intel are read from sysfs) $ nvidia-smi --query-gpu=name,driver_version,memory.total,temperature.gpu --format=csv,noheader,nounits # Current power profile (system76-power on Pop!_OS); inside the Flatpak both go through flatpak-spawn --host $ powerprofilesctl get
The live gamepad tester, miniaturized.
This is a taste of ProtonShift's controller page. Plug in a controller and press anything - or click the buttons, or use Z X A S and the arrow keys after focusing the pad.
- Every button, every axis, every trigger in real time - buttons light up, axes turn into meters, deadzones are obvious.
- Auto-detection from /proc/bus/input - Xbox, PlayStation, Nintendo, and generic pads, with SDL_GAMECONTROLLERCONFIG mapping strings ready to copy.
- Rumble test - in the app, confirm haptics work before you fire up the game.
No controller detected - connect one and press any button, or just click around.
Under the hood
Architecture
A native Qt Quick (QML) desktop app driven from Python via PySide6 - no Electron, no bundled browser, no HTTP layer. The "API" between Python and QML is a set of QObject controllers exposed as context properties; everything that touches your OS lives in a pure-Python core with no Qt imports. Hover any module to see what it does.
protonshift/
Common questions
Frequently asked
Everything you might want to know before pointing ProtonShift at your library. If something isn't covered here, open an issue on GitHub - we update this list regularly.
Still curious? Open a question and we'll add it.
Free, open, and yours - forever.
ProtonShift is licensed under AGPL-3.0. Use it on your desktop, your handheld, your entire LAN party - no asterisks. The only commitment we ask back: improvements stay open so the next Linux gamer benefits too.
Every feature, every editor, every preset - no paywall, no premium tier, no upsell.
No analytics, no accounts, no server listening anywhere - it is a native desktop app. The only lookups are the ones you can see (ProtonDB ratings, which you can switch off, and GE-Proton releases), and your library stays your business.
AGPL-3.0 - copyleft for the network era. Ship a modified ProtonShift, even as a hosted service, and the source stays open.
Stop fighting configs.
Start playing.
One Flatpak, every distro. No terminal gymnastics, no JSON spelunking, no winetricks arcana - your whole library, properly configured.
v1.3.1 · Flatpak via the signed I4C repo · Free under AGPL-3.0. No accounts. No telemetry.