Skip to content

Add steam-runtime-dialog and steam-runtime-dialog-ui

Simon McVittie requested to merge wip/task376 into main
  • 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 name steam-dialog), and also in both the LD_LIBRARY_PATH and container runtimes (perhaps just a symlink steam-dialog -> steam-runtime-dialog) so that it will be in their PATH
  • 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

Edited by Simon McVittie

Merge request reports