Skip to content
Snippets Groups Projects
Simon McVittie's avatar
Simon McVittie authored
Unlike XDG_CONFIG_HOME and XDG_DATA_HOME, these search paths are
expected to be read-only, making it much less likely that a game or
app component will misbehave if they contain a dangling symlink.

Also unlike XDG_CONFIG_HOME and XDG_DATA_HOME, these paths are much
more likely to contain OS-related path elements that can cause
container runtime regressions, such as /var/cache (steamrt/tasks#434)
and /var/lib (steamrt/tasks#493).

A regression risk with this change is that if a user has set for example
`XDG_DATA_DIRS=/offload/data:/usr/local/share:/usr/share`, since
0.20240301.0 the result has been that /offload/data has been shared
with the container, which means apps and games in a SLR container will
load icons, .desktop files, etc. from that location. No longer doing
this is both good and bad. It's good because it makes the container
more self-contained again, but it's bad because users might have come
to rely on `/offload/data` being available, which would no longer be
the case after this change.

steamrt/tasks#493

Signed-off-by: default avatarSimon McVittie <smcv@collabora.com>
81de8678
History

steam-runtime-tools — Steam Runtime integration for the Steam client

The steam-runtime-tools library provides low-level Unix-specific tools and functionality for the Steam client, including the pressure-vessel tool that runs Steam games in containers.

To support multiple architectures (currently only i386, x86_64 and aarch64 are supported), you will need to build it once for each architecture and install at least the helper tools in /usr/libexec/steam-runtime-tools-0 (the libsteam-runtime-tools-0-helpers package) for every architecture in parallel.

The helper tools are located relative to the shared library, so it's OK to bundle steam-runtime-tools alongside some other stack in this layout:

anything/
    lib/
        x86_64-linux-gnu/
            libsteam-runtime-tools-0.so.0
    libexec/
        steam-runtime-tools-0/
            i386-linux-gnu-*
            x86_64-linux-gnu-*

as long as the program that is linked to libsteam-runtime-tools-0.so.0 can find it (via a RPATH or RUNPATH or by setting the LD_LIBRARY_PATH environment variable).

pressure-vessel — putting Steam in containers

The pressure-vessel/ subdirectory of this project contains the pressure-vessel utilities, which are used by Steam's Steam Linux Runtime (container runtime) compatibility tool to run games in individual game-specific containers. For background on pressure-vessel and the Steam Linux Runtime, please see: