Skip to content
v0.9.7 · Electron + Python · AGPL-3.0

ProtonShift — The Linux Game Configuration Toolkit

ProtonShift — the Linux game configuration toolkit

One library for Steam, Heroic, and Lutris. One editor for Gamescope, MangoHud, and ScopeBuddy. No terminal gymnastics. No JSON spelunking.

Install
$ chmod +x ProtonShift-*.AppImage && ./ProtonShift-*.AppImage
CI statusLatest releaseTotal downloadsAGPL-3.0 licenseKo-fi
scroll

Open source, tested for real

Built for the Proton era

Launchers Unified
3
Steam · Heroic · Lutris
Backend Tests
96
pytest, run on every release
Distros VM-Tested
6
Ubuntu · Fedora · Debian · CachyOS · openSUSE · Bazzite
Package Formats
4
AppImage · deb · rpm · flatpak

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 taskThe old wayProtonShift
Launch optionsThe same game, configured twice
Steam's matchbox dialog + Heroic JSON filesOne real editor + presets
MangoHud overlay
nano ~/.config/MangoHud/MangoHud.confVisual editor, 9 presets
Gamescope flags
Pasted from a Reddit commentCommand 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 editorPresets that explain themselves
Winetricks verbs
protontricks from a terminalGUI + one-click quick verbs
Wine prefixes
A compatdata folder you're afraid to touchPrefix inspector, one click
Save files
Manual copies — if you can find themAuto-detect + ZIP backups
Known game issues
Hours of forum archaeologyFixes database, one-click apply

Reflects ProtonShift v0.9.7. 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 steps. No package manager, no PPA, no building from source.

~ / terminal
# Download the latest release (AppImage shown)
$ xdg-open https://github.com/I4cTime/protonshift/releases/latest

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.

Output resolution
Game resolution
144
5
~/live-preview
# Launch options — one click to insert
gamescope -W 2560 -H 1440 -w 1920 -h 1080 -r 144 -F fsr --fsr-sharpness 5 -f -- %command%

In the app, one click inserts this straight into the game's launch options (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.

FlagWhat it does
-W / -HOutput resolution — what your monitor receives (720p–4K quick buttons in the builder)
-w / -hGame resolution — what the game renders internally before upscaling
-fStart in fullscreen
-bBorderless window mode
--force-grab-cursorKeep 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 resolution
  • SCB_AUTO_HDREnable HDR when the display supports it
  • SCB_AUTO_VRREnable variable refresh rate
  • SCB_AUTO_FRAME_LIMITCap FPS at the display refresh rate
  • SCB_DEBUGVerbose logging for troubleshooting
~/.config/scopebuddy/scb.conf
# ~/.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-enabled
  • 1245620.confElden Ring-r 60 -F fsr --fsr-sharpness 3
  • 553850.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.

~/.config/MangoHud/MangoHud.conf
# 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 temps and VRAM, power profiles, connected displays, shader cache sizes, and controllers — one page inside the app, fed by the local backend on 127.0.0.1.

ProtonShift · System
GPU · VRAM
9.8of 16 GB
Radeon RX 7800 XT71 °C · 92% loadvia DRM sysfs
Power Profile
performancebalancedbattery
powerprofilesctl · switched 12m ago
GPU temp (session) 74 °C peak
Shader Cache
Cyberpunk 2077
3.2 GB
Baldur's Gate 3
1.8 GB
Elden Ring
0.9 GB
Displays
DP-12560×1440 @ 165 Hz· primaryHDMI-A-11920×1080 @ 60 Hzwlr-randr · Wayland
Controllers
Xbox Wireless Controller· detected via /proc/bus/input · rumble OK · open the live tester below

Every GPU vendor, live

NVIDIA via nvidia-smi, AMD and Intel via DRM sysfs. Live temperatures, utilization, and VRAM usage — no vendor control panel required.

Power profiles, one click

Switch between performance, balanced, and battery saver. Supports system76-power on Pop!_OS and powerprofilesctl everywhere else.

Displays and caches

Monitor detection via xrandr (X11) or wlr-randr (Wayland) with per-monitor resolution and refresh rate — plus per-game shader cache meters with one-click clearing.

~/terminal
# The System page is just the local API — script it if you like
$ protonshift-api --port 8000

# Live OpenAPI explorer for every endpoint
$ xdg-open http://127.0.0.1:8000/docs
Try it in your browser

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.

ProtonShift · Controllers · live tester
LT
0.00
RT
0.00
idle
LX
0.00
LY
0.00
RX
0.00
RY
0.00

Under the hood

Architecture

A real desktop app with a real backend: an Electron shell hosts a Next.js static-export renderer, and everything that touches your OS funnels through a Python FastAPI sidecar on 127.0.0.1, authenticated with a per-launch bearer token. Hover any module to see what it does.

Electron shell
Next.js renderer
FastAPI sidecar
Steam · Heroic · Lutris
Your config files
Per-launch bearer token on 127.0.0.1Path sanitizer at every API boundaryAtomic writes: tempfile + fsync + os.replaceRefuses VDF writes while Steam is running

src/game_setup_hub/

sources
steam.py
heroic.py
lutris.py
configs
gamescope.py
scopebuddy.py
mangohud.py
env_vars.py
runtime
gpu.py
display.py
controllers.py
prefix.py
data
profiles_storage.py
saves.py
shader_cache.py
fixes.py
tooling
protontricks.py
tool_check.py

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.

AGPL-3.0 · Free forever

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.

Free forever

Every feature, every editor, every preset — no paywall, no premium tier, no upsell.

No telemetry

ProtonShift never phones home. The backend listens on 127.0.0.1 and nowhere else — your library stays your business.

Copyleft, on purpose

AGPL-3.0 — copyleft for the network era. Ship a modified ProtonShift, even as a hosted service, and the source stays open.

Ready when you are

Stop fighting configs.
Start playing.

One download, every distro. No terminal gymnastics, no JSON spelunking, no winetricks arcana — your whole library, properly configured.

v0.9.7 · AppImage, .deb, .rpm, and .flatpak · Free under AGPL-3.0. No accounts. No telemetry.