Steam launch settings, kept in one place

Tune each game.
Keep one launch command.

LaunchLayer reads plain settings files, checks your Linux system, and assembles GameMode, Gamescope, MangoHUD, CPU affinity, and other tools before the game starts.

Checking the current release… Release notes Current build status
Launch tracelocal machine
  1. Steampasses %command%
  2. Settingsprofiles + game file
  3. Checkssystem + optional tools
  4. Wrappersordered, without duplicates
  5. Gamenative or Proton

Nothing is uploaded during a normal launch.

Plain filesReview every setting

Dry-run firstPreview without launching

Hub optionalLocal use needs no account

Bash 4.3+No resident service

First launch

Set it up in three steps

Keep the repository in a stable location. Steam stores its path in each game's Launch Options.

  1. Download

    Clone the repository into your home directory.

    git clone https://github.com/bolens/launch-layer.git ~/launchlayer
    cd ~/launchlayer
  2. Run setup

    Install completions, create the command link, and detect this machine.

    ./launchlayer --setup --completions --symlink \
      --print-launch-option --write-local-config
  3. Connect Steam

    Paste the printed command into a game's Properties → General → Launch Options.

    "$HOME/launchlayer/launchlayer" %command%

    Keep %command%. Steam replaces it with the actual game command.

Check before playing

Doctor reports missing tools, invalid settings, and system changes that may help Proton.

./launchlayer --doctor

Steam Deck: use the same command under Library → gear icon → Properties → General → Launch Options.

Flatpak Steam: installations under your home directory usually work without another permission. For an installation elsewhere, grant Steam access with flatpak override --user com.valvesoftware.Steam --filesystem=/path/to/launchlayer.

Per-game control

Change settings without rebuilding the Steam command

LaunchLayer combines machine profiles, shared defaults, a preset, and the selected game's file. Later values override earlier ones.

Machineprofiles/*.envDetected platform and GPU
Shareddefault.envDefaults for every game
Locallocal.envThis computer only
Presetcompetitive.envA reusable play style
Game2357570.envHighest priority

Visual

Use the TUI

Browse installed games, see the resolved settings, and change common options without editing a file.

./launchlayer --tui
TUI guide

Terminal

Create a game file

Start from a preset, then change only the values this game needs.

./launchlayer --init-appid 2357570 competitive
./launchlayer --edit-appid 2357570
CLI reference

Read-only

Preview the result

See the loaded files, final values, and wrapper order without starting the game.

./launchlayer --show-config 2357570
Configuration details

Before enabling a tool

Each switch expects its own program

LaunchLayer coordinates optional tools; it does not bundle them. Doctor identifies missing programs and prints installation hints for your distribution.

SettingWhat it controlsProgram needed
GAMEMODE=1CPU and system performance profileGameMode
GAMESCOPE=1Resolution, scaling, HDR, and frame limitsGamescope
MANGOHUD=1Performance overlay and loggingMangoHud
VKBASALT=1Vulkan post-processingvkBasalt
DLSS_SWAPPER=1DLSS libraries and presetsdlss-swapper

Your files and data

Keep changes reviewable and recoverable

Normal launches stay on your machine. The Community Hub is optional, and restore commands preview their work before replacing files.

Backup

Save your settings

Export profiles, game files, and selected preferences into a timestamped archive.

./launchlayer --backup-config
./launchlayer --restore-backup --list

Community

Choose whether to connect

Hub commands share or retrieve game settings. LaunchLayer rejects remote command hooks and other settings that could modify the host.

./launchlayer --hub-prefs show
./launchlayer --hub-recommend APPID

Inspection

Use read-only access

The optional MCP server exposes diagnostics and resolved settings, but it cannot launch games or change configuration. Redacted mode removes exact paths and hardware identifiers.

./launchlayer --mcp --privacy redacted

Troubleshooting

Start with the symptom

Open a row for the first checks and the command that confirms the result.

The game does not start

Confirm that Launch Options contains an absolute, quoted path followed by %command%. Remove old gamemoderun, mangohud, or Gamescope prefixes.

./launchlayer --doctor
./launchlayer --show-config APPID
Steam cannot find LaunchLayer

Steam often has a smaller PATH than your terminal. Use the full path printed by setup. Flatpak Steam also needs permission to read installations outside your home directory.

./launchlayer --setup --print-launch-option
./launchlayer --detect-environment
The game is wrapped twice

Keep wrappers in LaunchLayer config, not in both places. Replace gamemoderun %command% with the single LaunchLayer command and set GAMEMODE=1.

A Proton game reports map or memory errors

Check vm.max_map_count. The install action requires root and writes the supplied sysctl configuration.

./launchlayer --sysctl status
./launchlayer --sysctl install
I need to undo a config change

Use the backup and restore commands or the TUI's Backup & restore menu. Import and restore preview their changes until you pass --yes.

./launchlayer --restore-backup --list
./launchlayer --restore-backup --dry-run

Explore the system

Follow a launch from Steam to the game process

The interactive diagram separates local settings and runtime state from the optional Community Hub trust boundary.

Open the architecture diagram

Technical reference

Detailed docs stay with the code

The repository documents every command, key, module boundary, third-party condition, and release step at the revision where it applies.