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:03:30 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

15 sources
Not only that, but it has a lot of pain points, including ARM CPUs in a world where a lot of games used to target 32 bit windows. Proton supported macos at first[1]. I think support is still more or less there, though not integrated with "steam play". Proton "glue" scripts are also mostly python, and macos does not (did not?) support python3. I think the community could step in and help support it, but valve pretty much stopped efforts on that front (some rationale in [2]), although I think community efforts on wine would be welcomed. [1] https://github.com/ValveSoftware/Proton/commit/a84120449d817... [2] https://github.com/ValveSoftware/Proton/issues/1493#issuecom...
In Linux Has Grown into a Viable PC Gaming Platform and the Steam Stats Prove It
The short (but polite) rebuttal to this is - OSX. DMG files are similar sized and proven to be very successful. For e.g. - firefox (https://www.mozilla.org/en-US/firefox/all/#product-desktop-r...). Win64 installer is 50mb. MacOS installer is 130mb. Linux 64-bit is 70mb. Same is the case with Chrome - https://chromeenterprise.google/intl/en_US/browser/download/... . Windows MSI is 79mb. OSX PKG for the same is 195mb. So by that measure - OSX has already lost right ? The entire package-everything-together has won in probably one of the largest OS ecosystem that exists today. Size does not matter... mom-proof experience does matter. >How much progress could we make if Steam deprecated their runtimes, abandoned containerization for new games, and let all new games just use the native system libraries? How loudly do you think gamers would com
Read the rest
plain if a distribution upgrade broke their favourite game? This OTOH does not exist. Linux gamers are 1% of either the gaming market or the desktop computing market. All gamers either dual boot windows...or android. Even for those who game on Linux, they do it on an abstraction layer like Wine. Which is what Valve maintains - https://github.com/ValveSoftware/wine and https://github.com/ValveSoftware/Proton Valve only needs to maintain wine & proton for a distribution. The games themselves ? well, they are windows only. Nobody compiles for Linux.
In Flatpak Is Not the Future
Agreed, that's a personal favorite. We mostly play the base game (with all the DLC; one nice thing is that it's enough for the host to have them). I've tried some mods, but Star wars Interregnum seems to crash for me after a while. I think it's a known issue on Linux: https://github.com/ValveSoftware/Proton/issues/265#issuecomm... These mods seem nice, but I am not so much into these other universes, and the base game is pretty solid already. I might try them again at some point for more variety, notably Sins of the Prophets.
In In defense of hard counters in real time strategy games
I might be the target audience for this. I have a steam account for years but I barely touch it. I don't feel like building a PC, and games for MacOS were limited last time I checked. I've been happy playing my Switch and PS4. My first thought when I saw this was that it better be able to connect to an external screen, and it does! An added bonus would be if I could hook up external controllers to it as well. I've heard of Valve's Proton[1] but not sure how stable it is and if it can support any Windows game on their platform. If so, then that would be pretty amazing to have access to some Windows-only games without building a PC. I'm definitely interested but I'm in no rush. I'd rather upgrade to a PS5 first but I'm gonna keep my eye on this. If the reviews in the long term are good maybe I'll get the 2nd generation of it. Wonder if they
Read the rest
'll release a Oculus-Quest-like all-in-one VR system next. 1. https://github.com/ValveSoftware/Proton
In Valve Steam Deck
https://www.protondb.com/ This should give you a pretty good idea. For example, Cyberpunk seems to run pretty well which is impressive considering how buggy the game can be even on Windows. Proton has been an excellent experience for me so far... And you can use it for non-steam games. It's just a fork[0] of Wine with DXVK and some other Wine "extensions" baked in. [0] https://github.com/ValveSoftware/Proton Also good luck buying a new GPU in the next 4 years :)
In Update on Windows 11 minimum system requirements
Not forks. The whole code for Proton is in https://github.com/ValveSoftware/Proton and its submodules. There are many game-specific patches, i.e., patches that were more or less explicitly included to make one specific game (or a few games) work better. There are also some instances of game-specific behaviour: Proton detects at runtime which game is running and decides whether to enable or not some code. This is done for the most filthy hacks that are required to run something, but risk to spoil some other program. Search the code for instances of getenv("SteamAppId") or getenv("SteamGameId").
In Wine 6.0

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.