HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ValveSoftware
Proton
C++2018–2026
ValveSoftware / Proton

Proton

Compatibility tool for Steam Play based on Wine and additional components

97Distinct people
118Mentions
0Explicit recommenders
33.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Compatibility tool for Steam Play based on Wine and additional components

GitHub

Where it is used

  • Heroic — Heroic uses Proton to run Windows games on Linux and provides in-app selection and download of Proton versions. Source
  • Steam Deck — Steam Deck includes Proton in SteamOS to run games without porting work. Proton functions as the runtime compatibility layer for playing games on the device. Source

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 12:45:45 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year118 dated mentions

Observed mentions: 2018-08-22 00:04:53 UTC to 2026-10-01 20:00:29 UTC.

05101520252018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 10 mentions; 3 submissions, 7 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 17 mentions; 5 submissions, 12 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 25 mentions; 2 submissions, 23 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 15 mentions; 1 submissions, 14 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 8 mentions; 3 submissions, 5 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 14 mentions; 2 submissions, 12 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 11 mentions; 3 submissions, 8 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 10 mentions; 0 submissions, 10 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC1037
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC17512
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC25223
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC15114
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC817
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC835
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC14212
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC1138
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC10010

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Introduction Proton is a tool for use with the Steam client which allows games which are exclusive to Windows to run on the Linux operating system. It uses Wine to facilitate this. Most users should use Proton provided by the Steam Client itself. See this Steam Community post for more details. The source code is provided to enable advanced users the ability to alter Proton. For example, some users may wish to use a different version of Wine with a particular title. The changelog is available on our wiki. Obtaining Proton sources Acquire Proton's source by cloning https://github.com/ValveSoftware/Proton and checking out the branch you desire. You can clone the latest Proton to your system with this command: git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton Be sure to update submodules when switching between branches: git checkout experimental_6.3 git submodule update --init --recursive If you want to change any subcomponent, now is the time to do so. For example, if you wish to make changes to Wine, you would apply them to the wine/ directory. Building Proton Most of Proton builds inside the Proton SDK container with very few dependencies on the host side. Preparing the build environment You need either a Docker or a Podman setup which Proton's build system uses internally. You should never need to use either container engine manually unless working on those parts of build system directly. We highly recommend the rootless Podman setup. Please refer to your distribution's documentation for setup instructions (e.g. Arch Podman / Docker, Debian Podman / Docker). The Easy Way We provide a top-level Makefile which will execute most of the build commands for you. After checking out the repository and updating its submodules, assuming that you have a working Docker or Podman setup, you can build and install Proton with a simple: make install If your build system is missing dependencies, it will fail quickly with a clear error message. After the build finishes, you may need to restart the Steam client to see the new Proton tool. The tool's name in the Steam client will be based on the currently checked out branch of Proton. You can override this name using the build_name variable. See make help for other build targets and options. Manual building Configuring the build mkdir ../build && cd ../build ../proton/configure.sh --enable-ccache --build-name=my_build Running configure.sh will create a Makefile allowing you to build Proton. The scripts checks if containers are functional and prompt you if any host-side dependencies are missing. You should run the command from a directory created specifically for your build. The configuration script tries to discover a working Docker or Podman setup to use, but you can force a compatible engine with --container-engine=<executable_name>. You can enable ccache with --enable-cache flag. This will mount your $CCACHE_DIR or $HOME/.ccache inside the container. --proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version> can be used to build with a custom version of the Proton SDK images. Check --help for other configuration options. NOTE: If SELinux is in use, the Proton build container may fail to access your user's files. This is caused by SELinux's filesystem labels. You may pass the --relabel-volumes switch to configure to cause the container engine to relabel its bind-mounts and allow access to those files from within the container. This can be dangerous when used with system directories. Proceed with caution and refer your container engine's manual. Building make Important make targets: make install - install Proton into your user's Steam directory, see the install Proton locally section for details. make redist - create a redistribute build (redist/) that can be copied to ~/.steam/root/compatibilitytools.d/. make deploy - create a deployment build (deploy/). This is what we use to deploy Proton to Steam users via Steamworks. make module=<module> module - build both 32- and 64-bit versions of the specified wine module. This allows rapid iteration on one module. This target is only useful after building Proton. make dxvk / make vkd3d-proton - rebuild DXVK / vkd3d-proton. Figuring Out What Failed To Build Proton build system invokes builds of many subprojects in parallel. If one subprojects fails there can be thousands of lines printed by other sub-builds before the top level exits. This can make the real reason of the build failing hard to find. Appending 2>&1 | tee build.log will log the full build output to a build.log file. Searching that file from the bottom up for occurrences of Error should point to the right area. E.g.: make 2>&1 | tee build.log grep -n '] Error [0-9]' build.log 11220:make: *** [../Makefile.in:465: /builds/proton/proton/build-dir/.kaldi-i386-configure] Error 1 12427:make: *** [../Makefile.in:1323: deploy] Error 2 Debug Builds To prevent symbol stripping add UNSTRIPPED_BUILD=1 to the make invocation. This should be used only with a clean build directory. E.g.: mkdir ../debug-proton-build && cd ../debug-proton-build ../proton/configure.sh --enable-ccache --build-name=debug_build make UNSTRIPPED_BUILD=1 install ARM64 Builds You need an ARM64 build machine and pass --target-arch=arm64 to configure.sh. It's not possible to use the resulting builds in x86 Steam running via FEX. Install Proton locally Steam ships with several versions of Proton, which games will use by default or that you can select in Steam Settings' Steam Play page. Steam also supports running games with local builds of Proton, which you can install on your machine. To install a local build of Proton into Steam, make a new directory in ~/.steam/root/compatibilitytools.d/ with a tool name of your choosing and place the directory containing your redistributable build under that path. The make install target will perform this task for you, installing the Proton build into the Steam folder for the current user. You will have
Read the full README on GitHub

