Skip to content

Commit 89e444a

Browse files
authored
Update README.md (#122)
- Adds io shields such as the proton-ge Discord for support and Github release status to the project's header. - Adds some additional sections such as Description and Contributing as well as project pages. - Updates the format for texts to use code blocks for examples or file names, hyperlinking text to upstream projects instead of pasting raw urls, etc. whenever possible. - Fixes grammar when appropriate such as always capitalizing Proton or Steam.
1 parent dc41d60 commit 89e444a

File tree

1 file changed

+76
-89
lines changed

1 file changed

+76
-89
lines changed

README.md

100755100644
Lines changed: 76 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,85 @@
11
# umu
2-
Unified Linux Wine Game Launcher
2+
[![Github release](https://img.shields.io/github/v/release/Open-Wine-Components/umu-launcher)](https://github.com/Open-Wine-Components/umu-launcher/releases)
3+
[![GPLv3 license](https://img.shields.io/github/license/Open-Wine-Components/umu-launcher)](https://github.com/Open-Wine-Components/umu-launcher/blob/main/LICENSE)
4+
[![Actions status](https://github.com/Open-Wine-Components/umu-launcher/actions/workflows/umu-python.yml/badge.svg)](https://github.com/Open-Wine-Components/umu-launcher/actions)
5+
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
6+
[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.com/invite/6y3BdzC)
37

8+
Unified Linux Wine Game Launcher.
49

5-
# What is this?
10+
## Description
611

7-
This is a unified launcher for windows games on linux. It is essentially a copy of the Steam Linux Runtime/Steam Runtime Tools (https://gitlab.steamos.cloud/steamrt/steam-runtime-tools) that Valve uses for proton, with some modifications made so that it can be used outside of Steam.
12+
### What is this?
813

9-
# What does it do?
14+
This is a unified launcher for Windows games on Linux. It is essentially a copy of the [Steam Runtime Tools](https://gitlab.steamos.cloud/steamrt/steam-runtime-tools) and [Steam Linux Runtime](https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/container-runtime.md) that Valve uses for [Proton](https://github.com/ValveSoftware/Proton), with some modifications made so that it can be used outside of Steam.
1015

11-
When steam launches a proton game, it launches it like this:
16+
### What does it do?
17+
18+
When Steam launches a Proton game, it launches it like this:
1219

1320
```
1421
/home/tcrider/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=348550 -- /home/tcrider/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- /home/tcrider/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/_v2-entry-point --verb=waitforexitandrun -- /home/tcrider/.local/share/Steam/compatibilitytools.d/GE-Proton8-27/proton waitforexitandrun /home/tcrider/.local/share/Steam/steamapps/common/Guilty Gear XX Accent Core Plus R/GGXXACPR_Win.exe
1522
```
1623

1724
We can ignore this `/home/tcrider/.local/share/Steam/ubuntu12_32/steam-launch-wrapper`, it's just a process runner with no real value other than forwarding environment variables (more on that later).
1825

19-
I managed to pull the envvars it uses by making steam run printenv for the games command line. We needed these envvars because proton expects them in order to function. With them we can essentially make proton run without needing steam at all.
26+
I managed to pull the environment variables it uses by making Steam run `printenv` for the game's command line. We needed these envvars because Proton expects them in order to function. With them we can essentially make Proton run without needing steam at all.
2027

2128
Next this part `/home/tcrider/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/_v2-entry-point`
2229

23-
The first part `/home/tcrider/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/` is steam-runtime-tools compiled https://gitlab.steamos.cloud/steamrt/steam-runtime-tools and is used alongside the sniper runtime container used during proton builds.
24-
25-
The second part `_v2-entry-point` is just a bash script which loads proton into the container and runs the game.
26-
27-
So, umu is basically a copy paste of SteamLinuxRuntime_sniper, which is a compiled version of steam-runtime-tools. We've renamed _v2-entry-point to umu and added `umu-run` to replace steam-launch-wrapper.
30+
The first part `/home/tcrider/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/` is steam-runtime-tools compiled and is used alongside the sniper runtime container used during Proton builds.
2831

29-
When you use `umu-run` to run a game, it uses the specified WINEPREFIX, proton version, executable, and arguements passed to it to run the game in proton, inside steam's runtime container JUST like if you were running the game through Steam, except now you're no longer limited to Steam's game library or forced to add the game to Steam's library, in fact, you don't even have to have steam installed.
32+
The second part `_v2-entry-point` is just a bash script which loads Proton into the container and runs the game.
3033

31-
# How do I use it?
34+
So, umu is basically a copy paste of `SteamLinuxRuntime_sniper`, which is a compiled version of steam-runtime-tools. We've renamed `_v2-entry-point` to `umu` and added `umu-run` to replace `steam-launch-wrapper`.
3235

33-
Usage:
36+
When you use `umu-run` to run a game, it uses the specified `WINEPREFIX`, Proton version, executable, and arguments passed to it to run the game in Proton, inside Steam's runtime container JUST like if you were running the game through Steam, except now you're no longer limited to Steam's game library or forced to add the game to Steam's library. In fact, you don't even have to have Steam installed.
3437

35-
`WINEPREFIX=<wine-prefix-path> GAMEID=<umu-id> PROTONPATH=<proton-version-path> ./umu-run <executable-path> <arguements>`
38+
### How do I use it?
3639

37-
Ex:
40+
```
41+
WINEPREFIX=$HOME/Games/epic-games-store GAMEID=umu-dauntless PROTONPATH="$HOME/.steam/steam/compatibilitytools.d/GE-Proton8-28" umu-run "$HOME/Games/epic-games-store/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe" -opengl -SkipBuildPatchPrereq
42+
```
3843

39-
`WINEPREFIX=$HOME/Games/epic-games-store GAMEID=umu-dauntless PROTONPATH="$HOME/.steam/steam/compatibilitytools.d/GE-Proton8-28" ./umu-run "$HOME/Games/epic-games-store/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe" "-opengl -SkipBuildPatchPrereq"`
44+
Optionally, with `STORE` (used mainly for protonfixes):
4045

41-
Optional (used mainly for protonfixes): `STORE`
46+
```
47+
WINEPREFIX=$HOME/Games/epic-games-store GAMEID=umu-dauntless STORE=egs PROTONPATH="$HOME/.steam/steam/compatibilitytools.d/GE-Proton8-28" umu-run "$HOME/Games/epic-games-store/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe" -opengl -SkipBuildPatchPrereq
48+
```
4249

43-
`WINEPREFIX=$HOME/Games/epic-games-store GAMEID=umu-dauntless STORE=egs PROTONPATH="$HOME/.steam/steam/compatibilitytools.d/GE-Proton8-28" ./umu-run "$HOME/Games/epic-games-store/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe" "-opengl -SkipBuildPatchPrereq"`
50+
See the [documentation](https://github.com/Open-Wine-Components/umu-launcher/blob/main/docs/umu.1.scd) for more examples and the [project's wiki](https://github.com/Open-Wine-Components/umu-launcher/wiki/Frequently-asked-questions-(FAQ)) for Frequently Asked Questions.
4451

45-
# What does this mean for other launchers (lutris/bottles/heroic/legendary,etc):
52+
**Note**: umu-launcher will automatically use and download the latest Steam Runtime that is required by Proton, and move its files to `$HOME/.local/share/umu`.
4653

47-
- everyone can use + contribute to the same protonfixes, no more managing individual install scripts per launcher
48-
- everyone can run their games through proton just like a native steam game
49-
- no steam or steam binaries required
50-
- a unified online database of game fixes (protonfixes)
54+
### What does this mean for other launchers (Lutris, Bottles, Heroic, Legendary, etc.)?
5155

52-
right now protonfixes packages a folder of 'gamefixes' however it could likely be recoded to pull from online quite easily
56+
- Everyone can use + contribute to the same protonfixes, no more managing individual install scripts per launcher
57+
- Everyone can run their games through Proton just like a native Steam game
58+
- No Steam or Steam binaries required
59+
- A unified online database of game fixes (protonfixes)
5360

54-
The idea is to get all of these tools using this same `umu-run` and just feeding their envvars into it. That way any changes that need to happen can happen in proton-ge and/or protonfixes, or a 'unified proton' build based off GE, or whatever they want.
61+
Right now protonfixes packages a folder of 'gamefixes' however it could likely be recoded to pull from online quite easily. The idea is to get all of these tools using this same `umu-run` and just feeding their envvars into it. That way any changes that need to happen can happen in proton-ge and/or protonfixes, or a 'unified proton' build based off GE, or whatever they want.
5562

56-
# What is the basic plan of putting this into action?
63+
### What is the basic plan of putting this into action?
5764

5865
1. We build a database containing various game titles, their IDs from different stores, and their correlating umu ID.
59-
2. Various launchers then search the database to pull the umu ID, and feed it as the game ID to umu-run alongside the store type, proton version, wine prefix, game executable, and launch arguements.
60-
3. When the game gets launched from umu-run, protonfixes picks up the store type and umu ID and finds the appropriate fix script for it, then applies it before running the game.
66+
2. Various launchers then search the database to pull the umu ID, and feed it as the game ID to `umu-run` alongside the store type, Proton version, wine prefix, game executable, and launch arguements.
67+
3. When the game gets launched from `umu-run`, protonfixes picks up the store type and umu ID and finds the appropriate fix script for it, then applies it before running the game.
6168
4. protonfixes has folders separated for each store type. The umu ID for a game remains the exact same across multiple stores, the only difference being it can have store specific scripts OR it can just symlink to another existing script that already has the fixes it needs.
6269

6370
Example:
6471

6572
Borderlands 3 from EGS store.
66-
1. Generally a launcher is going to know which store it is using already, so that is easy enough to determine and feed the STORE variable to the launcher.
73+
1. Generally a launcher is going to know which store it is using already, so that is easy enough to determine and feed the `STORE` variable to the launcher.
6774
2. To determine the game title, EGS has various codenames such as 'Catnip'. The launcher would see "ok store is egs and codename is Catnip, let's search the umu database for those"
6875
3. In our umu unified database, we create a 'title' column, 'store' column, 'codename' column, 'umu-ID' column. We add a line for Borderlands 3 and fill in the details for each column.
69-
4. Now the launcher can search 'Catnip' and 'egs' as the codename and store in the database and correlate it with Borderlands 3 and umu-12345. It can then feed umu-12345 to the umu-run script.
76+
4. Now the launcher can search 'Catnip' and 'egs' as the codename and store in the database and correlate it with Borderlands 3 and umu-12345. It can then feed umu-12345 to the `umu-run` script.
7077

7178

72-
# Building and packaging:
73-
Building umu currently requires `bash`, `make`, `meson` and `scdoc`
79+
## Building
80+
Building umu-launcher currently requires `bash`, `make`, and `scdoc`
7481

75-
To build umu, after downloading and extracting the source code from this repository, change into the newly extracted directory
82+
To build umu-launcher, after downloading and extracting the source code from this repository, change into the newly extracted directory
7683
```shell
7784
cd umu-launcher
7885
```
@@ -85,17 +92,17 @@ Change the `--prefix` as fit for your distribution, for example `/usr/local`, or
8592

8693
Then run `make` to build. After a successful build the resulting files should be available in the `./builddir` directory
8794

88-
## Installing
89-
To install umu run the following command after completing the steps described above
95+
### Installing
96+
To install umu-launcher run the following command after completing the steps described above
9097
```shell
9198
make install
9299
```
93-
or if you are packaging umu
100+
or if you are packaging umu-launcher
94101
```shell
95102
make DESTDIR=<packaging_directory> install
96103
```
97104

98-
## Installing as user
105+
### Installing as user
99106
If you want to install umu just for your user, or for quickly testing, you can configure umu with the following command
100107
```shell
101108
./configure.sh --user-install
@@ -104,15 +111,24 @@ followed by
104111
```shell
105112
make install
106113
```
107-
This will install umu under `~/.local/share/umu` and place the executable in `~/.local/bin`
108-
You will need to add `$HOME/.local/bin` in your `$PATH` to be able to run umu this way by exporting the path in your shell's configuration, for example `~/.bash_profile`
114+
This will install umu-launcher under `$HOME/.local/share/umu` and place the executable in `$HOME/.local/bin`
115+
You will need to add `$HOME/.local/bin` in your `$PATH` to be able to run umu-launcher this way by exporting the path in your shell's configuration, for example `$HOME/.bash_profile`
109116
```shell
110117
export PATH="$HOME/.local/bin:$PATH"
111118
```
112119

113-
# Packages:
114-
## NixOS
115-
if you want to add umu-launcher as a flake add this to your inputs in flake.nix
120+
## Packaging
121+
122+
### Nobara
123+
```shell
124+
dnf install -y umu-launcher*.rpm
125+
```
126+
127+
### Arch Linux (AUR)
128+
[![Stable version badge](https://img.shields.io/aur/version/umu-launcher?style=flat&label=umu-launcher)](https://aur.archlinux.org/packages/umu-launcher)
129+
130+
### NixOS
131+
If you want to add umu-launcher as a flake add this to your inputs in `flake.nix`
116132
```nix
117133
inputs = {
118134
umu= {
@@ -121,91 +137,62 @@ if you want to add umu-launcher as a flake add this to your inputs in flake.nix
121137
};
122138
}
123139
```
124-
and in your configuration.nix
140+
and in your `configuration.nix`
125141
```nix
126142
{inputs, pkgs, ... }:
127143
{
128144
environment.systemPackages = [ inputs.umu.packages.${pkgs.system}.umu ];
129145
}
130146
```
131-
if there is any problem with the flake feel free to open a bug report and tag any of the maintainers
147+
If there is any problem with the flake feel free to open a bug report and tag any of the maintainers
132148
> maintainers: @beh-10257
133149
134-
# Usage notes:
135-
136-
When /usr/bin/umu-run is first run, it will copy the /usr/share/umu folder to ~/.local/share/umu. From that point on the ~/.local/share/umu folder will be used for running umu. It will also perform a version check to make sure that if the contents of /usr/share/umu are updated, that the local version also gets updated.
150+
## Contributing
137151

138-
When /usr/bin/umu-run is first run, it also copies /usr/share/umu/umu-Runner to ~/.local/share/steam/compatibilitytools.d/ so that it can be used as a compatibility tool in steam for non-steam games the same way Proton is.
152+
Contributions are welcome and appreciated. To get started, install [ruff](https://github.com/astral-sh/ruff) from your distribution and enable [ruff server](https://github.com/astral-sh/ruff/blob/main/crates/ruff_server/README.md) in your editor.
139153

140-
When /usr/bin/umu-run is run, if a PROTONPATH is not specified, it will automatically download and use umu-Proton and place it at ~/.local/share/steam/compatibilitytools.d/
141-
142-
When /usr/bin/umu-run is run, if a WINEPREFIX is not specified, it will automatically create one using the umu-id at ~/Games/umu/<umu-id>
143-
144-
# README notes from Valve's steam-runtime-tools:
154+
# README notes from Valve's steam-runtime-tools
145155

146156
Steam Linux Runtime 3.0 (sniper)
147157
================================
148158

149-
This container-based release of the Steam Runtime is used for native
150-
Linux games, and for Proton 8.0+.
159+
This container-based release of the Steam Runtime is used for native Linux games, and for Proton 8.0+.
151160

152-
For general information please see
153-
<https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/container-runtime.md>
154-
and
155-
<https://gitlab.steamos.cloud/steamrt/steamrt/-/blob/steamrt/sniper/README.md>
161+
See [container-runtime](https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/container-runtime.md) for details and the [steamrt wiki](https://gitlab.steamos.cloud/steamrt/steamrt/-/wikis/home) for a list of container-based runtimes.
156162

157163
Release notes
158164
-------------
159165

160-
Please see
161166
<https://gitlab.steamos.cloud/steamrt/steamrt/-/wikis/Sniper-release-notes>
162167

163168
Known issues
164169
------------
165170

166-
Please see
167171
<https://github.com/ValveSoftware/steam-runtime/blob/master/doc/steamlinuxruntime-known-issues.md>
168172

169173
Reporting bugs
170174
--------------
171175

172-
Please see
173176
<https://github.com/ValveSoftware/steam-runtime/blob/master/doc/reporting-steamlinuxruntime-bugs.md>
174177

175178
Development and debugging
176-
-------------------------
179+
--------------
177180

178-
The runtime's behaviour can be changed by running the Steam client with
179-
environment variables set.
181+
The runtime's behaviour can be changed by running the Steam client with environment variables set.
180182

181-
`STEAM_LINUX_RUNTIME_LOG=1` will enable logging. Log files appear in
182-
`SteamLinuxRuntime_sniper/var/slr-*.log`, with filenames containing the app ID.
183-
`slr-latest.log` is a symbolic link to whichever one was created most
184-
recently.
183+
`STEAM_LINUX_RUNTIME_LOG=1` will enable logging. Log files appear in `SteamLinuxRuntime_sniper/var/slr-*.log`, with filenames containing the app ID. `slr-latest.log` is a symbolic link to whichever one was created most recently.
185184

186-
`STEAM_LINUX_RUNTIME_VERBOSE=1` produces more detailed log output,
187-
either to a log file (if `STEAM_LINUX_RUNTIME_LOG=1` is also used) or to
188-
the same place as `steam` output (otherwise).
185+
`STEAM_LINUX_RUNTIME_VERBOSE=1` produces more detailed log output, either to a log file (if `STEAM_LINUX_RUNTIME_LOG=1` is also used) or to the same place as `steam` output (otherwise).
189186

190-
`PRESSURE_VESSEL_SHELL=instead` runs an interactive shell in the
191-
container instead of running the game.
187+
`PRESSURE_VESSEL_SHELL=instead` runs an interactive shell in the container instead of running the game.
192188

193-
Please see
194-
<https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/distro-assumptions.md>
195-
for details of assumptions made about the host operating system, and some
196-
advice on debugging the container runtime on new Linux distributions.
189+
Please see [distribution assumptions](https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/distro-assumptions.md) for details of assumptions made about the host operating system, and some advice on debugging the container runtime on new Linux distributions.
197190

198-
Game developers who are interested in targeting this environment should
199-
check the SDK documentation <https://gitlab.steamos.cloud/steamrt/sniper/sdk>
200-
and general information for game developers
201-
<https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/slr-for-game-developers.md>.
191+
Game developers who are interested in targeting this environment should check the [SDK documentation](https://gitlab.steamos.cloud/steamrt/sniper/sdk) and [general information for game developers](https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/slr-for-game-developers.md).
202192

203193
Licensing and copyright
204-
-----------------------
194+
--------------
205195

206-
The Steam Runtime contains many third-party software packages under
207-
various open-source licenses.
196+
The Steam Runtime contains many third-party software packages under various open-source licenses.
208197

209-
For full source code, please see the version-numbered subdirectory of
210-
<https://repo.steampowered.com/steamrt-images-sniper/snapshots/>
211-
corresponding to the version numbers listed in VERSIONS.txt.
198+
For full source code, please see the [version-numbered subdirectory](https://repo.steampowered.com/steamrt-images-sniper/snapshots) corresponding to the version numbers listed in `VERSIONS.txt`.

0 commit comments

Comments
 (0)