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.
Proton-CachyOS is a tool for use with the Steam client and umu-launcher which builds on Proton introducing experimental features, third-party tools and more. You can find binary packages for use with Steam Linux Runtime in this repository's releases.
Most users should use Proton provided by the Steam Client itself. See this Steam Community post for more details. This custom Proton distributions is provided for users who want to test bleeding-edge features, community modifications and stores other than Steam.
The changelog is available in CHANGELOG.md.
Build instructions are available in BUILDING.md.
Proton can be tuned at runtime to help certain games run. The Steam client sets
some options for known games using the STEAM_COMPAT_CONFIG variable.
You can override these options using the environment variables described below.
The best way to set these environment overrides for all games is by renaming
user_settings.sample.py to user_settings.py and modifying it appropriately.
This file is located in the Proton installation directory in your Steam library
(often ~/.steam/steam/steamapps/common/Proton #.#).
If you want to change the runtime configuration for a specific game, you can
use the Set Launch Options setting in the game's Properties dialog in the
Steam client. Set the variable, followed by %command%. For example, input
"PROTON_USE_WINED3D=1 %command%" to use the OpenGL-based wined3d renderer
instead of the Vulkan-based DXVK renderer.
To enable an option, set the variable to a non-0 value. To disable an
option, set the variable to 0. To use Steam's default configuration, do
not specify the variable at all.
All of the below are runtime options. They do not effect permanent changes to the Wine prefix. Removing the option will revert to the previous behavior.
| Compat config string | Environment Variable | Description |
|---|---|---|
PROTON_LOG |
Convenience method for dumping a useful debug log to $PROTON_LOG_DIR/steam-$APPID.log. Set to 1 to enable default logging, or set to a string to be appended to the default WINEDEBUG channels. |
|
PROTON_LOG_DIR |
Output log files into the directory specified. Defaults to your home directory. | |
PROTON_WAIT_ATTACH |
Wait for a debugger to attach to steam.exe before launching the game process. To attach to the game process at startup, debuggers should be set to follow child processes. | |
PROTON_CRASH_REPORT_DIR |
Write crash logs into this directory. Does not clean up old logs, so may eat all your disk space eventually. | |
wined3d |
PROTON_USE_WINED3D |
Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11, d3d10, and d3d9. |
nod3d11 |
PROTON_NO_D3D11 |
Disable d3d11.dll, for d3d11 games which can fall back to and run better with d3d9. |
nod3d10 |
PROTON_NO_D3D10 |
Disable d3d10.dll and dxgi.dll, for d3d10 games which can fall back to and run better with d3d9. |
dxvkd3d8 |
PROTON_DXVK_D3D8 |
Use DXVK's d3d8.dll. |
nofsync |
PROTON_NO_FSYNC |
Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.) |
HOST_LC_ALL |
Set value to a locale to override all other system locale settings for a game. This variable should be used instead of LC_ALL. |
|
disablenvapi |
PROTON_DISABLE_NVAPI |
Disable NVIDIA's NVAPI GPU support library. |
nativevulkanloader |
Use the Vulkan loader shipped with the game instead of Proton's built-in Vulkan loader. This breaks VR support, but is required by a few games. | |
forcelgadd |
PROTON_FORCE_LARGE_ADDRESS_AWARE |
Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. |
heapdelayfree |
PROTON_HEAP_DELAY_FREE |
Delay freeing some memory, to work around application use-after-free bugs. |
gamedrive |
PROTON_SET_GAME_DRIVE |
Create an S: drive which points to the Steam Library which contains the game. |
noforcelgadd |
Disable forcelgadd. If both this and forcelgadd are set, enabled wins. |
|
oldglstr |
PROTON_OLD_GL_STRING |
Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings. |
vkd3dfl12 |
Force the Direct3D 12 feature level to 12, regardless of driver support. | |
vkd3dbindlesstb |
Put force_bindless_texel_buffer into VKD3D_CONFIG. |
|
nomfdxgiman |
WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER |
Enable hack to work around video issues in some games due to incomplete IMFDXGIDeviceManager support. |
noopwr |
WINE_DISABLE_VULKAN_OPWR |
Enable hack to disable Vulkan other process window rendering which sometimes causes issues on Wayland due to blit being one frame behind. |
hidenvgpu |
PROTON_HIDE_NVIDIA_GPU |
Force Nvidia GPUs to always be reported as AMD GPUs. Some games require this if they depend on Windows-only Nvidia driver functionality. See also DXVK's nvapiHack config, which only affects reporting from Direct3D. |
WINE_FULLSCREEN_INTEGER_SCALING |
Enable integer scaling mode, to give sharp pixels when upscaling. | |
WINE_USE_KWIN_HACKS |
Enable KDE-specific windowing hacks that may improve experience with KDE older than 6.4 on Wayland and KDE older than 6.6 on X11. | |
cmdlineappend: |
Append the string after the colon as an argument to the game command. May be specified more than once. Escape commas and backslashes with a backslash. | |
xalia or noxalia |
PROTON_USE_XALIA |
Enable Xalia, a program that can add a gamepad UI for some keyboard/mouse interfaces, or set to 0 to disable. The default is to enable it dynamically based on window contents. |
fnad3d11 |
FNA3D_FORCE_DRIVER=D3D11 |
Force FNA to use D3D11 for rendering. |
seccomp |
PROTON_USE_SECCOMP |
Note: Obsoleted in Proton 5.13. In older versions, enable seccomp-bpf filter to emulate native syscalls, required for some DRM protections to work. |
d9vk |
PROTON_USE_D9VK |
Note: Obsoleted in Proton 5.0. In older versions, use Vulkan-based DXVK instead of OpenGL-based wined3d for d3d9. |
| Compat config string | Environment Variable | Description |
|---|---|---|
PROTON_LOG |
In case of videos/audio not playing or being replaced by the SMPTE color bars, use"+mfplat,+quartz,+wmvcore,+wmadec,+dmo" instead of 1. |
|
dxvksarek |
PROTON_DXVK_SAREK |
Use the dxvk-sarek fork as DXVK replacement for older GPUs that don't properly support Vulkan 1.3 (supported Vulkan 1.1.x to 1.2.x). It is using the async branch, so it SHOULD NOT to be used with games using anti-cheat or multiplayer games in general. You have been warned. |
dxvklowlatency |
PROTON_DXVK_LOWLATENCY |
Enable the alternative dxvk-low-latency fork, which enhances the original dxvk with low-latency frame pacing capabilities to improve game responsiveness and input lag. It also improves latency stability over time, usually resulting in a more accurate playback speed of the generated video. Refer to the project's documentation for in-depth configuration. |
d7vkddraw |
PROTON_D7VK_DDRAW |
Use ddraw.dll from the D7VK project for DirectX 7-or-lower games. |
fsr4 |
PROTON_FSR4_UPGRADE |
Automatically download amdxcffx64.dll and upgrade games with FSR 3.1 to use FSR 4. Version to download can be specified by supplying it as a value, like so PROTON_FSR4_UPGRADE="4.0.1", instead of 1. Downloads the latest available and known-good version of the required DLL by default. If you want to use custom DLLs refer to this section. |
fsr4hud |
PROTON_FSR4_INDICATOR |
Enable the FSR4 watermark at the top left portion of the screen. This is a shorthand option for setting FSR4_WATERMARK=1 and MLFG_WATERMARK=1. |
fsr4rdna3 |
PROTON_FSR4_RDNA3_UPGRADE |
Identical to PROTON_FSR4_UPGRADE but for RDNA3 GPUs. Enables some required compatibility options and downloads version 4.0.0 of the DLL by default. If you want to use custom DLLs refer to this section. |
mlfg |
PROTON_MLFG_UPGRADE |
Enables the use of MLFG when amdxcffx64.dll >= 4.0.3. This option is enabled automatically with PROTON_FSR4_UPGRADE and PROTON_FSR4_RDNA3_UPGRADE. If you need to disable it while still using the FSR4 upgrade options, you can add PROTON_MLFG_UPRADE=0. |
fsr3 |
PROTON_FSR3_UPGRADE |
|
dlss |
PROTON_DLSS_UPGRADE |
Automatically download and use newer versions of nvngx_dlss(d|g).dll DLLs. Version to download can be specified by supplying it as a value, like so PROTON_DLSS_UPGRADE="310.2", instead of 1, to download version 310.2.1.0. This option also sets DXVK_NVAPI_DRS_SETTINGS to use the latest preset. If you provide your own configuration through this environment variable, your configuration will override the defaults. |
dlsshud |
PROTON_DLSS_INDICATOR |
Enable the DLSS overlay at the bottom left portion of the screen. |
xess |
PROTON_XESS_UPGRADE |
|
nvidialibs |
PROTON_NVIDIA_LIBS |
Enable alternative implementations of Nvidia libraries missing from Proton. Allows things like hardware-accelerated PhysX to function and should be use only when needed. This option enables all of nvcuda, nvenc, nvml and nvoptix. These are incompatible with wow64 and thus disabled when PROTON_USE_WOW64=1 is set. |
nvidialibsno32 |
PROTON_NVIDIA_LIBS_NO_32BIT |
Use with the previous option, to enable only the 64bit nvidia libraries. Useful if you are using RTX series 4000 or 5000 GPUs and you had bad performance or crashes when enabling these with 32bit games. |
nvcuda |
PROTON_NVIDIA_NVCUDA |
Enable alternative nvcuda.dll from nvidial-libs only. |
nvenc |
PROTON_NVIDIA_NVENC |
Enable alternative nvcencodeapi(64).dll from nvidial-libs only. |
nvml |
PROTON_NVIDIA_NVML |
Enable alternative nvml.dll from nvidial-libs only. This option is enabled by default. |
nvoptix |
PROTON_NVIDIA_NVOPTIX |
Enable alternative nvoptix.dll from nvidial-libs only. |
nowmdecoration |
PROTON_NO_WM_DECORATION |
Disable window decorations by the the window manager, use wine's own window decorations. |
wayland |
PROTON_ENABLE_WAYLAND |
Enable Wayland support. winewayland is experimental and work-in-progress, expect issues. When reporting issues ALWAYS mention if you using this environment variable, and make sure the issue still happens without it. Valve's Protons do not include winewayland.drv, they always use winex11.drv. For more information refer to this section |
wayland |
PROTON_USE_WAYLAND |
Alias of PROTON_ENABLE_WAYLAND |
sdlinput |
PROTON_PREFER_SDL |
Uses SDL input instead of HIDRAW/Steam Input |
DXVK_HDR |
Enables HDR when set to DXVK_HDR=1, optionally combined with ENABLE_HDR_WSI=1 if required, on Nvidia driver versions older than 595.x.x. |
|
sdlinput |
PROTON_USE_SDL |
Alias of PROTON_PREFER_SDL |
PROTON_NO_STEAMINPUT |
||
localshadercache |
PROTON_LOCAL_SHADER_CACHE |
Enable per-game shader cache even if "Shader Pre-caching" is disabled. Any configuration set by this option can be overriden, i.e. if one of the environment variables is already set, the user-set value will be used. The default configuration is set up to mimic Steam's "Shader Pre-Caching", with shaders being cached under <steamlibrary>/shadercache/<appid> for each game. |
mediaconv |
PROTON_ENABLE_MEDIACONV |
For debugging purposes, do not use. |
PROTON_MEDIA_FORCE_GST |
Fixes video/audio playback in cutscenes in some cases. | |
PROTON_GST_VIDEO_ORIENTATION |
Change the orientation (rotation) of videos rendered using gstreamer. The accepted values are the same as gstreamer's videoflip plugin |
|
vkreflex |
DXVK_NVAPI_VKREFLEX |
Enables DXVK-NVAPI's Vulkan Reflex layer to support Reflex in Vulkan games. It's meant to enable Reflex in games such as Portal RTX, Path of Exile 1 and 2 and Doom TDA, etc. |
lowlatencylayer |
LOW_LATENCY_LAYER |
Enables low_latency_layer, for more information and and configuration options refer to the projects README. |
PROTON_USE_OPTISCALER |
Enables automatic OptiScaler injection. For more information refer to this section | |
PROTON_DISCORD_BRIDGE |
Enables rpc-bridge to allow games running in Proton to set Discord's Rich Presence. |
| Compat config string | Environment Variable | Description |
|---|---|---|
GST_GL_WINDOW |
||
WINE_BLOCK_HOSTS |
Provides a list of hosts for Wine to not connect to. The list can be either comma (,) or semicolon (;) separated, i.e WINE_BLOCK_HOSTS=host1.org,host2.net. The maximum number of hosts is 16 and the maximum length of each host is 256 characters. |
|
WINEALSA_CHANNELS |
Allows to select more than two channels with the winealsa driver as well as force disable spatial audio in games. Can be useful with surround setups or when the sounds come out wrong positionally (like dialogue coming out only from the left speaker). Possible values is the number of speakers, such as 2 (to disable spatial audio), such as 4 (2 front, 2 rear), 6 (5.1) or 8 (7.1). |
|
WINEALSA_SPATIAL |
Properly downmixes spatial with winealsa and includes the height channels. Use 1 to enable, 0 to disable (default). Recommended only if there are spatial audio errors with the WINEALSA_CHANNELS variable |
If something that uses Electron/CEF (launchers like Battle.net, Ubisoft Connect, EA App, Rockstar Launcher) doesn't work (displays as white window) after enabling native Wayland support, try adding --in-process-gpu to the command arguments. If you encounter controller issues with winewayland.drv, try using PROTON_USE_SDL=1, or running Steam with -steamos3 which might allow Steam Input to work. For other options relating to winewayland.drv refer to Proton-EM documentation
NOTE: The automated wayland hacks that were included in Proton 10 have been removed on purpose pending a proper implementation. This is the reason previous versions seemed to work but in Proton 11 some launchers display as a white window.
In case you want to manually provide the amdxcffx64.dll DLL, there are two ways to achieve it.
-
The manual way: Copy the DLL you want to use in
<compatdata>/pfx/drive_c/windows/system32/amdxcffx64.dlland setFSR4_UPGRADE=1,MFLG_UPGRADE=1andDXIL_SPIRV_CONFIG="wmma_rdna3_workaround"(ONLY for RDNA3). Make sure to removePROTON_FSR4_UPGRADEandPROTON_FSR4_RDNA3_UPGRADEfrom your environemnt. -
The re-usable way: Copy the DLL you want to use into
~/.cache/protonfixes/upscalers/with the filenameamdxcffx64_v4.0.0_67A4D2BC10ad000.dll(needs to be exactly like this, it's case-sensitive), and the usePROTON_FSR4_UPGRADE=4.0.0orPROTON_FSR4_RDNA3_UPGRADE=4.0.0and the downloader will use the cached DLL. This will only work for new prefixes or if the previous version was a different version, it will not work if the DLL is already present in the prefix. -
The re-usable way++: You can also do the same thing for all other DLLs. After you source your own dlls you can copy them into
~/.cache/protonfixes/upscalerswith one of the follwing namesamdxcffx64_v4.0.0_67A4D2BC10ad000.dllamdxcffx64_v4.0.1_67D435F7d97000.dllamdxcffx64_v4.0.2_68840348eb8000.dllamdxcffx64_v4.0.3_6930960536b9000.dllamdxcffx64_v4.1.0_69A0952A304a000.dll
each one representing their respective version. You can use the version you want through
PROTON_FSR4_[_RDNA3]UPGRADE=<version>where version one of4.0.0,4.0.1,4.0.2,4.0.3or4.1.0.
- Other than
PROTON_USE_OPTISCALER=1to enable it, you might need to usePROTON_OPTISCALER_NAME=<name.dll>to control the DLL that should be injected. Three names are supported forPROTON_OPTISCALER_NAME,dxgi.dll,d3d12.dllanddbghelp.dlland defaults todxgi.dllunless explictly set. - When enabled, the
PROTON_<UPSCALER>_UPGRADEoptions can be used to dictate the versions of the upscaler DLLs to download and use, soPROTON_FSR4_RDNA3_UPGRADE=4.0.2will download the FidelityFX DLLs for version4.0.2.PROTON_FSR4_RDNA3_UPGRADE=1still defaults to4.0.0andPROTON_FSR4_UPGRADE=1defaults to4.1.0. You will need either of these to enable FSR4 upscaling presently. - The configuration files are placed with the DLLs in
<prefix>/drive_c/windows/system32/umu/in case you need to edit them. Further configuration options exposed through environment variables are not planned, and likely to not be implemented. - Right now drop-in DLL replacements are not possible, since the files are validated on each startup. If you need more fine-grained control than what is offered by the in-game menu, it's probably better to manually set up OptiScaler.
- I consider this work-in-progress, and it will certainly not work with all games. Do not report issues to OptiScaler when using this, always try their own manual installation first (and of course disable this feature when doing so).
The following environment variables have been removed or replaced
| Old Environment Variable | New Environment Variable | Description |
|---|---|---|
WINEPULSE_FAST_POLLING |
N/A | Can help eliminate crackling with the default audio driver. Use 1 to enable, 0 to disable (default). Can cause rare crackling in God of War Ragnarok with the power of two quants (e.g. 512/768/1024) |
PROTON_ENABLE_HDR |
DXVK_HDR |
|
PROTON_VKREFLEX |
DXVK_NVAPI_VKREFLEX |
Enables DXVK-NVAPI's Vulkan Reflex layer to support Reflex in Vulkan games. It's meant to enable Reflex in games such as Portal RTX, Path of Exile 1 and 2 and Doom TDA, etc. |
PROTON_MEDIA_USE_GST |
PROTON_MEDIA_FORCE_GST |
Fixes video/audio playback in cutscenes in some cases. |
PROTON_VKD3D_HEAP |
N/A |