# Steam Launch Options — Full Reference Compiled reference for every tool this project assembles into Steam launch commands: gamescope, Proton (GE/CachyOS), MangoHud, obs-gamecapture, GameMode, and Mesa Vulkan layers. Sources: ValveSoftware/gamescope (README + `main.cpp` usage), flightlessmango/MangoHud (`data/MangoHud.conf`), nowrep/obs-vkcapture, FeralInteractive/gamemode, Mesa docs, and the project's own `launch_args_env_vars.md` / `steam-tinker-launcher.md`. ## The reference config this file started from ``` LD_PRELOAD="" PROTON_USE_NTSYNC=1 PROTON_ENABLE_WAYLAND=1 ENABLE_LAYER_MESA_ANTI_LAG=1 MANGOHUD=1 gamemoderun obs-gamecapture gamescope --fullscreen -w 1920 -W 1920 -h 1080 -H 1080 -r 165 --immediate-flips --nested-unfocused-refresh 30 --sharpness 20 --force-grab-cursor --backend wayland -- env LD_PRELOAD="$LD_PRELOAD" %command% ``` Annotated: envs → `gamemoderun` (outermost) → `obs-gamecapture` → `gamescope` (inner wrapper, its own `--` separator) → `env LD_PRELOAD=... %command%`. Everything before the first `--` applies to gamescope itself; `%command%` is the game. --- ## 1. gamescope Usage: `gamescope [options...] -- [command...]`. Options before `--` configure the compositor; everything after runs inside it. ### General | Option | Meaning | | ------------------------------------------- | -------------------------------------------------------------------------------------------------------- | | `-W, --output-width`, `-H, --output-height` | Resolution gamescope outputs at (default 1280×720). Ignored in embedded mode. | | `-w, --nested-width`, `-h, --nested-height` | Resolution the game renders at (defaults to `-W`/`-H`). | | `-r, --nested-refresh` | Frame-rate limit for the game (e.g. `-r 165`). | | `-m, --max-scale` | Maximum scale factor. | | `-S, --scaler` | Upscaler type: `auto`, `integer`, `fit`, `fill`, `stretch`. | | `-F, --filter` | Upscale filter: `linear`, `nearest`, `fsr` (FSR 1.0), `nis` (NIS 1.0.3), `pixel`. | | `--sharpness, --fsr-sharpness` | Upscaler sharpness **0 (max) to 20 (min)**. Affects FSR/NIS. | | `--expose-wayland` | Accept Wayland clients (xdg-shell). | | `-s, --mouse-sensitivity` | Multiply mouse movement by a decimal (e.g. `-s 1.0`). | | `--backend` | Rendering backend: `auto` (default), `drm` (standalone session), `sdl`, `openvr`, `headless`, `wayland`. | | `--mangoapp` | Launch the MangoHud `mangoapp` overlay inside gamescope (prefer over mangohud on the game). | | `--adaptive-sync` | Enable adaptive sync / VRR if available. | ### Nested mode | Option | Meaning | | -------------------------------- | ------------------------------------------------------------------------------------------------------- | | `-o, --nested-unfocused-refresh` | Game refresh rate when the window is unfocused (e.g. `30`). Note: does not work on the Wayland backend. | | `-b, --borderless` | Borderless window. | | `-f, --fullscreen` | Fullscreen window. | | `-g, --grab` | Grab the keyboard. | | `--force-grab-cursor` | Always use relative mouse mode regardless of cursor visibility. | | `--display-index` | Force a specific display in nested mode. | ### Embedded mode | Option | Meaning | | ---------------------- | ------------------------------------------------------------------------ | | `-O, --prefer-output` | Connectors in preference order (e.g. `DP-1,DP-2,HDMI-A-1`). | | `--default-touch-mode` | Touch mode: `0` hover, `1` left, `2` right, `3` middle, `4` passthrough. | | `--generate-drm-mode` | DRM mode generation algorithm: `cvt`, `fixed`. | | `--immediate-flips` | Immediate flips (may tear). | | `--framerate-limit` | Hard FPS limit for the embedded session (steamcompmgr-style). | ### HDR | Option | Meaning | | --------------------------------------------- | -------------------------------------------------- | | `--hdr-enabled` | Enable HDR output. | | `--hdr-wide-gammut-for-sdr` | Wide gamut for SDR content. | | `--hdr-sdr-content-nits` | Assumed SDR content brightness (e.g. `400`). | | `--hdr-itm-enable` | Inverse tone mapping for SDR content. | | `--hdr-itm-sdr-nits`, `--hdr-itm-target-nits` | ITM input/output brightness (e.g. `100` / `1000`). | ### VR (OpenVR backend) | Option | Meaning | | ---------------------------------------------------------- | --------------------------------------- | | `--openvr` | Run as an OpenVR session. | | `--vr-overlay-show-immediately` | Show overlay immediately. | | `--vr-overlay-enable-control-bar` / `-keyboard` / `-close` | Control bar + keyboard/close shortcuts. | | `--vr-overlay-modal` | Modal overlay. | | `--vr-scrolls-speed` | Scroll speed (e.g. `8.0`). | | `--vr-overlay-key`, `--vr-app-overlay-key` | Overlay key / per-app key. | | `--vr-overlay-explicit-name`, `--vr-overlay-default-name` | Overlay names. | | `--vr-overlay-icon` | Overlay icon path. | ### Debug / misc | Option | Meaning | | ------------------------------------ | ------------------------------------------------------- | | `--debug-hud` | Show gamescope's internal debug HUD. | | `--force-composition` | Always composite (disable direct flips). | | `--rt` | Realtime scheduling. | | `--headless` | Headless backend. | | `--prefer-vk-device` | Prefer a specific Vulkan device (e.g. `%{VK_DEVICE}%`). | | `--disable-layers`, `--debug-layers` | Disable / debug Vulkan layers. | | `--allow-deferred-backend` | Allow the backend to start deferred. | | `--keep-alive` | Keep the session alive after the app exits. | | `--expose-wayland` | (see General) | Also: `GAMESCOPE_*` env vars exist for embedded-session behavior; the STL doc `steam-tinker-launcher.md` §3.1–3.6 has the full catalog incl. legacy flags (`-i`, `-n`, `-U`, `-Y` = older GameScope filter flags, deprecated). --- ## 2. Proton (GE / CachyOS) Run with `binary=proton suffix=waitforexecandrun` — all toggles are env vars. Full per-variant tables in `launch_args_env_vars.md`; highlights: | Env var | Meaning | | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | `PROTON_LOG=1` | Write a debug log to `steam-.log`. | | `PROTON_USE_NTSYNC=1` / `PROTON_NO_NTSYNC=1` | Force / disable ntsync. | | `PROTON_USE_WINED3D=1` | OpenGL backend instead of DXVK. | | `PROTON_NO_D3D12/11/10/9=1` | Disable a D3D version. | | `PROTON_NO_ESYNC=1`, `PROTON_NO_FSYNC=1` | Disable esync / fsync. | | `PROTON_ENABLE_WAYLAND=1` | Use the Wayland driver (no XWayland). | | `PROTON_ENABLE_NVAPI=1` / `PROTON_DISABLE_NVAPI=1` | NVIDIA API support (GE / CachyOS). | | `PROTON_FSR4_UPGRADE=1`, `PROTON_DLSS_UPGRADE=1`, `PROTON_XESS_UPGRADE=1` | FSR4 / DLSS / XESS frame-gen upgrades (FSR4 = AMD 7xxx+). | | `PROTON_FSR3_UPGRADE=1`, `PROTON_MLFG_UPGRADE=1`, `PROTON_FFX3_UPGRADE=1`, `PROTON_FFX4_UPGRADE=1` | Other upscale upgrades (CachyOS). | | `WINE_FULLSCREEN_FSR=1` (+ `WINE_FULLSCREEN_FSR_STRENGTH=2`) | Wine fullscreen FSR. | | `WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER=1` | Fix miscolored video. | | `PROTON_USE_SECCOMP=1`, `PROTON_NO_WRITE_WATCH=1`, `PROTON_HEAP_DELAY_FREE=1` | Compatibility shims. | | `PROTON_USE_WOW64=1` | New WoW64 prefix mode. | | `PROTON_ENABLE_MEDIACONV=1`, `PROTON_MEDIA_FORCE_GST=1` | Media Foundation via GStreamer. | | `PROTON_USE_XALIA=1/0` | Enable/disable the Xalia gamepad→keyboard bridge. | | `PROTON_USE_SDL=1` / `PROTON_PREFER_SDL=1` | SDL input path. | | `DXVK_HDR=1` / `DXVK_NO_HDR=1` | HDR on/off (CachyOS). | | `DXVK_NVAPI_VKREFLEX=1`, `LOW_LATENCY_LAYER=1` | NVIDIA Reflex / low-latency layer (CachyOS). | | `PROTON_NVIDIA_LIBS=1` (+ `_NO_32BIT`, `NVCUDA`, `NVENC`, `NVML`, `NVOPTIX`) | NVIDIA library set (CachyOS). | | `PROTON_USE_D9VK=1`, `PROTON_DXVK_SAREK=1`, `PROTON_DXVK_LOWLATENCY=1`, `PROTON_D7VK_DDRAW=1` | Alternative D3D translation (CachyOS). | | `PROTON_DISCORD_BRIDGE=1` | Discord Rich Presence bridge (CachyOS). | The app exposes these as checkbox toggles under the Proton tabs (categories: Debug / Performance / Graphics / Compatibility / NVIDIA / Upscaling / Input / Display / Audio / HDR / Media / Integration). --- ## 3. MangoHud Enable with `MANGOHUD=1` (Vulkan/OpenGL) or by wrapping the command with `mangohud ` (GL). Config lives in `~/.config/MangoHud/MangoHud.conf`; everything below is also settable via `MANGOHUD_CONFIG` (comma-separated, e.g. `MANGOHUD_CONFIG=fps_limit=60,fps,gpu_stats`). | Config param | Meaning | | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `fps_limit=N` | Limit FPS (comma list e.g. `0,30,60`; `0` = unlimited). | | `fps_limit_method=` | `early` (wait before present) / `late` (wait after). | | `vulkan_present_mode=` | Override present mode: `immediate`, `mailbox`, `fifo`, `fifo_relaxed`, `shared_demand_refresh`, `shared_continuous_refresh`, `fifo_latest_ready`. | | `vsync=N` | Force vsync on/off. | | `fps`, `gpu_stats`, `gpu_temp`, `gpu_core_clock`, `gpu_mem_clock`, `gpu_mem_temp`, `gpu_power`, `gpu_load_change`, `gpu_fan`, `gpu_voltage` | GPU readouts (misc info). | | `cpu_stats`, `cpu_temp`, `cpu_power`, `ram`, `vram`, `io_stats`, `frametime` | CPU/memory/IO stats. | | `frame_timing`, `frame_timing_detailed`, `dynamic_frame_timing`, `histogram` | Frametime graphs. | | `gamemode` | Show GameMode active status. | | `fsr` / `hide_fsr_sharpness` | Show FSR status (gamescope only). | | `debug` | Gamescope app frametime/latency graph. | | `show_fps_limit`, `resolution`, `display_server`, `engine_version`, `wine`, `winesync`, `arch` | Misc display toggles. | | `custom_text=`, `exec=` | Custom text / shell-command output column. | | `media_player` | Spotify/media metadata. | | `toggle_hud=`, `toggle_hud_position=`, `toggle_preset=`, `toggle_fps_limit=`, `toggle_logging=`, `reload_cfg=`, `upload_log=` | Keybinds (e.g. `Shift_R+F12`). | | `autostart_log=`, `log_duration=`, `log_interval=`, `log_upload=`, `log_sync=` | Benchmark logging. | | `graphs=` | Which graphs to show (`gpu_load,cpu_load,gpu_core_clock,gpu_mem_clock,vram,ram,cpu_temp,gpu_temp`). | Env vars: `MANGOHUD_CONFIG`, `MANGOHUD_CONFIGFILE`, `MANGOHUD_PRESETSFILE`. `mangoapp` = standalone overlay for Steam/gamescope sessions. The app exposes: `MANGOHUD=1` (Enable overlay), `fps_limit=60`, `fps`. --- ## 4. obs-gamecapture Binary wrapper from obs-vkcapture. Enables OBS "Game Capture" sources to see the game. | Option / env | Meaning | | ------------------------------------------------------ | ---------------------------------------------------------- | | `--width W`, `--height H` | Capture resolution. | | `--rate N` | Capture frame rate. | | `--no-sound` | Disable audio capture. | | `OBS_FORCE_GAMECAPTURE=1` | Force game-capture path. | | `OBS_NO_GAMECAPTURE=1` | Disable game-capture detection. | | `OBS_NO_XLIB=1`, `OBS_NO_XSHM=1`, `OBS_NO_VKCAPTURE=1` | Disable specific capture paths. | | `OBS_VKCAPTURE=1` | Enable the Vulkan capture layer (native games). | | `OBS_VKCAPTURE_NAME=` | Override the app name reported to OBS for window matching. | OBS-side (Game Capture source): window matching (any / specific app / any except), cursor capture (X11 + Wayland), transparency. --- ## 5. GameMode `gamemoderun %command%` (or `gamemoderun ./game`) requests the gamemoded daemon switch to the performance profile for the process tree. Legacy pre-1.3 form: `LD_PRELOAD="$LD_PRELOAD:/usr/$LIB/libgamemodeauto.so.0" %command%`. | Env / config | Meaning | | ------------------------------------ | ---------------------------------------------------------------------------------------------- | | `GAMEMODERUNEXEC="cmd"` | Extra command gamemoderun executes. | | `~/.config/gamemode.ini` `[general]` | `desired_gov` (governor override), `reaper_freq`, `defaultgov`. | | `[gpu]` | `apply_gpu_optimisations`, `gpu_device`, `amd_performance_level=high`, `nv_powermizer_mode=1`. | | `[cpufreq]` | `min_freq`, `max_freq`, `governor=performance`. | | `[core]` | `park_cores=no`. | | `[custom]` | `start=`, `end=` commands run on mode start/stop. | --- ## 6. Mesa Vulkan layers (AMD) Layers shipped with Mesa (`-D vulkan-layers=...` build option); enable with env vars. Some distros (e.g. CachyOS, mesa-git) ship extra ones as `mesa-vulkan-layers`. | Env var | Layer | Meaning | | ----------------------------------------------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `ENABLE_LAYER_MESA_ANTI_LAG=1` | anti-lag (`VK_AMD_anti_lag`, Mesa 25.3+) | AMD CPU-side latency pacing (Anti-Lag-style). Vulkan 1.3.281+. AMD GPUs only. | | `VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_overlay` (or `VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay`) | overlay | Built-in Vulkan HUD: fps, frametimes, GPU/CPU stats. | | `VK_LAYER_MESA_OVERLAY_CONFIG=position=top-left,submit,draw,...` | overlay | Overlay content config: `fps`, `frametime`, `submit`, `draw`, `pipeline_graphics`, `pipeline_compute`, `queue_ops`, `position=...` (run with `help` for the list). | | `MESA_VK_DEVICE_SELECT=list` / `vid:did` | device-select | Pick the Vulkan device (e.g. `MESA_VK_DEVICE_SELECT=1002:747e`); append `!` to force. | | `ENABLE_LAYER_MESA_FPS_MONITOR=1` | fps-monitor | Vsync/FPS rate limiting layer (CachyOS mesa-git). | Notes: anti-lag needs the layer present in the runtime (Flatpak Mesa misses it); it only applies to AMD RADV and requires `VK_AMD_anti_lag` support in the game or translation layer. `MESA_VK_DEVICE_SELECT` is the stable way to pin a GPU for multi-GPU setups. --- ## 7. DXVK (D3D9/10/11 → Vulkan) Translation layer inside Proton. Env vars set per-launch; the config-file options (`dxvk.conf` / `DXVK_CONFIG=...`) are its “args”. `dxvk.conf` is read from the game's working directory; `DXVK_CONFIG_FILE` overrides the path. ### Env vars | Env var | Meaning | | ------------------------------------------------ | ----------------------------------------------------------------------------- | | `DXVK_HUD=...` | HUD elements, comma-separated (see below). `1` = `devinfo,fps`; `full` = all. | | `DXVK_LOG_LEVEL=none\|error\|warn\|info\|debug` | Log verbosity (stderr). | | `DXVK_LOG_PATH=dir` | Write `app_d3d11.log` etc. to a directory; `none` disables files. | | `DXVK_SHADER_CACHE=0` | Disable the internal shader cache. | | `DXVK_SHADER_CACHE_PATH=dir` | Shader cache location (default `%LOCALAPPDATA%/dxvk` / `$XDG_CACHE_HOME`). | | `DXVK_FILTER_DEVICE_NAME="Name"` | Pick GPU by Vulkan device name substring (e.g. `VEGA`). | | `DXVK_FILTER_DEVICE_UUID=32-hex` | Pick GPU by device UUID (vulkaninfo). | | `DXVK_CONFIG_FILE=path` | Point at an explicit `dxvk.conf`. | | `DXVK_CONFIG="opt = val; opt2 = val"` | Set config options inline (`;` separates). | | `DXVK_DEBUG=capture\|hang\|markers\|validation` | Debug modes (hang = GPU-hang detection, markers = debug utils, …). | | `DXVK_WSI_DRIVER=SDL3\|SDL2\|GLFW` | Backend selector for DXVK Native builds. | | `VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation` | Vulkan validation layers (debugging). | `DXVK_HUD` elements: `devinfo`, `fps`, `frametimes`, `submissions`, `drawcalls`, `pipelines`, `compiler`, `samplers` (D3D9), `swvp` (D3D9), `scale=x` (e.g. `1.5`), `opacity=y` (e.g. `0.5`). ### Config options (the “args”) | Option | Meaning | | ------------------------------------------- | ----------------------------------------------------------------------------- | | `dxvk.hud = ...` | Same as `DXVK_HUD` (ignored when the env var is set). | | `dxvk.numCompilerThreads = N` | Pipeline-compiler threads; `0` = use all CPU cores. | | `dxvk.enableAsync = True` | Asynchronous pipeline compilation (reduces stutter in shader-heavy games). | | `dxvk.useRawSsbo = True` | Raw SSBOs for buffer views (default on supported hardware). | | `dxvk.enableGraphicsPipelineLibrary = True` | GPL shader pre-compilation (drivers with `VK_EXT_graphics_pipeline_library`). | | `dxvk.enableMemoryDefrag = True` | Defragment VRAM. | | `dxvk.enableDescriptorHeap = True` | Split descriptor heaps (newer path). | | `dxvk.enableDebugUtils = True` | Debug-utils integration. | | `dxgi.syncInterval = 0` | Disable vsync (D3D11 present). | | `dxgi.hideAmdGpu = True` | Hide the AMD GPU from the app (multi-GPU). | Full option list: --- ## 8. vkd3d-proton (D3D12 → Vulkan) Env vars only (no CLI); debug-oriented, may change between versions. | Env var | Meaning | | ------------------------------------------------ | ---------------------------------------------------------------------------------------- | | `VKD3D_CONFIG=...` | Comma/semicolon-separated behavior flags (see below). | | `VKD3D_LOG_LEVEL=none\|error\|warn\|info\|trace` | Log verbosity. | | `VKD3D_FRAME_RATE=N` | Frame-rate limit; `0` uncaps. | | `VKD3D_SWAPCHAIN_PRESENT_MODE=MODE` | Force present mode: `IMMEDIATE`, `MAILBOX`, `FIFO`, `FIFO_RELAXED`, `FIFO_LATEST_READY`. | | `VKD3D_SHADER_CACHE_PATH=dir` | DXBC/DXIL→SPIR-V shader cache location; `0` disables. | | `VKD3D_PROFILE_PATH=path` | CPU profiling output (profiled builds only). | `VKD3D_CONFIG` flags: `vk_debug` (validation layer), `nodxr` (disable DXR), `dxr` (force DXR even when unsafe), `dxr12` (experimental DXR 1.2), `force_static_cbv` (NVIDIA speed hack), `single_queue` (no async queues), `no_upload_hvv` (block host-visible VRAM for uploads), `pipeline_library_app_cache`, `skip_application_workarounds`, `breadcrumbs`, `descriptor_qa_checks` (debug). --- ## 9. Wine core env vars (also work under Proton) Proton ships Wine; these env vars apply to the whole prefix. | Env var | Meaning | | -------------------------------- | --------------------------------------------------------------------------------------------- | | `WINEPREFIX=path` | Wine prefix directory (default `~/.wine`); all Wine processes of a prefix share `wineserver`. | | `WINEDLLOVERRIDES="dll=n,b;..."` | DLL load order: `n` native, `b` builtin (e.g. `dxgi=n`, `dinput8=n,b`). | | `WINEDEBUG=...` | Debug channel control (e.g. `-all`, `+d3d`). | | `WINE_CPU_TOPOLOGY=N:list` | Expose N physical cores to the game (e.g. `8:0,1,2,3,4,5,6,7` — Steam Deck uses this). | Note: esync/fsync are built into Proton (toggled via `PROTON_NO_ESYNC` / `PROTON_NO_FSYNC`); upstream Wine also accepts `WINEESYNC=1` / `WINEFSYNC=1`. --- ## 10. NVIDIA PRIME render offload (hybrid laptops) Forcing the discrete NVIDIA GPU. Env vars only — no args; the `prime-run` wrapper command sets all three. Needs driver 435.17+. | Env var | Meaning | | ----------------------------------- | ------------------------------------ | | `__NV_PRIME_RENDER_OFFLOAD=1` | Offload rendering to the PRIME GPU. | | `__GLX_VENDOR_LIBRARY_NAME=nvidia` | OpenGL path (GLX). | | `__VK_LAYER_NV_optimus=NVIDIA_only` | Vulkan path (via the Optimus layer). | Usage: `prime-run %command%` or inline: `__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only %command%`. Combined with gamemode: `gamemoderun prime-run %command%`. --- ## 11. gamescope — SteamOS session env vars + extra CLI ### Env vars (Steam/SteamOS session integration) From the Steam Deck `gamescope-session` script (HoloISO/SteamOS); these tell Steam/gamescope which session capabilities exist or control the session: | Env var | Meaning | | ----------------------------------------------------- | ----------------------------------------------------------- | | `STEAM_GAMESCOPE_VRR_SUPPORTED=1` | Advertise VRR controls in Steam. | | `STEAM_GAMESCOPE_TEARING_SUPPORTED=1` | Enable tearing controls in Steam. | | `STEAM_GAMESCOPE_HAS_TEARING_SUPPORT=1` | Gamescope tearing via `GAMESCOPE_ALLOW_TEARING`. | | `STEAM_GAMESCOPE_DYNAMIC_FPSLIMITER=1` | Mesa fifo-based dynamic FPS limiter. | | `STEAM_GAMESCOPE_COLOR_TOYS=1` | Gamma/degamma exponent support in Steam. | | `STEAM_GAMESCOPE_NIS_SUPPORTED=1` | Advertise NIS upscaling. | | `STEAM_GAMESCOPE_DYNAMIC_REFRESH_IN_STEAM_SUPPORTED` | Dynamic refresh toggle in the steamui. | | `STEAM_DISPLAY_REFRESH_LIMITS=40,60` | Refresh-rate range + switching (e.g. Deck 40 Hz mode). | | `STEAM_USE_DYNAMIC_VRS=1` | Dynamic VRS (with `RADV_FORCE_VRS_CONFIG_FILE`). | | `STEAM_MULTIPLE_XWAYLANDS=1` | Per-game XWayland isolation. | | `STEAM_USE_MANGOAPP=1` | mangoapp overlay in session. | | `STEAM_MANGOAPP_HORIZONTAL_SUPPORTED=1` | Horizontal mangoapp bar. | | `GAMESCOPE_MODE_SAVE_FILE=path` | Mode-save file (res/refresh modes). | | `GAMESCOPE_NV12_COLORSPACE=...` | NV12 colorspace for RPT (e.g. `k_EStreamColorspace_BT601`). | | `GAMESCOPE_LIMITER_FILE=path` | Callback-based FPS limiter file. | | `GAMESCOPE_STATS=path` / `GAMESCOPE_WAYLAND_DISPLAY=` | Session stats pipe / Wayland display set by gamescope. | ### Extra CLI flags (beyond §1) | Option | Meaning | | ------------------------------------ | ---------------------------------------------------------------- | | `--xwayland-count N` | Number of XWayland servers (e.g. `2` on Deck). | | `--hide-cursor-delay ms` | Hide the cursor after N ms of inactivity (e.g. `3000`). | | `--fade-out-duration ms` | Fade-to-black duration on startup (e.g. `200`). | | `--force-orientation VALUE` | Panel orientation: `left`, `right`, `upside_down`. | | `--cursor PATH --cursor-hotspot x,y` | Custom cursor image + hotspot (per-user path — skip in presets). | | `-R socket` / `-T stats-pipe` | Session startup socket / stats pipe (used by SteamOS session). | Keyboard shortcuts (nested session): `Super+F` fullscreen, `Super+N` nearest-neighbour, `Super+U` FSR, `Super+Y` NIS, `Super+I`/`Super+O` FSR sharpness ±1, `Super+S` screenshot, `Super+G` keyboard grab. --- ## 12. Steam launch-option syntax - Steam runs the launch options with `/bin/sh`; `%command%` is substituted with the actual game command (must appear exactly once, at the end). - Env assignments prefix the command: `VAR=1 VAR2=x gamescope ... -- %command%`. - Wrappers chain left → right, outermost first: `gamemoderun prime-run gamescope -r 60 -- %command%` (gamemode outermost, gamescope innermost). - `--` separates the wrapper's own args from the wrapped command (gamescope, obs-gamecapture). Without a wrapper, `%command%` alone is valid. - Example: `gamescope -h 720 -H 1440 -S integer -- %command%` (720p→1440p integer scale); `gamescope -r 30 -- %command%` (FPS limit). - Linux-only env vars (DXVK/vkd3d/Proton) have no effect on Windows builds of the same game. --- ## Sources - (`main.cpp` usage string, README) - (`data/MangoHud.conf`) - - (+ `gamemoderun(1)`) - · Phoronix "Mesa 25.3 Merges Vulkan AMD Anti-Lag Support" - (README + Configuration wiki) - (README) - · - · - (`gamescope-session` script) - Project-internal: `launch_args_env_vars.md`, `steam-tinker-launcher.md`