Skip to content

Gaming with CachyOS Guide

Welcome to the guide for Gaming in CachyOS. We’ll guide you through the essentials aspects on how to setup everything and have a great experience.

To make things easier for you, CachyOS has grouped all the necessary packages for gaming into one meta package that includes all the necessary dependencies and libraries for gaming in Linux and a separate package for the tools and launchers/stores. This makes the installation and setup process for gaming faster and less convoluted for everyone.

If you find that any packages are missing, feel free to let the CachyOS team know.

Follow the steps below to start with the gaming setup.

Terminal window
sudo pacman -S cachyos-gaming-meta

Proton-CachyOS is based on Proton’s bleeding-edge branch and applies a number of modifications on top of it.

  • Wine-staging patches
  • Wine Fullscreen FSR
  • Includes video and audio codecs for game cutscenes
  • Support for umu-launcher including UMU-Protonfixes
  • Adds early hotfixes/workarounds for games

How to properly set multiple launch options

Section titled “How to properly set multiple launch options”

The launch options in Steam are constructed using the following pattern

  • <env variables> <wrappers> %command% <application arguments>

    • <env variables>: These are options in the form of VARIABLE=value. For example PROTON_DXVK_D3D8=1 or DXVK_HUD="fps,memory,version,api"
    • <wrappers>: Applications and scripts that modify how the real application is run. Arguments to the wrapper usually go after the wrapper’s executable. For example mangohud --dlsym or gamescope -W 1680 -H 1050 -w 1280 -h 720 -S fit -F fsr --mangoapp --
    • %command%: This is the real application. This should be specified exactly as is and Steam will replace it with the proper command when the application is run.
    • <application arguments>: These are various arguments to the real application, and they depend on the application. For example -dx11 should go here if the application supports it.
  • Example: __GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1 prime-run game-performance %command% -dx11

  • DLSS & NVIDIA Features
    • PROTON_DLSS_UPGRADE=1: Automatically upgrades DLSS to the latest version
    • PROTON_DLSS_INDICATOR=1: Shows DLSS status indicator in-game
    • PROTON_NVIDIA_LIBS=1: Enables NVIDIA libraries (PhysX, CUDA) - not needed for DLSS/ray tracing
Advanced NVIDIA Controls
  • PROTON_NVIDIA_NVCUDA=1: Enables CUDA support only
  • PROTON_NVIDIA_NVENC=1: Enables NVENC encoding only
  • PROTON_NVIDIA_NVML=1: Enables NVML monitoring
  • PROTON_NVIDIA_NVOPTIX=1: Enables OptiX ray tracing
  • PROTON_NVIDIA_LIBS_NO_32BIT=1: Only enable in 64-bit games (fixes RTX 4000+ performance issues)
  • AMD & Intel Upscaling
    • PROTON_FSR4_UPGRADE=1: Automatically upgrades FSR to latest AMD version
    • PROTON_FSR4_RDNA3_UPGRADE=1: Uses RDNA3-optimized FSR4 DLL
    • PROTON_XESS_UPGRADE=1: Automatically upgrades XeSS to latest version

Setting Up Proton-CachyOS with Lutris and Heroic

Section titled “Setting Up Proton-CachyOS with Lutris and Heroic”
  1. In the main Lutris screen, click the cogwheel icon next to Wine.
  2. Go to the Runner Options tab and confirm that your settings match the following:
    • Wine version = proton-cachyos
    • Use System winetricks = Disabled
    • Graphics
      • Enable DXVK = Enabled
      • Note: User-defined versions of DXVK, VKD3D and DXVK-NVAPI are not applied when using umu-launcher
  3. Navigate to the System Options tab.
    • Lutris
      • Disable Lutris Runtime = Enabled
      • Prefer system libraries = Enabled
  4. Continue scrolling down to the Game execution section and locate the Environment variables table
  5. Add the following environment variables:
    • Key: UMU_RUNTIME_UPDATE optional
      • Value: 0
      • This will skip Steam Linux Runtime updates for proton-cachyos. Do not use this with any Proton that utilizes the Steam Linux Runtime, such as proton-cachyos-slr, -GE, or -EM.
    • Key: PROTON_VERB optional
      • Value: waitforexitandrun
      • This allows protonfixes to work with a corresponding GAMEID.
  6. Click Save to apply the changes.
  1. Open a terminal and install protonup

    Terminal window
    sudo pacman -S protonup-qt
  2. Open protonup-qt and follow the screenshot:

  3. Restart Steam if you had it opened.

Manual Installation (Advanced)
  1. Download the latest version here. (Scroll down to Assets)
  2. Decompress the file and move the folder to ~/.steam/steam/compatibilitytools.d/
  3. Restart Steam if you had it open.

This is the same wine that is at the core of proton-cachyos, but as a standalone package. It can be used in Lutris, Heroic, Bottles and others.

  • All the Wine modifications included with Proton-CachyOS
  • Adds early hotfixes/workarounds for games

Additional configuration options

  • WINE_WMCLASS="<name>": Sets the WM_CLASS of all wine windows, allowing the window manager to control the Wine’s windows through rules.
  • WINEUSERSANDBOX=1: Disables the creation of symlinks from Wine user folders such as Documents/Pictures, to the equivalent folders in the user’s HOME directory
  • WINE_NO_WM_DECORATION=1: Disables window decorations using the Linux window manager. It can fix issues with borderless fullscreen and the mouse clicking through the window.
  • WINE_PREFER_SDL_INPUT=1: Enable to work-around issues with proper controller detection.

Normally, running /opt/wine-cachyos/bin/wine instead of just wine should be enough for an application to run using wine-cachyos-opt.

If a more strict configuration is required, it could look like this:

Terminal window
export PATH="/opt/wine-cachyos/bin/:$PATH"
export WINEDLLPATH="/opt/wine-cachyos/lib/wine:/opt/wine-cachyos/lib32/wine:$WINEDLLPATH"
export LD_LIBRARY_PATH="/opt/wine-cachyos/lib/:/opt/wine-cachyos/lib32/:$LD_LIBRARY_PATH"

If you want to use winetricks with wine-cachyos-opt, you can invoke it like this:

Terminal window
WINE=/opt/wine-cachyos/bin/wine WINEPRFIX=<your prefix> winetricks <verb>

Which Proton version should be used in Steam?

Section titled “Which Proton version should be used in Steam?”
  • Proton 10.0 is the stable release from Valve. Use this if the game you want to play is known to work well.
  • Proton Experimental is the bleeding edge release from Valve. Use this if the game you want to play is relatively new, doesn’t work well with the current Proton stable release, or if people recommend it on ProtonDB.
  • proton-cachyos-slr is the one we build and maintain. Using it is highly recommended with various quality-of-life features, fixes and optimizations. For games using anticheat, such as BattlEye or Easy Anti-Cheat or custom launchers, prefer proton-cachyos-slr.
  • proton-cachyos is the same version as proton-cachyos-slr but built without depending on the Steam Linux Runtime. Use it only if you understand the significance of this difference and fallback to proton-cachyos-slr if issues occur.
  • Proton-GE is a custom build made by GloriousEggroll. It includes various fixes, and can be useful to have in certain situations.
  • Proton 9.0.4 or lower are the stable releases from Valve. Use this if the game you want to play only works in a previous Proton release.

Fix stuttering caused by the Steam Game Recorder Feature

Section titled “Fix stuttering caused by the Steam Game Recorder Feature”
Add the following launch option to your game
LD_PRELOAD="" %command%

To enable Proton logging for a game:

  1. Right-click your game in Steam and select Properties.
  2. Under Launch Options, add the PROTON_LOG environment variable:
    Terminal window
    PROTON_LOG=1 %command%
    This will create a log file in your home directory, named steam-<AppID>.log (for example, Counter Strike 2 uses AppID 730, so the file would be steam-730.log).
Custom Log Directory

To set a custom log directory, use PROTON_LOG_DIR:

Example
PROTON_LOG=1 PROTON_LOG_DIR=/home/cachyos/steam-logs %command%

Pre-caching shaders with Proton-CachyOS, -GE and -EM

Section titled “Pre-caching shaders with Proton-CachyOS, -GE and -EM”

Here is how to disable this feature:

