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
Merge request reports
Activity
added Doesn't work yet Enhancement labels
assigned to @smcv
added 24 commits
-
01c0c74a...3732ff2c - 20 commits from branch
main
- 53cb8248 - Factor out some basic libc-based utility functions into a static library
- e67c774f - libc-utils: Add some more commonly-used inlines
- 67d5ae7e - Add steam-runtime-dialog, a wrapper for zenity-style UIs
- d74acbb0 - Add steam-runtime-dialog-ui, a fallback UI for steam-runtime-dialog
Toggle commit list-
01c0c74a...3732ff2c - 20 commits from branch
added 6 commits
-
d74acbb0...b8e8dd24 - 2 commits from branch
main
- 275c6c17 - Factor out some basic libc-based utility functions into a static library
- 3fc8f810 - libc-utils: Add some more commonly-used inlines
- 7d5b642f - Add steam-runtime-dialog, a wrapper for zenity-style UIs
- f4ba59b4 - Add steam-runtime-dialog-ui, a fallback UI for steam-runtime-dialog
Toggle commit list-
d74acbb0...b8e8dd24 - 2 commits from branch
removed Doesn't work yet label
requested review from @denittis
added To review label
added Needs testing label
- Resolved by Simon McVittie
One code path that I haven't tested is what happens when we run
steam-dialog
inside a soldier/sniper container.Ideally, the answer should be: if it contains its own
steam-dialog-ui
then we run that, else we fall back to thesteam-dialog-ui
compiled with scout that is shipped with Steam or in scout.I think there might be some behavioural tweaks needed there, to make sure that we're using a scout environment that is set up to run nested inside soldier/sniper, rather than to run on the host (which is not quite right for soldier/sniper, the pinned libraries might be different).
added 4 commits
- 1eeaaf8c - Add steam-runtime-dialog, a wrapper for zenity-style UIs
- 51236035 - Add steam-runtime-dialog-ui, a fallback UI for steam-runtime-dialog
- 3c49bb31 - SLR_whatever.sh.in: Use ~/.steam/root/steam-dialog for UI if available
- c39d905e - launch-options: Use ~/.steam/root/steam-dialog in preference to zenity
Toggle commit list