Add steam-runtime-dialog and steam-runtime-dialog-ui
-
Add steam-runtime-dialog, a wrapper for zenity-style UIs
-
Add steam-runtime-dialog-ui, a fallback UI for steam-runtime-dialog
This implements a small subset of the feature set of zenity, using libraries available in the Steam Runtime (SDL, SDL_ttf, fontconfig, libdbus).
Unfortunately it does not yet work under Gamescope (e.g. on Steam Deck) due to focus-handling issues.
-
SLR_whatever.sh.in: Use ~/.steam/root/steam-dialog for UI if available
-
launch-options: Use ~/.steam/root/steam-dialog in preference to zenity
Unlike zenity, this doesn't interpret Pango markup.
-
dialog-ui: Add a way to force the UI to run even under Gamescope
We can use this while experimenting with whether we can get this to work successfully under Gamescope.
-
dialog-ui: Allow forcing a different Steam app ID
This will let us debug whether the UI getting stuck on Gamescope is caused by reusing the Steam client's app ID.
steamrt/tasks#376
The high-level goal here is that we can:
- install a copy of
steam-runtime-dialog
as part of the Steam client (maybe under the namesteam-dialog
), and also in both theLD_LIBRARY_PATH
and container runtimes (perhaps just a symlinksteam-dialog -> steam-runtime-dialog
) so that it will be in theirPATH
- either install a copy of
steam-runtime-dialog-ui
as part of the runtimes, or have an actual UI developer write a nicer/more-polished version with the same CLI - install a nicer/more-polished UI (maybe the same program compiled differently? or maybe an IPC client that talks to plymouth and/or Steam?) as
/usr/bin/steam-dialog-ui
on Steam Deck
And then we can make everything that currently uses zenity
use steam-dialog
instead:
- unpacking sniper
- unpacking and reconfiguring scout
- fatal errors during Steam startup
- ...
For the moment, steam-runtime-dialog-ui
is just a "programmer art" version of what we eventually want this to look like, to demonstrate that it's feasible to implement. It's purely SDL and glibc, with no GLib dependency, to make it easy to separate into its own project if that's what Valve want to do.
steamrt/tasks#376