Omakade version
1.6.1
System
System: Omarchy 4.0.2, Hyprland 0.56.2, native (non-Flatpak) Omakade and Steam
Game source
Steam
What happened?
I have a natively-installed Linux game (Unreal Tournament 2004, run through a small wrapper script, not through Proton) registered as a Steam "non-Steam game" shortcut purely so Omakade would discover it — Omakade has no generic "native app" source, so a Steam shortcut is the only way to get an arbitrarily-installed native binary into the library.
Clicking Play on it in Omakade always launches it via the real Steam client (steam://rungameid/), even though the shortcut's Exe already points directly at a runnable wrapper script that needs nothing from Steam (no Proton, no cloud saves, no achievements). I can confirm this from the live process list when launching from Omakade:
$ pgrep -x steam -a
592333 /home/user/.local/share/Steam/ubuntu12_32/steam -srt-logger-opened steam://rungameid/10036044037577768960
Expected: for a non-Steam shortcut, Omakade would launch the shortcut's Exe directly (optionally via an explicit "Launch without Steam" action, so real Steam games/Proton titles keep going through the client as they should).
Actual: every Steam-sourced entry, non-Steam shortcuts included, is launched by shelling out to the Steam client and asking it to run the shortcut via protocol handler. This adds Steam-client overhead/focus-stealing to a launch that doesn't need it, and (combined with the shortcut's default AllowOverlay=1) the Steam overlay hook broke the game's own SDL fullscreen toggle (Alt+Enter got stuck windowed) until I disabled the overlay by hand in shortcuts.vdf.
Root cause (from source)
- src/sources/steam/SteamScanner.cpp, importNonSteamShortcuts(): parses Exe out of each shortcut only to derive installDirectory when StartDir is empty — the Exe path itself is never stored on SteamGameRecord, so nothing downstream can launch it directly even if it wanted to.
- src/launch/SteamLauncher.cpp, SteamLauncher::launch() / SteamLauncher::open(): unconditionally builds a steam://rungameid/ URL and shells out to the steam binary (or the Flatpak) for every Steam-sourced game. There's no branch that distinguishes an owned Steam appid from a non-Steam shortcut, even though launchTargetId() a few lines above already has to special-case the shortcut's 32-bit-with-high-bit-set id format.
Suggested direction
Keep the shortcut's Exe/StartDir on the scanned record, and give non-Steam shortcuts a way to launch directly (QProcess::startDetached on Exe in StartDir, the same shape as the existing Lutris/Heroic/Faugus commands in GameLauncher.cpp) instead of always going through steam://rungameid. This probably wants to be opt-in per shortcut (or a separate "Launch without Steam" action) rather than the default, since some non-Steam shortcuts genuinely need the real Steam client (Proton, Steam Input, overlay screenshots).
Relevant diagnostics
$ pacman -Q omakade
omakade 1.6.1-1
$ pacman -Q omarchy
omarchy 4.0.2-1
$ hyprctl version | head -1
Hyprland 0.56.2 built from branch v0.56.2 at commit efb50993...
Relevant diagnostics
No response
Omakade version
1.6.1
System
System: Omarchy 4.0.2, Hyprland 0.56.2, native (non-Flatpak) Omakade and Steam
Game source
Steam
What happened?
I have a natively-installed Linux game (Unreal Tournament 2004, run through a small wrapper script, not through Proton) registered as a Steam "non-Steam game" shortcut purely so Omakade would discover it — Omakade has no generic "native app" source, so a Steam shortcut is the only way to get an arbitrarily-installed native binary into the library.
Clicking Play on it in Omakade always launches it via the real Steam client (steam://rungameid/), even though the shortcut's Exe already points directly at a runnable wrapper script that needs nothing from Steam (no Proton, no cloud saves, no achievements). I can confirm this from the live process list when launching from Omakade:
$ pgrep -x steam -a
592333 /home/user/.local/share/Steam/ubuntu12_32/steam -srt-logger-opened steam://rungameid/10036044037577768960
Expected: for a non-Steam shortcut, Omakade would launch the shortcut's Exe directly (optionally via an explicit "Launch without Steam" action, so real Steam games/Proton titles keep going through the client as they should).
Actual: every Steam-sourced entry, non-Steam shortcuts included, is launched by shelling out to the Steam client and asking it to run the shortcut via protocol handler. This adds Steam-client overhead/focus-stealing to a launch that doesn't need it, and (combined with the shortcut's default AllowOverlay=1) the Steam overlay hook broke the game's own SDL fullscreen toggle (Alt+Enter got stuck windowed) until I disabled the overlay by hand in shortcuts.vdf.
Root cause (from source)
Suggested direction
Keep the shortcut's Exe/StartDir on the scanned record, and give non-Steam shortcuts a way to launch directly (QProcess::startDetached on Exe in StartDir, the same shape as the existing Lutris/Heroic/Faugus commands in GameLauncher.cpp) instead of always going through steam://rungameid. This probably wants to be opt-in per shortcut (or a separate "Launch without Steam" action) rather than the default, since some non-Steam shortcuts genuinely need the real Steam client (Proton, Steam Input, overlay screenshots).
Relevant diagnostics
$ pacman -Q omakade
omakade 1.6.1-1
$ pacman -Q omarchy
omarchy 4.0.2-1
$ hyprctl version | head -1
Hyprland 0.56.2 built from branch v0.56.2 at commit efb50993...
Relevant diagnostics
No response