Lutris serves as a central hub for all your games on CachyOS.

With Lutris, you can efficiently manage your game runners, including Wine, Proton, and emulators.

  • You can launch games through Lutris simply by clicking the Play button.
  • Add any game you want clicking the + sign in the top left.
  • Set up a store in the Sources at the left panel and connecting your account, it will then proceed to install said store, and then you’ll be able to run games from within the store, just like you do on Windows.
  • And more!

Games stores supported in Lutris:

How to properly set multiple launch options and environment variables in Lutris

Section titled “How to properly set multiple launch options and environment variables in Lutris”
  • Launch options such as -dx11 or -fullscreen should be added in the Arguments field under the Game options tab using a space as a separator.
  • Command wrappers for example mangohud --dlsym or game-performance should be added in the Command prefix field under the System options tab using a space as a separator.
  • Environment variables such as PROTON_ENABLE_HDR=1 should be added in the Environment variables table under the System options tab using the + button to add a new entry.

Due to gamemode and ananicy-cpp both trying to modify a process niceness at the same time, it can lead to conflicts and unexpected behavior. It’s recommended to use gamemode without ananicy-cpp.

To stop ananicy-cpp, execute the following command:

Terminal window
systemctl stop ananicy-cpp

CachyOS includes a wrapper script game-performance which uses power-profiles-daemon to temporarily switch the power profile to performance. The profile raises system power levels and sets the CPU governor to performance.

When used to launch a game, the system remains in performance mode until the game exits, at which point the previous profile is restored.

Feral’s GameMode offers similar functionality.

How to add game-performance to Steam, Lutris and Heroic Games Launcher

Section titled “How to add game-performance to Steam, Lutris and Heroic Games Launcher”
  1. Open your Steam Library.
  2. Right click the game’s title and select Properties.
  3. On the General tab you’ll find Launch Options section.
  4. Add the following Launch Option:
    Terminal window
    game-performance %command%

Game shaders are compiled automatically while playing, which may cause long loading times and stuttering the first time you encounter them. These shaders are stored on your system to be reused when needed.

However, there is a maximum limit to the shader cache’s file size, causing old shaders to be forgotten when exceeding the default size. This can be an issue since large games can have shaders over 1GB in size, causing them to re-compile shaders every launch.

To avoid long loading times and stuttering, we can increase the global shader cache size:

  1. Open the terminal.
  2. Enter this command to edit the environment file:
    Terminal window
    sudo nano /etc/environment
  3. Paste the following at the end of the file:
    Terminal window
    # Increase Nvidia's shader cache size to 12GB
    __GL_SHADER_DISK_CACHE_SIZE=12000000000
  4. Save the file by pressing CTRL+X, Y, then Enter.
  5. Restart your system.

After restarting, the maximum shader cache size should be permanently increased. Thanks to psygreg’s shader booster for helping this guide.

How to add dlss-swapper to Steam, Lutris and Heroic Games Launcher

Section titled “How to add dlss-swapper to Steam, Lutris and Heroic Games Launcher”
  1. Open your Steam Library
  2. Right click the game’s title and select Properties.
  3. On the General tab you’ll find Launch Options section.
  4. Add the following Launch Option:
    Terminal window
    dlss-swapper %command%
Manual DLL Replacement Method

If dlss-swapper is not working or causing issues try updating game’s DLSS implementation manually by replacing nvngx_dlss.dll with an up-to-date version and using the dlss-swapper-dll wrapper script instead.

The Arch Wiki has already provides comprehensive instructions on how to enable ray tracing for various hardware platforms.

Performance drop on NVIDIA in DirectX12 games

Section titled “Performance drop on NVIDIA in DirectX12 games”

Some users report that the issue is related to how NVIDIA’s Linux drivers handle GPU scheduling—unlike on Windows, where proper scheduling is enforced. There’s no official NVIDIA statement yet. Currently there is no known workaround for this issue and NVIDIA is supposedly working on a fix but it’s not clear when it will be released.

It has nothing to do with CachyOS.

In some titles the performance drop is less noticeable than in others. Check out this benchmark comparison video for reference.

Follow the NVIDIA thread about this issue to know more about it.