[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72310":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},72310,"umu-launcher","Open-Wine-Components\u002Fumu-launcher","Open-Wine-Components","Unified launcher for Windows games on Linux","",null,"Python",3364,75,30,57,0,7,20,67,21,27.64,"GNU General Public License v3.0",false,"main",true,[],"2026-06-12 02:03:01","# umu\n[![Github release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FOpen-Wine-Components\u002Fumu-launcher)](https:\u002F\u002Fgithub.com\u002FOpen-Wine-Components\u002Fumu-launcher\u002Freleases)\n[![GPLv3 license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FOpen-Wine-Components\u002Fumu-launcher)](https:\u002F\u002Fgithub.com\u002FOpen-Wine-Components\u002Fumu-launcher\u002Fblob\u002Fmain\u002FLICENSE)\n[![Actions status](https:\u002F\u002Fgithub.com\u002FOpen-Wine-Components\u002Fumu-launcher\u002Factions\u002Fworkflows\u002Fumu-python.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FOpen-Wine-Components\u002Fumu-launcher\u002Factions)\n[![Ruff](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fastral-sh\u002Fruff\u002Fmain\u002Fassets\u002Fbadge\u002Fv2.json)](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-%235865F2.svg?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.com\u002Finvite\u002F6y3BdzC)\n\n## Description\n\n### What is this?\n\nThis is a unified launcher for Windows games on Linux. It is essentially a copy of the [Steam Runtime Tools](https:\u002F\u002Fgitlab.steamos.cloud\u002Fsteamrt\u002Fsteam-runtime-tools) and [Steam Linux Runtime](https:\u002F\u002Fgitlab.steamos.cloud\u002Fsteamrt\u002Fsteam-runtime-tools\u002F-\u002Fblob\u002Fmain\u002Fdocs\u002Fcontainer-runtime.md) that Valve uses for [Proton](https:\u002F\u002Fgithub.com\u002FValveSoftware\u002FProton), with some modifications made so that it can be used outside of Steam.\n\n### Why is it called UMU?\n\nAn umu is an above-ground oven of hot volcanic stones originating from Polynesian culture. After the stones are heated, the top layer is removed and the food placed on top to heat\u002Fcook. We chose the name because Valve's containerization tool is named pressure-vessel. We're \"preparing\" the pressure vessel similar to how you would use a stove top pressure-cooker -- by placing it on our umu's \"stovetop\"\n\n### What does it do?\n\nWhen Steam launches a Proton game, it launches it like this:\n\n```\n\u002Fhome\u002Ftcrider\u002F.local\u002Fshare\u002FSteam\u002Fubuntu12_32\u002Freaper SteamLaunch AppId=348550 -- \u002Fhome\u002Ftcrider\u002F.local\u002Fshare\u002FSteam\u002Fubuntu12_32\u002Fsteam-launch-wrapper -- \u002Fhome\u002Ftcrider\u002F.local\u002Fshare\u002FSteam\u002Fsteamapps\u002Fcommon\u002FSteamLinuxRuntime_sniper\u002F_v2-entry-point --verb=waitforexitandrun -- \u002Fhome\u002Ftcrider\u002F.local\u002Fshare\u002FSteam\u002Fcompatibilitytools.d\u002FGE-Proton8-27\u002Fproton waitforexitandrun \u002Fhome\u002Ftcrider\u002F.local\u002Fshare\u002FSteam\u002Fsteamapps\u002Fcommon\u002FGuilty Gear XX Accent Core Plus R\u002FGGXXACPR_Win.exe\n```\n\nWe can ignore this `\u002Fhome\u002Ftcrider\u002F.local\u002Fshare\u002FSteam\u002Fubuntu12_32\u002Fsteam-launch-wrapper`, it's just a process runner with no real value other than forwarding environment variables (more on that later).\n\nI 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.\n\nNext this part `\u002Fhome\u002Ftcrider\u002F.local\u002Fshare\u002FSteam\u002Fsteamapps\u002Fcommon\u002FSteamLinuxRuntime_sniper\u002F_v2-entry-point`\n\nThe first part `\u002Fhome\u002Ftcrider\u002F.local\u002Fshare\u002FSteam\u002Fsteamapps\u002Fcommon\u002FSteamLinuxRuntime_sniper\u002F` is steam-runtime-tools compiled and is used alongside the sniper runtime container used during Proton builds.\n\nThe second part `_v2-entry-point` is just a bash script which loads Proton into the container and runs the game.\n\nSo, 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`.\n\nWhen 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.\n\n### How do I use it?\n\n```\numu-run \"$HOME\u002FGames\u002Fepic-games-store\u002Fdrive_c\u002FProgram Files (x86)\u002FEpic Games\u002FLauncher\u002FPortal\u002FBinaries\u002FWin32\u002FEpicGamesLauncher.exe\" -opengl -SkipBuildPatchPrereq\n```\n\nOptionally, with `WINEPREFIX`, `GAMEID`, `STORE`, and `PROTONPATH`:\n\n```\nWINEPREFIX=$HOME\u002FGames\u002Fepic-games-store GAMEID=umu-dauntless STORE=egs PROTONPATH=\"$HOME\u002F.steam\u002Fsteam\u002Fcompatibilitytools.d\u002FGE-Proton8-28\" umu-run \"$HOME\u002FGames\u002Fepic-games-store\u002Fdrive_c\u002FProgram Files (x86)\u002FEpic Games\u002FLauncher\u002FPortal\u002FBinaries\u002FWin32\u002FEpicGamesLauncher.exe\" -opengl -SkipBuildPatchPrereq\n```\n\nNotes:\n\n- `WINEPREFIX` designates where to create the wine prefix. If not specified it will default to \u002Fhome\u002Fusername\u002FGames\u002Fumu\u002FGAMEID\n- `GAMEID` designates a corresponding umu-id from the [umu-database](https:\u002F\u002Fumu.openwinecomponents.org\u002F) for games that have fixes that need to be applied. Defaults to umu-default\n- `PROTONPATH` designates the full path to a specific proton version. Alternatively you can use value \"GE-Proton\" to auto-download and use the latest GE-Proton build. Defaults to UMU-Proton. (UMU-Proton is the latest stable version of Valve's proton tool with UMU compatibility added)\n- `STORE` designates what storefront to use. UMU uses GAMEID and STORE to search the [umu-database](https:\u002F\u002Fumu.openwinecomponents.org\u002F) for fixes to apply to a game. Defaults to \"none\".\n\nSee the [documentation](https:\u002F\u002Fgithub.com\u002FOpen-Wine-Components\u002Fumu-launcher\u002Fblob\u002Fmain\u002Fdocs\u002Fumu.1.scd) for more examples and the [project's wiki](https:\u002F\u002Fgithub.com\u002FOpen-Wine-Components\u002Fumu-launcher\u002Fwiki\u002FFrequently-asked-questions-(FAQ)) for Frequently Asked Questions.\n\n**Note**: umu-launcher will automatically use and download the latest Steam Runtime that is required by Proton, and move its files to `$HOME\u002F.local\u002Fshare\u002Fumu`.\n\n### What does this mean for other launchers (Lutris, Bottles, Heroic, Legendary, etc.)?\n\n- Everyone can use + contribute to the same protonfixes, no more managing individual install scripts per launcher\n- Everyone can run their games through Proton just like a native Steam game\n- No Steam or Steam binaries required\n- A unified online database of game fixes (protonfixes)\n\nRight 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\u002For protonfixes, or a 'unified proton' build based off GE, or whatever they want.\n\n### What is the basic plan of putting this into action?\n\n1. We build a database containing various game titles, their IDs from different stores, and their correlating umu ID.\n2. 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 arguments.\n3. 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.\n4. 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.\n\nExample:\n\nBorderlands 3 from EGS store.\n1. 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.\n2. 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\"\n3. 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.\n4. 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.\n\n## Reporting issues\n\nWhen reporting issues for games that fail to run, be sure to attach a log with your issue report. To acquire a log from umu, add `UMU_LOG=1` to your environment variables for verbose logging. Furthermore, you can use `PROTON_LOG=1` for proton to create a verbose log in your `$HOME` directory. The log will be named `steam-\u003Cappid>.log`, where `\u003Cappid>` will be `default` if you haven't set a `GAMEID` or a number, depending on what you have set for `GAMEID`.\n\nDo **NOT** report issues here when using compatibility tools that are **NOT** explictly supported, report them to their maintainers first. This includes non-Proton compatibility tools, as well as third-party Proton compatibility tools that are not provided through `umu-launcher`.\n\n## Building\n\nBuilding umu-launcher currently requires `bash`, `make`, and `scdoc` for distribution, as well as the following Python build tools: [build](https:\u002F\u002Fgithub.com\u002Fpypa\u002Fbuild), [hatchling](https:\u002F\u002Fgithub.com\u002Fpypa\u002Fhatch), [installer](https:\u002F\u002Fgithub.com\u002Fpypa\u002Finstaller), and [pip](https:\u002F\u002Fgithub.com\u002Fpypa\u002Fpip).\n\nAdditionally, [cargo](https:\u002F\u002Fgithub.com\u002Frust-lang\u002Fcargo) will be required with the minimum MSRV being the latest stable versions of it's direct dependencies.\n\nTo build umu-launcher, after downloading and extracting the source code from this repository, change into the newly extracted directory\n```shell\ncd umu-launcher\n```\n\nTo configure the installation `PREFIX` (this is not related to wine's `WINEPREFIX`) use the `configure.sh` script\n```shell\n.\u002Fconfigure.sh --prefix=\u002Fusr\n```\nChange the `--prefix` as fit for your distribution, for example `\u002Fusr\u002Flocal`, or `\u002Fapp` for packaging through Flatpak.\n\nThen run `make` to build. After a successful build the resulting files should be available in the `.\u002Fbuilddir` directory\n\n\n## Installing\n\nTo install umu-launcher run the following command after completing the steps described above\n```shell\nmake install\n```\n\nOr if you are packaging umu-launcher\n```shell\nmake DESTDIR=\u003Cpackaging_directory> install\n```\n\n### Installing as user\n\nAdditionally, user installations are supported if desired.\n\nFirst, configure the build for a user installation\n```shell\n.\u002Fconfigure.sh --user-install\n```\n\nThen run `make` install\n```shell\nmake install\n```\n\n**Note**: When installing as a user, this will place the executable `umu-run` in `$HOME\u002F.local\u002Fbin`. You will need to add `$HOME\u002F.local\u002Fbin` in your `$PATH` to be able to run umu-launcher this way by exporting the path in your shell's configuration, for example `$HOME\u002F.bash_profile`\n```shell\nexport PATH=\"$HOME\u002F.local\u002Fbin:$PATH\"\n```\n\n### Installing through uv\nAlternatively, [uv](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv) can be used to quickly setup umu-launcher. For more detail on how this feature works, see the [documentation](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fguides\u002Fscripts\u002F).\n\nFirst, create the script within the project directory.\n```shell\ntouch umu-run\n```\n\nThen, assuming you have `uv` installed, create the virtual environment and install the [project's dependencies](https:\u002F\u002Fgithub.com\u002FOpen-Wine-Components\u002Fumu-launcher\u002Fblob\u002Fmain\u002Fpyproject.toml).\n\nFor example\n```shell\nuv add --script umu-run 'python-xlib' 'urllib3' 'truststore'\n```\n\nAfterwards, run the script through `uv`\n```shell\nuv run umu-run -h\n```\n\n## Packaging\n\n### Nobara\n```shell\ndnf install umu-launcher\n```\n\n### Arch Linux\n```shell\npacman -S umu-launcher\n```\n\n### Nix\n\n#### From nixpkgs\n\n[Available in nixpkgs][nixos search] since 25.05. Simply add `pkgs.umu-launcher` to your configuration.\n\n\u003Cdetails>\u003Csummary>\u003Cstrong>NixOS example\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n```nix\n# configuration.nix\n{pkgs, ...}: {\n  environment.systemPackages = [\n    pkgs.umu-launcher\n  ];\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>\u003Cstrong>home-manager example\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n```nix\n# home.nix\n{pkgs, ...}: {\n  home.packages = [\n    pkgs.umu-launcher\n  ];\n}\n```\n\n\u003C\u002Fdetails>\n\nIf you're using an older nixpkgs channel, such as `nixos-24.11`, you could consider [using multiple nixpkgs channels] or using our flake (see below).\n\n[nixos search]: https:\u002F\u002Fsearch.nixos.org\u002Fpackages?channel=unstable&type=packages&query=umu-launcher&show=umu-launcher\n[using multiple nixpkgs channels]: https:\u002F\u002Fwiki.nixos.org\u002Fwiki\u002FFlakes#Importing_packages_from_multiple_nixpkgs_branches\n\n#### From our flake\n\n> [!NOTE]\n> If there is any problem with the flake, please [open a bug report] and tag at lease one of the maintainers: \\\n> @beh-10257, @MattSturgeon, & @LovingMelody\n\n[open a bug report]: https:\u002F\u002Fgithub.com\u002FOpen-Wine-Components\u002Fumu-launcher\u002Fissues\u002Fnew\n\nIf the version in nixpkgs is not up-to-date enough for you, the latest git snapshot can be installed using the flake in this repo.\n\n\u003Cdetails>\u003Csummary>\u003Cstrong>Example flake\u003C\u002Fstrong> (NixOS)\u003C\u002Fsummary>\n\n```nix\n# flake.nix\n{\n  inputs = {\n    nixpkgs.url = \"github:NixOS\u002Fnixpkgs\u002Fnixos-unstable\";\n    umu.url = \"github:Open-Wine-Components\u002Fumu-launcher?dir=packaging\u002Fnix\";\n    umu.inputs.nixpkgs.follows = \"nixpkgs\";\n  };\n  outputs = {nixpkgs, ...} @ inputs: {\n    nixosConfigurations.desktop = nixpkgs.lib.nixosSystem {\n      # Pass `inputs` to the nixos configuration,\n      # allowing it to be used as a module arg\n      specialArgs = {inherit inputs;};\n      modules = [.\u002Fconfiguration.nix];\n    };\n  };\n}\n```\n\n```nix\n# configuration.nix\n{\n  inputs,\n  pkgs,\n  ...\n}: let\n  # Get `system` from `pkgs`\n  inherit (pkgs.stdenv.hostPlatform) system;\nin {\n  environment.systemPackages = [\n    # Install the `default` package from the umu input\n    inputs.umu.packages.${system}.default;\n  ];\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>\u003Cstrong>Example flake\u003C\u002Fstrong> (using overlays)\u003C\u002Fsummary>\n\nIf you pass your flake inputs to `specialArgs`, you can apply the overlay within your `configuration.nix`:\n\n```nix\n# flake.nix\n{\n  inputs = {\n    nixpkgs.url = \"github:NixOS\u002Fnixpkgs\u002Fnixos-unstable\";\n    umu.url = \"github:Open-Wine-Components\u002Fumu-launcher?dir=packaging\u002Fnix\";\n    umu.inputs.nixpkgs.follows = \"nixpkgs\";\n  };\n  outputs = {nixpkgs, ...} @ inputs: {\n    nixosConfigurations.desktop = nixpkgs.lib.nixosSystem {\n      # Pass `inputs` to the nixos configuration,\n      # allowing it to be used as a module arg\n      specialArgs = {inherit inputs;};\n      modules = [.\u002Fconfiguration.nix];\n    };\n  };\n}\n```\n\n```nix\n# configuration.nix\n{\n  inputs,\n  pkgs,\n  ...\n}: {\n  nixpkgs.overlays = [\n    inputs.umu.overlays.default\n  ];\n  environment.systemPackages = [\n    pkgs.umu-launcher\n  ];\n}\n```\n\nAlternatively, you can avoid `specialArgs` by applying the overlay directly within `flake.nix`:\n\n```nix\n# flake.nix\n{\n  inputs = {\n    nixpkgs.url = \"github:NixOS\u002Fnixpkgs\u002Fnixos-unstable\";\n    umu.url = \"github:Open-Wine-Components\u002Fumu-launcher?dir=packaging\u002Fnix\";\n    umu.inputs.nixpkgs.follows = \"nixpkgs\";\n  };\n  outputs = {nixpkgs, ...} @ inputs: {\n    nixosConfigurations.desktop = nixpkgs.lib.nixosSystem {\n      modules = [\n        .\u002Fconfiguration.nix\n        {\n          # Use the umu overlay\n          nixpkgs.overlays = [inputs.umu.overlays.default];\n        }\n      ];\n    };\n  };\n}\n```\n\n```nix\n# configuration.nix\n{pkgs, ...}: {\n  environment.systemPackages = [\n    pkgs.umu-launcher\n  ];\n}\n```\n\n\u003C\u002Fdetails>\n\n#### Nix package overrides\n\nYou can view the [`nixpkgs` source code] to see the package args that can be overridden.\nCurrently, they include:\n\n- `extraPkgs` allows adding extra packages to the FHS environment (default `pkgs: []`)\n- `extraLibraries` allows adding extra library packages to the FHS environment (default `pkgs: []`)\n- `withMultiArch` whether to add 32-bit libraries to the FHS environment (default `true`)\n\n[`nixpkgs` source code]: https:\u002F\u002Fgithub.com\u002FNixOS\u002Fnixpkgs\u002Fblob\u002Fnixos-unstable\u002Fpkgs\u002Fby-name\u002Fum\u002Fumu-launcher\u002Fpackage.nix\n\nIf you're using our flake, you can also configure the following optional dependencies:\n\n- `withTruststore` adds dependencies that allow using the system trust store (default `true`)\n- `withDeltaUpdates` adds dependencies that enable \"delta updates\" to Proton builds (default `true`)\n\n\u003Cdetails>\u003Csummary>\u003Cstrong>Example override\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n```nix\nenvironment.systemPackages = [\n  (inputs.umu.packages.${system}.default.override {\n    withTruststore = false;\n    withDeltaUpdates = false;\n  })\n];\n```\n\n\u003C\u002Fdetails>\n\n> [!NOTE]\n> If you're using our flake in an unconventional way, you may also need to provide a `lastModifiedDate`. E.g. if you're fetching our repo manually, _without_ using nix flakes.\n>\n> This is a date-string formatted as `\"YYYYMMDDhhmmss\"`, representing when umu was last modified.\n>\n> By default, we set `lastModifiedDate` to our flake's `sourceInfo.lastModifiedDate`. Typically, this should be the commit date.\n\n## Contributing\n\nContributions are welcome and appreciated. To get started, install [ruff](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff) from your distribution and enable [ruff server](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff\u002Fblob\u002Fmain\u002Fcrates\u002Fruff_server\u002FREADME.md) in your editor.\n\n# README notes from Valve's steam-runtime-tools\n\nSteam Linux Runtime 3.0 (sniper)\n================================\n\nThis container-based release of the Steam Runtime is used for native Linux games, and for Proton 8.0+.\n\nSee [container-runtime](https:\u002F\u002Fgitlab.steamos.cloud\u002Fsteamrt\u002Fsteam-runtime-tools\u002F-\u002Fblob\u002Fmain\u002Fdocs\u002Fcontainer-runtime.md) for details and the [steamrt wiki](https:\u002F\u002Fgitlab.steamos.cloud\u002Fsteamrt\u002Fsteamrt\u002F-\u002Fwikis\u002Fhome) for a list of container-based runtimes.\n\nRelease notes\n-------------\n\n\u003Chttps:\u002F\u002Fgitlab.steamos.cloud\u002Fsteamrt\u002Fsteamrt\u002F-\u002Fwikis\u002FSniper-release-notes>\n\nKnown issues\n------------\n\n\u003Chttps:\u002F\u002Fgithub.com\u002FValveSoftware\u002Fsteam-runtime\u002Fblob\u002Fmaster\u002Fdoc\u002Fsteamlinuxruntime-known-issues.md>\n\nReporting bugs\n--------------\n\n\u003Chttps:\u002F\u002Fgithub.com\u002FValveSoftware\u002Fsteam-runtime\u002Fblob\u002Fmaster\u002Fdoc\u002Freporting-steamlinuxruntime-bugs.md>\n\nDevelopment and debugging\n--------------\n\nThe runtime's behaviour can be changed by running the Steam client with environment variables set.\n\n`STEAM_LINUX_RUNTIME_LOG=1` will enable logging. Log files appear in `SteamLinuxRuntime_sniper\u002Fvar\u002Fslr-*.log`, with filenames containing the app ID. `slr-latest.log` is a symbolic link to whichever one was created most recently.\n\n`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).\n\n`PRESSURE_VESSEL_SHELL=instead` runs an interactive shell in the container instead of running the game.\n\nPlease see [distribution assumptions](https:\u002F\u002Fgitlab.steamos.cloud\u002Fsteamrt\u002Fsteam-runtime-tools\u002F-\u002Fblob\u002Fmain\u002Fdocs\u002Fdistro-assumptions.md) for details of assumptions made about the host operating system, and some advice on debugging the container runtime on new Linux distributions.\n\nGame developers who are interested in targeting this environment should check the [SDK documentation](https:\u002F\u002Fgitlab.steamos.cloud\u002Fsteamrt\u002Fsniper\u002Fsdk) and [general information for game developers](https:\u002F\u002Fgitlab.steamos.cloud\u002Fsteamrt\u002Fsteam-runtime-tools\u002F-\u002Fblob\u002Fmain\u002Fdocs\u002Fslr-for-game-developers.md).\n\nLicensing and copyright\n--------------\n\nThe Steam Runtime contains many third-party software packages under various open-source licenses.\n\nFor full source code, please see the [version-numbered subdirectory](https:\u002F\u002Frepo.steampowered.com\u002Fsteamrt-images-sniper\u002Fsnapshots) corresponding to the version numbers listed in `VERSIONS.txt`.\n","umu-launcher 是一个用于在Linux系统上启动Windows游戏的统一启动器。该项目基于Python开发，模仿了Valve为Proton设计的Steam Runtime Tools和Steam Linux Runtime，并进行了适当修改以适应非Steam环境下的使用。通过解析并应用必要的环境变量，umu-launcher能够独立于Steam运行Proton兼容层，从而支持更广泛的Windows应用程序或游戏在Linux平台上顺畅执行。适用于希望在Linux操作系统中直接运行Windows游戏而不依赖于Steam客户端的用户场景。",2,"2026-06-11 03:41:18","high_star"]