Pre-defined Steam launch options: picker menu - #600
Open
Leb-Sun wants to merge 5 commits into
Open
Conversation
Leb-Sun
force-pushed
the
steam-launch-options
branch
from
July 18, 2026 00:09
dfc837a to
ee63030
Compare
Collaborator
|
Is this ready for testing? I see conflicts |
Leb-Sun
force-pushed
the
steam-launch-options
branch
from
July 27, 2026 02:29
ee63030 to
337060b
Compare
Author
This is now ready for testing env vars still require %command%, for example DXVK_HUD=fps %command% -windowed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Games with multiple Steam launch entries (Play DX11 / DX12, safe mode, mod
launcher…) always booted the default one. This adds a "Launch Options" item to
the STEAM dropdown on both game screens — only shown when the game actually has
2+ entries — opening a Workshop-style picker (WsBg scheme, pane-nav wired).
Tapping a row saves it as the game's default.
The selection is explicit per-shortcut state (
launch_option_exe/launch_option_argsextras): an untouched shortcut shows the default entry asactive, a manual exe change in shortcut settings turns options off entirely, and
a read-only hint under Exec args shows the args the active option appends.
LaunchInfo gains
arguments/launchIdparsed from appinfo config.launch, andstale cached rows heal via a one-shot PICS re-fetch when the picker opens. The
picker and the game-screen launch resolve the shortcut through one shared
resolver over the loaded container list, so the pick and the launch always
resolve to the same shortcut.
At launch the selection goes through Steam natively. The Android side resolves
the picked entry's config.launch key and passes it to the in-Wine launcher as
WN_STEAM_LAUNCH_OPTION; the launcher hands it toIClientAppManager::LaunchAppso Steam launches that entry with its own args. Custom launch args are written to
the game's localconfig.vdf
LaunchOptions(env vars stripped — those go throughthe container env), and Steam appends that value to the game's command line
itself, as it does on desktop. Env vars keep flowing through the container env.
Both launch paths deliver the args: on the LaunchApp path Steam appends
localconfig itself; when an unready appinfo forces the launcher's CreateProcess
fallback, it launches the game with the same picked-entry + custom args on argv
(previously the fallback dropped them), and skips the fallback if a slow LaunchApp
spawn turns up late, so a late spawn isn't started twice.
Verified on device on the Steam Launcher path across repeated back-to-back
launches, arg changes and game switching, on both the LaunchApp and
CreateProcess-fallback paths, with
DXVK_HUD=fpsalongside the game args: thepicked entry's own args and the user's custom args arrive together on the game's
command line — checked against the running process, not inferred — and the env
vars apply through the container env. Adds store_game_launch_options,
store_game_launch_option_failed, store_game_launch_options_count and
shortcut_launch_option_args in all locales.
Two known edges, both independent of the picker. Steam's appinfo is frequently
not ready on the first LaunchApp attempt, so the launcher re-primes it and
retries, and falls back to CreateProcess if the app still doesn't spawn; the
fallback carries the same args, and appinfo readiness is a Steam/container-state
matter upstream of this feature. And because a selection is matched by executable
plus arguments, a game listing two entries that agree on both resolves to the
first — they launch identically, but a per-entry detail like a beta key would
come from the wrong one.