Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ about: Issues with the Steam runtime
* What versions are listed in `steamapps/common/SteamLinuxRuntime/VERSIONS.txt`?
* What versions are listed in `steamapps/common/SteamLinuxRuntime_soldier/VERSIONS.txt`?
* What versions are listed in `steamapps/common/SteamLinuxRuntime_sniper/VERSIONS.txt`?
* What versions are listed in `steamapps/common/SteamLinuxRuntime_4/VERSIONS.txt`?

#### Please describe your issue in as much detail as possible:
<!-- Describe what you _expected_ should happen and what _did_ happen. Please link any large code pastes as a [Github Gist](https://gist.github.com/) -->
Expand Down
41 changes: 31 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,26 @@ This is implemented as a series of Steam Play compatibility tools, and
is referred to as the Steam [container runtime][], or as the
*Steam Linux Runtime*.

Newer native Linux games such as Counter-Strike 2 and Dota 2
run in an environment referred to as `Steam Linux Runtime 3.0 (sniper)`,
which is a [Steam Runtime 3 'sniper'][sniper] container.
This is the recommended environment for developers of new native Linux games.
Newer native Linux games can run in an environment referred to as
`Steam Linux Runtime 4.0`,
which is a [Steam Runtime 4 'steamrt4'][steamrt4]
container.
This is the recommended environment for developers of new native Linux games,
and developers of existing games can switch to it as part of a game update
if desired.
To target this environment,
developers should compile their games in the [sniper SDK][],
developers should compile their games in the
[steamrt4 SDK][],
then set up a Launch Option that supports Linux,
and use the Installation → Linux Runtime menu item in the Steamworks
partner web interface to select the sniper runtime.
partner web interface to select the SLR 4.0 runtime.

`Steam Linux Runtime 3.0 (sniper)` is an older runtime using a
[Steam Runtime 3 'sniper'][sniper] container.
To target this environment,
developers should compile their games in the
[sniper SDK][],
and use the Steamworks partner web interface to select the SLR 3.0 runtime.

Older native Linux games normally run in an environment referred to as
`Steam Linux Runtime 1.0 (scout)`, which is a
Expand All @@ -49,13 +60,14 @@ To target either of these environments,
developers should compile their games in the [scout SDK][].
For backwards compatibility,
this is still the default when a developer publishes a native Linux game,
but we now recommend that developers should target sniper instead.
but we now recommend that developers should target steamrt4 instead.

The Steam Runtime is also used by the [Proton][] Steam Play compatibility
tools, which run Windows games on Linux systems.
Current versions of Proton (8.0 or newer) use the Steam Runtime 3 'sniper'
The most recent versions of Proton (11 or newer) use the Steam Runtime 4
container runtime.
Older versions of Proton (5.13, 6.3 and 7.0) use the
Proton 8, 9 and 10 use the Steam Runtime 3 'sniper' container runtime,
while Proton 5.13, 6.3 and 7.0 use the
Steam Runtime 2 'soldier' container runtime.
The oldest versions of Proton (5.0 or earlier) use the legacy
Steam Runtime 1 'scout' `LD_LIBRARY_PATH` runtime.
Expand All @@ -71,6 +83,8 @@ More information about the
[scout SDK]: https://gitlab.steamos.cloud/steamrt/scout/sdk
[sniper]: https://gitlab.steamos.cloud/steamrt/steamrt/-/blob/steamrt/sniper/README.md
[sniper SDK]: https://gitlab.steamos.cloud/steamrt/sniper/sdk
[steamrt4]: https://gitlab.steamos.cloud/steamrt/steamrt/-/blob/steamrt/steamrt4/README.md
[steamrt4 SDK]: https://gitlab.steamos.cloud/steamrt/steamrt4/sdk
[soldier]: https://gitlab.steamos.cloud/steamrt/steamrt/-/blob/steamrt/soldier/README.md
[steam-runtime-tools documentation]: https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/tree/main/docs

Expand Down Expand Up @@ -104,6 +118,7 @@ They can also be downloaded by opening `steam://` links with Steam:
* Steam Linux Runtime 1.0 (scout): `steam steam://install/1070560`
* Steam Linux Runtime 2.0 (soldier): `steam steam://install/1391110`
* Steam Linux Runtime 3.0 (sniper): `steam steam://install/1628350`
* Steam Linux Runtime 4.0: `steam steam://install/4183110`

All the software that makes up the Steam Runtime is available in both source and binary form in the Steam Runtime repository [https://repo.steampowered.com/steamrt](https://repo.steampowered.com/steamrt "")

Expand All @@ -125,10 +140,15 @@ All of these environments are compatible with the official Steam Runtime
SDK images,
which we provide in OCI format.

If targeting Steam Linux Runtime 4.0,
please consult the
[Steam Runtime 4 SDK](https://gitlab.steamos.cloud/steamrt/steamrt4/sdk/-/blob/steamrt/steamrt4/README.md)
documentation for details.

If targeting Steam Linux Runtime 3.0 'sniper',
please consult the
[Steam Runtime 3 'sniper' SDK](https://gitlab.steamos.cloud/steamrt/sniper/sdk/-/blob/steamrt/sniper/README.md)
documentation for details.
documentation instead.

If targeting the legacy 'scout' runtime,
please consult the
Expand Down Expand Up @@ -173,6 +193,7 @@ Steam Runtime apt repositories

Each Steam Runtime suite has an associated apt repository:

* [`deb https://repo.steampowered.com/steamrt4/apt steamrt4 main contrib non-free`](https://repo.steampowered.com/steamrt4/apt)
* [`deb https://repo.steampowered.com/steamrt3/apt sniper main contrib non-free`](https://repo.steampowered.com/steamrt3/apt)
* [`deb https://repo.steampowered.com/steamrt2/apt soldier main contrib non-free`](https://repo.steampowered.com/steamrt2/apt)
* [`deb https://repo.steampowered.com/steamrt1/apt scout main`](https://repo.steampowered.com/steamrt1/apt)
Expand Down
7 changes: 4 additions & 3 deletions doc/goals.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,12 @@ released in 2019. It is used to run Proton 5.13 up to 7.0.

Steam Runtime version 3, 'sniper', is based on Debian 11 'bullseye',
released in 2021. It is otherwise similar to soldier.
It is used to run Proton 8.0 or later, and some native Linux games
It is used to run Proton 8.0 up to 10.0, and some native Linux games
such as Dota 2, Endless Sky and Retroarch.

Similarly, Steam Runtime version 4, 'medic', is likely to be based on
Debian 12 'bookworm', which was released in 2023.
Similarly, Steam Runtime version 4, 'steamrt4', is based on
Debian 13 'trixie', which was released in 2025.
It is used to run Proton 11 or later.

#### New glibc

Expand Down
53 changes: 33 additions & 20 deletions doc/reporting-steamlinuxruntime-bugs.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ It consists of:
* pressure-vessel, a container launching tool
* a *runtime*, providing a set of libraries for games to use

There are currently three runtimes available:
There are currently four runtimes available:

* [Steam Linux Runtime 4.0](https://gitlab.steamos.cloud/steamrt/steamrt/-/blob/steamrt/steamrt4/README.md)
(steamrt4),
[app ID 4183110](https://steamdb.info/app/4183110/)
is used to run official releases of Proton 11 or newer.
We expect it to be used for newer native Linux games in future.

* [Steam Linux Runtime 3.0 (sniper)](https://gitlab.steamos.cloud/steamrt/steamrt/-/blob/steamrt/sniper/README.md),
[app ID 1628350](https://steamdb.info/app/1628350/)
is used to run official releases of Proton 8.0 or newer,
and some native Linux games such as Dota 2, Endless Sky and Retroarch.
We expect it to be used for other newer native Linux games in future.
is used to run official releases of Proton 8.0 to 10.0,
and increasingly many native Linux games such as
Dota 2, Endless Sky and Retroarch.

* [Steam Linux Runtime 2.0 (soldier)](https://gitlab.steamos.cloud/steamrt/steamrt/-/blob/steamrt/soldier/README.md),
[app ID 1391110](https://steamdb.info/app/1391110/)
Expand Down Expand Up @@ -79,9 +85,12 @@ log. The easiest way to get this is:

* Find the Steam Library directory where the runtime is installed,
typically `~/.local/share/Steam/steamapps/common/SteamLinuxRuntime_soldier`
for Steam Runtime 2 'soldier' or
for Steam Runtime 2 'soldier',
`~/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper`
for Steam Runtime 3 'sniper'
or
`~/.local/share/Steam/steamapps/common/SteamLinuxRuntime_4`
for Steam Runtime 4

* Version numbers for some important runtime components are in `VERSIONS.txt`

Expand Down Expand Up @@ -134,7 +143,9 @@ select a different branch from your Steam Library, in the same way
you would for a game: follow the same procedure as
<https://support.steampowered.com/kb_article.php?ref=9847-WHXC-7326>,
but instead of the properties of CS:GO, change the properties of the
tool named *Steam Linux Runtime 3.0 (sniper)*,
tool named
*Steam Linux Runtime 4.0*,
*Steam Linux Runtime 3.0 (sniper)*,
*Steam Linux Runtime 2.0 (soldier)*
or *Steam Linux Runtime 1.0 (scout)*.

Expand Down Expand Up @@ -163,6 +174,7 @@ If something works in one branch but fails in another branch, that's
very useful information to include in issue reports. Please be as clear
as you can about which version works and which version fails. You can
check the current version by looking at
`SteamLinuxRuntime_4/VERSIONS.txt`,
`SteamLinuxRuntime_sniper/VERSIONS.txt`,
`SteamLinuxRuntime_soldier/VERSIONS.txt` or
`SteamLinuxRuntime/VERSIONS.txt`.
Expand Down Expand Up @@ -229,28 +241,29 @@ game's setup commands have finished.
### Changing the runtime version

If you download a file named
`com.valvesoftware.SteamRuntime.Platform-amd64,i386-soldier-runtime.tar.gz`
from <https://repo.steampowered.com/steamrt-images-soldier/snapshots/>,
`SteamLinuxRuntime_4.tar.xz`
from <https://repo.steampowered.com/steamrt4/images/>,
you can use it as a runtime instead of the one provided by Steam.
Create a new directory in `SteamLinuxRuntime_soldier`, for example
`SteamLinuxRuntime_soldier/my_soldier_platform_0.20200604.0`,
and unpack the tarball into that directory so that you have files like
`SteamLinuxRuntime_soldier/my_soldier_platform_0.20200604.0/metadata` and
`SteamLinuxRuntime_soldier/my_soldier_platform_0.20200604.0/files/bin/env`.
Unpack it, rename the resulting directory to something like
`SteamLinuxRuntime_4_test_3.0.20260415.224995`
and move it into `steamapps/common` next to the production version of
`SteamLinuxRuntime_4`.
Then select it from the list of runtimes in [the test-UI](#test-ui).

For the "Steam Linux Runtime 1.0 (scout)" environment, the closest equivalent
is to download a file named `steam-runtime.tar.xz` from
from <https://repo.steampowered.com/steamrt-images-scout/snapshots/>
and unpack it into the `SteamLinuxRuntime` directory, so that you have
files like `SteamLinuxRuntime/steam-runtime/version.txt`. This will be
used in preference to the scout runtime that comes with Steam.
A similar process can be used for
`SteamLinuxRuntime_sniper.tar.xz`
from <https://repo.steampowered.com/steamrt3/images/>,
`SteamLinuxRuntime_soldier.tar.xz`
from <https://repo.steampowered.com/steamrt2/images/>,
or
`SteamLinuxRuntime.tar.xz`
from <https://repo.steampowered.com/steamrt1/images/>.

### SDK runtimes

If you download a file named
`com.valvesoftware.SteamRuntime.Sdk-amd64,i386-soldier-runtime.tar.gz`
from <https://repo.steampowered.com/steamrt-images-soldier/snapshots/>,
from <https://repo.steampowered.com/steamrt2/images/>,
you can use it as a runtime. Create a new directory in
`SteamLinuxRuntime_soldier`, for example `SteamLinuxRuntime_soldier/my_soldier_sdk_0.20200604.0`,
and unpack the tarball into that directory so that you have files like
Expand Down
88 changes: 6 additions & 82 deletions doc/steamlinuxruntime-known-issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,41 +25,24 @@ The "Steam Linux Runtime 1.0 (scout)" compatibility tool
(application ID 1070560)
combines Steam Runtime 1 libraries with a Steam Runtime 2 container,
and is used to run historical native Linux games.
Before September 2023, this was (confusingly) labelled "Steam Linux Runtime".
The old name might still appear in some contexts.

The "Steam Linux Runtime 2.0 (soldier)" tool (application ID 1391110) is
used to run Proton 5.13 up to 7.0 and is also used internally
by the "Steam Linux Runtime" tool.
Before September 2023, this was labelled "Steam Linux Runtime - soldier".

The "Steam Linux Runtime 3.0 (sniper)" tool (application ID 1628350) is
used to run Proton 8.0 and some newer native Linux games.
Before September 2023, this was labelled "Steam Linux Runtime - sniper".
used to run Proton 8.0 up to 10.0 and some newer native Linux games.

Disabling Steam Play disables all Steam Linux Runtime tools
-----------------------------------------------------------

In Steam's global settings, there is an option to turn off all Steam Play
compatibility tools.
As well as disabling Proton, this also disables Steam Linux Runtime 3.0
(sniper), which will result in games that require this runtime being
launched in a way that does not work.
This is a Steam client issue: it should not allow launching the affected
games in this configuration.

Games affected by this include Dota 2, Endless Sky and Retroarch.

Workaround: in Steam's global Settings window, go to the Compatibility tab
and ensure that "Enable Steam Play for supported titles" is checked.

([steam-for-linux#9852](https://github.com/ValveSoftware/steam-for-linux/issues/9852))
The "Steam Linux Runtime 4.0" tool (application ID 4183110) is
used to run Proton 11 or newer and some newer native Linux games.

Switching Steam Linux Runtime branch sometimes requires a Steam restart
-----------------------------------------------------------------------

When a game that was previously using an older runtime environment switches
to Steam Linux Runtime 3.0 (sniper), sometimes the Steam client will
to Steam Linux Runtime 3.0 (sniper)
or Steam Linux Runtime 4.0,
sometimes the Steam client will
continue to run that game in the older runtime until it is restarted.
This is a Steam client issue: it should switch to the new runtime
automatically.
Expand All @@ -72,21 +55,6 @@ all subsequent game launches should work correctly.

([steam-for-linux#9835](https://github.com/ValveSoftware/steam-for-linux/issues/9835))

Forcing use of Steam Linux Runtime 1.0 (scout) for games requiring SLR 3
------------------------------------------------------------------------

It is currently possible for users to configure games to be run
under Steam Linux Runtime 1.0 (scout), even if the game requires
Steam Linux Runtime 3.0 (sniper), which often will not work.
This is a Steam client issue: it should not allow this configuration.

Games affected by this include Dota 2, Endless Sky and Retroarch.

Workaround: in the game's Properties, go to the Compatibility tab and
ensure that "Force the use of a specific compatibility tool" is unchecked.

([steam-for-linux#9844](https://github.com/ValveSoftware/steam-for-linux/issues/9844))

Flatpak app limitations
-----------------------

Expand All @@ -100,26 +68,8 @@ the container runtimes, you will need:
* An operating system where
[unprivileged users can create user namespaces](https://github.com/flatpak/flatpak/wiki/User-namespace-requirements#unprivileged-bubblewrap)
(non-setuid bubblewrap)

* Debian >= 11, but not Debian 10 or older
* RHEL/CentOS >= 8, but not RHEL/CentOS 7 or older
* Arch Linux with the default `linux` kernel,
but not `linux-hardened` and `bubblewrap-suid`
* Most other recent distributions, e.g. Ubuntu

* Flatpak 1.12 or later

* Ubuntu 18.04 and 20.04 users can get this from
[the PPA](https://launchpad.net/~flatpak/+archive/ubuntu/stable/),
and it is included in Ubuntu 22.04 LTS
* Debian 11 users can get this from
[official backports](https://backports.debian.org/Instructions/),
and it is included in Debian 12

As a workaround, users of older versions of Flatpak can try using
[a community build of Proton](https://github.com/flathub/com.valvesoftware.Steam.CompatibilityTool.Proton)
which uses the freedesktop.org runtime instead of Steam Runtime 2.

([#294](https://github.com/ValveSoftware/steam-runtime/issues/294),
[Proton#4268](https://github.com/ValveSoftware/Proton/issues/4268),
[Proton#4283](https://github.com/ValveSoftware/Proton/issues/4283),
Expand Down Expand Up @@ -332,15 +282,6 @@ Workaround: Move it to your home directory, as above.

([#257](https://github.com/ValveSoftware/steam-runtime/issues/257))

Non-Steam games
---------------

Non-Steam games are not currently supported.

Workaround: don't use Steam Linux Runtime for those games yet.

([#228](https://github.com/ValveSoftware/steam-runtime/issues/228))

Audio
-----

Expand Down Expand Up @@ -418,23 +359,6 @@ fixed the easier cases). Workaround: use bind mounts instead.
[#321](https://github.com/ValveSoftware/steam-runtime/issues/321),
[#368](https://github.com/ValveSoftware/steam-runtime/issues/368))

Common issues and workarounds specific to 'scout'
-------------------------------------------------

Using the Steam Runtime 1 `scout` runtime in a container is considered
experimental, and is not expected to work for all games. Native Linux
games that were compiled for Steam Runtime 1 `scout` are intended to be
run in the older `LD_LIBRARY_PATH`-based Steam Runtime.

### Updating "Steam Linux Runtime 1.0 (scout)" compatibility tool

Due to a Steam limitation, after updating to version 0.20210630.32 or
later, it is necessary to exit from Steam completely and re-launch Steam,
so that the updated compatibility tool configuration will be loaded.
Until Steam has been restarted, trying to launch a game with the
"Steam Linux Runtime 1.0 (scout)" compatibility tool will show an error message
asking for a Steam restart.

Reporting other issues
----------------------

Expand Down