explaingit

valvesoftware/proton

31,333C++Audience · developerComplexity · 5/5Setup · hard

TLDR

A compatibility layer from Valve that lets Windows-only PC games run on Linux by translating Windows system calls and DirectX graphics instructions into Linux and Vulkan equivalents in real time as the game runs.

Mindmap

mindmap
  root((proton))
    What it does
      Runs Windows games on Linux
      Translates system calls
      Real-time translation
    Core tech
      Wine base layer
      DXVK DirectX to Vulkan
      VKD3D-Proton DX12
    Build process
      Docker or Podman
      Build containers
      Custom patches
    Who uses it
      Steam on Linux auto
      Advanced Linux users
      Community fork builders
    Related projects
      Proton-GE fork
      Steam Play integration
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a custom Proton version to get a specific Windows game working on Linux when the official release hasn't patched it yet

USE CASE 2

Apply community patches from Proton-GE or other forks to improve compatibility or performance for a game you care about

USE CASE 3

Contribute bug fixes or compatibility improvements so more Windows games run correctly for all Linux Steam users

USE CASE 4

Study how Windows-to-Linux game compatibility works at a technical level by reading how DXVK translates DirectX to Vulkan

Tech stack

C++ShellWineDXVKVKD3D-ProtonDockerPodman

Getting it running

Difficulty · hard Time to first run · 1day+

Building from source requires Docker or Podman and a specific build container, most Steam users never need the source, Proton downloads automatically via Steam.

In plain English

Proton is a compatibility layer developed by Valve (the company behind Steam) that allows Windows-only video games to run on Linux. For a long time, most commercial games were built exclusively for Windows, which left Linux users with a much smaller library of playable titles. Proton bridges that gap by translating the Windows-specific instructions and system calls that a game makes into their Linux equivalents, in real time, as the game runs. The core technology it builds on is Wine, an open-source project that has been translating Windows software calls to Linux for decades. Proton extends Wine with additional components: notably DXVK and VKD3D-Proton, which translate DirectX (Windows's graphics API) calls into Vulkan (a cross-platform, high-performance graphics API). This is what allows graphically demanding 3D games to run efficiently on Linux, whereas older approaches often caused poor performance. Most Steam users on Linux never interact with this repository directly, Steam automatically downloads and uses Proton in the background when you launch a Windows game via Steam Play. This source code is published so that advanced users and developers can build custom versions of Proton: for example, to experiment with a newer version of Wine for a specific game, or to apply patches that haven't made it into the official release yet. Community-maintained forks like Proton-GE are built from this same codebase. You would use this repo if you are a Linux user interested in game compatibility research, or a developer who wants to contribute fixes. The project is primarily written in C++ and Shell scripts, built inside Docker or Podman containers to ensure a consistent build environment.

Copy-paste prompts

Prompt 1
Walk me through how to build a custom Proton version from the valvesoftware/proton source code using Docker so I can test a patch for a specific game on Linux
Prompt 2
Explain how DXVK inside Proton translates a DirectX 11 draw call into a Vulkan call, what are the key files and where does the translation happen in the source tree
Prompt 3
What is the difference between official Proton and community forks like Proton-GE in terms of what extra patches they include and how to choose which one to use for a game
Prompt 4
Help me write a detailed bug report for a Windows game that crashes under Proton, what logs to collect, what system info to include, and where in this repo to file the issue
Open on GitHub → Explain another repo

← valvesoftware on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.