What Hacker News says

8 sources
The absolute brilliance of this entire system is how Steam / Valve deals with the Deck hardware. Because you might think, at first sight, it just downloads the Windows version of a game on the Deck which it the runs through its Wine-based but very optimized Win32-to-Linux layer called Proton (https://github.com/ValveSoftware/Proton) and that's it right? Well, that's actually wrong :) Valve learned a lot when they added MacOS support to Steam and they did the same thing for Linux and especially Linux on the Deck. When you install a game through Steam on the Deck it downloads a package made available by the developer for the Deck whenever possible. So the "Verified for Deck" games could also very much be "optimized for the Deck" games which means: - They can have a UX completely optimized for the Deck (looking at you, Rimworld) - They can c
Read the rest
ontain models, shaders and textures especially optimized for the AMD APU And last but not least: - While the developer - ofcourse - is just able to test and deliver the Win32 binary on Proton and be done with it (looking at you, Elden Ring) they can also create a specific Linux binary optimized for the AMD APU in the Deck!
In After almost a year with the Steam Deck I've finally been converted
Theoretically it could, although: > The main Proton issue is that it runs on DXVK, and MoltenVK is not always up to parity with implementing Vulkan API calls on Metal reliably. https://github.com/ValveSoftware/Proton/issues/1344#issuecom... An alternative would be using CrossOver (which pulls from Wine and adds stuff like MoltenVK), which is what Proton does as well (pulling from Wine and adding stuff, but not MoltenVK) and vendors internally, Valve "just"† doesn't pull from the CrossOver changes nor expose Proton on macOS. † scare quotes because it may not be as easy as it seems
In Factorio runs on Apple Silicon
I don't know that I have a better suggestion, but the lack of friction on adding new dependencies makes for really hairy dependency graphs. For example, I really loathed having to write this[1] when all I did was write a gstreamer plugin in Rust. I'm not even confident that I got it all the licensing right, and I surely didn't vet every single library in the graph nor will I vet every library during a future cargo-update. In languages where adding dependencies is more difficult, I think things tend to be simpler and thus, more verifiable. But it's also simply harder. I don't know which solution I like better. [1] ~75 lines of library authorship copyrights https://github.com/ValveSoftware/Proton/blob/proton_7.0/dist...
In Why Rust?
I was trying to find the original justification for why macOS was removed from Proton, but could not find any official word apart from some comments here https://github.com/ValveSoftware/Proton/issues/1344. It was quite odd because the original herald of Steam Play had macOS front and center, even with exclusive cosmetics if you launched the game on macOS. I do remember a large kerfuffle over the very poor state of OpenGL on macOS, which if I remember correctly was stuck on 3.2 for a long while, before being completely deprecated.
In Apple Mac Studio
Obviously their motive is to sell games, but their priorities likely don't currently include Apple's hardware as a result of wanting to compete in the console market and wanting to twist away Microsoft's near-monopoly on PC. Not everyone is a Linux user, but there are lots of people who would be willing to use it if it was sufficiently packaged. The Steam Deck is likely to be exactly that. Fine, they want to sell games. They can still sell games to Mac users. If the back catalog isn't quite there, that's probably not a huge deal, as it's not exactly where the most money is made. Could they go ahead and license Crossover, today, for every Steam user that tries to open a 32-bit game on macOS? Probably! Could they slap together a distribution of Proton for Mac? Absolutely (and for a time, it existed)! But my guess is that the Apple juice jus
Read the rest
t isn't worth the squeeze. It's probably not super important to their strategy, it's probably not going to yield back enough profit to be worth it, and if it were really so easy I suspect they would have furthered their work on Proton for Mac (https://github.com/ValveSoftware/Proton/issues/1344).
In Thank You, Valve

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.