Bulk manage launch options for all your Steam games from the command line.
No more clicking through each game's properties — set gamemoderun %command%, mangohud %command%, or any wrapper for your entire library in one command.
Steam doesn't have a "global launch options" setting. If you want GameMode, MangoHud, or any other wrapper applied to all games, you have to set it per-game through the GUI. This tool edits Steam's localconfig.vdf directly to apply options in bulk.
A common workaround is adding LD_PRELOAD=libgamemodeauto.so.0 to Steam's .desktop file. Don't do this. It preloads the library into Steam itself and all its ~12 child processes (steamwebhelper, crashpad, zygotes, etc.), causing D-Bus assertion failures that can prevent Steam from launching entirely:
dbus[762495]: arguments to dbus_pending_call_block() were incorrect,
assertion "pending != NULL" failed in file dbus-pending-call.c line 768.
This is normally a bug in some application using the D-Bus library.
The correct approach is gamemoderun %command% in per-game launch options — which activates GameMode only for the actual game process. This tool makes that trivial to apply globally.
# Clone
git clone https://github.com/Zendorea/steam-launch-options.git
cd steam-launch-options
# Install (symlink to PATH)
chmod +x steam_launch_options.py
sudo ln -sf "$(pwd)/steam_launch_options.py" /usr/local/bin/steam-launch-options
# Or just run directly
./steam_launch_options.py --help- Python 3.8+
- No external dependencies (stdlib only)
⚠️ Close Steam before runningaddorremovecommands. Steam overwriteslocalconfig.vdfon exit, so changes made while it's running will be lost.
# GameMode (recommended for all games on Linux)
steam-launch-options add "gamemoderun %command%"
# MangoHud + GameMode
steam-launch-options add "mangohud gamemoderun %command%"This is idempotent — games that already have the wrapper are skipped.
steam-launch-options remove "gamemoderun %command%"# Summary
steam-launch-options list
# Show games that have custom launch options
steam-launch-options list --with-optionsEvery modification creates a timestamped backup automatically. To undo:
steam-launch-options restoreSteam stores per-game settings in:
~/.local/share/Steam/userdata/<STEAMID>/config/localconfig.vdf
This is a Valve KeyValues (VDF) file. The tool:
- Parses the VDF tree
- Navigates to
UserLocalConfigStore.Software.Valve.Steam.apps - For each app ID, reads/modifies the
LaunchOptionsfield - Serializes back to VDF format
The VDF parser handles the full format spec (nested sections, quoted strings, escape sequences, comments).
- Preserves existing options: If a game already has custom launch options (e.g.,
-vulkan), the wrapper is prepended, not clobbered - Smart detection: Won't double-add a wrapper that's already present
- Backup rotation: Keeps the last 10 backups, auto-cleans older ones
- Multi-user support: Auto-detects user ID, or specify with
--user - App name resolution: Reads
appmanifest_*.acffiles for human-readable game names in list output
If you have multiple Steam accounts:
steam-launch-options --user 61648312 add "gamemoderun %command%"- A backup is always created before any modification
- The tool refuses to run if Steam is detected as running (override with
--force) - Use
steam-launch-options restoreto instantly undo
- Fincer/steam-launchoptions — Original 2018 bash script (blind sed replacement, no preservation of existing options)
- FeralInteractive/gamemode#177 — Community discussion on the need for global application
GPL-3.0 — see LICENSE.