Linux game configuration toolkit. Everything you need, in one place.
No terminal gymnastics required.
Features · Installation · Architecture · Python API · License
ProtonShift pulls games from Steam, Heroic (Epic + GOG), and Lutris into a single searchable list. Source badges tell you where each game lives, and per-source counts keep things at a glance.
- Steam library discovery via
libraryfolders.vdf+ appmanifest files (native & Flatpak) - Heroic discovery via Legendary JSON + GOG install info (native & Flatpak)
- Lutris discovery via
pga.db+ YAML prefix detection (native & Flatpak) - Search across all sources at once
- Launch games directly:
steam://rungameid/orheroic://launch/ - Copy App ID to clipboard in one click
- Open install folder or Wine prefix in your file manager
Edit per-game launch options with a proper text editor, not a tiny Steam dialog box.
Quick presets let you toggle common snippets without memorizing them:
| Preset | What it does |
|---|---|
| GameMode | Prepend gamemoderun for Feral GameMode |
| NVIDIA dGPU | Add offload env vars for hybrid GPU laptops |
| MangoHud | Enable the MangoHud overlay |
| Proton Log | Turn on PROTON_LOG=1 for debugging |
Presets detect whether their tool is installed and grey out with a hint if it's missing. Works for both Steam and Heroic games.
Pick your compatibility layer from a dropdown instead of hunting through config files.
- Steam: Lists all installed Proton versions from
compatibilitytools.dand built-in tools - Heroic: Scans
tools/wineandtools/protondirectories, shows current selection
For Heroic games, flip switches for the settings that usually mean editing JSON by hand:
- Esync / Fsync
- DXVK / VKD3D auto-install
- MangoHud overlay
- Feral GameMode
- NVIDIA Prime render offload
Changes persist immediately to Heroic's per-game config.
Build a complete Gamescope command visually. No man page required.
- Output and game resolution pickers with quick buttons (720p, 1080p, 1440p, 4K)
- FPS limiter
- FSR upscaling toggle with sharpness slider
- Integer scaling, HDR, fullscreen, borderless toggles
- Live preview of the generated command
- One click to insert it into your launch options or copy to clipboard
- Install hints for Ubuntu, Fedora, Arch if Gamescope isn't found
Available for Steam and Heroic games.
A full visual editor for MangoHud — no more hand-editing .conf files.
Global config (~/.config/MangoHud/MangoHud.conf):
- Toggle individual metrics on/off grouped by category: Performance, CPU, GPU, Memory, I/O, System, Behavior
- Set values: FPS limit, overlay position (8 anchor points), font size, background alpha
- Configure toggle hotkey with quick presets
- Set log folder with path presets and folder opener
Per-game configs (wine-{game}.conf):
- Auto-discovers existing per-game configs
- Deep-link from any game's detail page to its MangoHud config
- Create new per-game overrides
Presets to get started fast: Minimal, FPS Only, Standard, CPU+GPU, Benchmark, Battery Saver, Streaming, Full, Debug
Manage global gaming environment variables that persist across reboots via ~/.config/environment.d/.
Built-in presets:
- Proton NVIDIA / AMD optimizations
- DXVK / VKD3D tuning
- Shader cache settings
- Wayland compatibility
- GameMode integration
- Proton debug flags
Each preset shows exactly which variables it sets with descriptions, so you know what you're enabling.
Save a complete game setup as a named profile and restore it later — or apply it to a different game.
A profile captures:
- Launch options
- Compatibility tool / Wine version
- Current environment variables
- Active power profile
Profiles auto-highlight when they match the current game name or App ID. Loading a profile can optionally restore environment variables and power profile system-wide.
See what's inside your Wine prefixes without digging through directories:
- Prefix size and creation date
- Detected DXVK version (from
d3d11.dll) - Detected VKD3D-Proton version (from
d3d12.dll) - Delete prefix with confirmation dialog
- Open prefix folder in file manager
Works for Steam, Heroic, and Lutris games (anywhere a prefix path is known).
Keep tabs on Steam's shader cache:
- Per-game cache size with a visual meter (scaled against 5 GB)
- Clear a single game's cache with confirmation
- Total shader cache size on the System page
Never lose a save file again.
- Auto-detects save locations in Proton prefixes and Steam
userdata - Shows per-directory save sizes
- Backup All creates a timestamped ZIP archive under
~/.config/protonshift/backups/ - Browse previous backups and restore with one click
- Works for Steam, Heroic, and Lutris games with known prefix paths
A built-in database of known fixes for common game issues.
- Fixes matched per App ID plus universal fixes that apply to all games
- Each fix can add environment variables, launch arguments, or both
- One-click apply merges the fix into your launch options
- User-contributed fixes can be added under
~/.config/protonshift/fixes/
Run Protontricks without leaving the app:
- Open the Protontricks GUI for any Steam game
- Quick-run common verbs: vcrun2022, dotnet48, d3dx9, corefonts, and more
- Supports both native and Flatpak installations of Protontricks
The System page gives you a dashboard for your hardware:
GPU:
- Detection for NVIDIA (via
nvidia-smi) and AMD/Intel (via DRM sysfs) - Live temperature reading
- VRAM usage (NVIDIA)
Power Profiles:
- Switch between performance / balanced / battery saver
- Supports
system76-power(Pop!_OS) andpowerprofilesctl(generic)
Displays:
- Monitor detection via
xrandr(X11) orwlr-randr(Wayland) - Resolution and refresh rate per monitor
Quick Actions:
- Open MangoHud config folder
- Open ProtonShift config directory
- View total shader cache size
Detect connected game controllers and get the info you need:
- Auto-detect Xbox, PlayStation, Nintendo, and generic controllers from
/proc/bus/input - Show controller name and type with vendor identification
- Generate
SDL_GAMECONTROLLERCONFIGmapping strings - Copy mappings for use in Steam Input or as environment variables
Multiple visual themes with light and dark variants, switchable from the nav bar. The theme persists across sessions.
Grab the latest package for your distro from the Releases page.
chmod +x ProtonShift-*.AppImage
./ProtonShift-*.AppImagesudo dpkg -i ProtonShift-*.debsudo dnf install ProtonShift-*.rpm
# or on openSUSE:
sudo zypper install ProtonShift-*.rpmflatpak install ProtonShift-*.flatpak
flatpak run io.github.protonshiftOfficial builds bundle the Python API stack (FastAPI, Uvicorn, VDF, etc.) beside the app. You only need Python 3.12+ available as python3 (the .deb already depends on it).
┌─────────────────────────────────────┐
│ Electron / Next.js UI │
│ (React 19 + Tailwind + HeroUI v3) │
└──────────┬──────────────────────────┘
│ IPC (preload bridge)
┌──────────▼──────────────────────────┐
│ Electron Main Process │
│ (spawns Python, proxies requests) │
└──────────┬──────────────────────────┘
│ HTTP localhost
┌──────────▼──────────────────────────┐
│ Python FastAPI Backend │
│ steam.py │ gpu.py │ vdf_config.py │
│ heroic.py│lutris.py│profiles.py │
└─────────────────────────────────────┘
Both the UI and the backend share the same Python FastAPI server. The Electron app spawns it automatically, but you can also run it standalone:
pip install -e .
protonshift-api --port 8000Endpoints: /games, /env-vars, /system, /profiles, /presets, and more.
A few things that are wired up on the backend but not yet exposed in the UI:
- Shader env var toggles (RADV_PERFTEST, MESA_SHADER_CACHE_DISABLE)
- Auto-backup saves before prefix deletion
- Per-game display/monitor targeting
- Per-game controller overrides
- User-defined fix creation screen
- Resolution switching from the System page
