Skip to content
v1.3.1 · Qt Quick + PySide6 · AGPL-3.0

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.

Install
$ flatpak remote-add --user --if-not-exists i4c https://flatpak.i4c.studio/index.flatpakrepo$ flatpak install i4c io.github.i4ctime.protonshift
scroll

Open source, tested for real

Built for the Proton era

Launchers Unified
3
Steam · Heroic · Lutris
Tests, All Qt-Free
42
pytest + ruff + qmllint, on every push
Visual Styles
4
dark, light or system · accent override
Package Format
1
Flatpak · signed I4C repo

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 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.

~ / terminal
# 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.

Output resolution
Game resolution
144
5
~/live-preview
# 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.

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 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.

~/terminal
# 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
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.

No buttons pressed
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 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.

Qt Quick (QML) UI
Theme.qml + Ps* components
QObject controllers
Steam · Heroic · Lutris
Your config files
No HTTP server, no tokens - in-process Qt signalsPath containment + sanitization in paths.pyAtomic writes: tempfile + fsync + os.replaceBlocking I/O on worker threads - queued signals back

protonshift/

core
steam.py
heroic.py
lutris.py
gamescope.py
scopebuddy.py
mangohud.py
input_devices.py
host.py
controllers
games_controller.py
theme_controller.py
gamepad_controller.py
_worker.py
qml
main.qml
GamesPage.qml
ControllersPage.qml
qml/App
Theme.qml
PsButton.qml
PsCard.qml

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

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.

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 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.