Linux gaming has crossed a threshold that would have been unthinkable five years ago. As of November 2025, Linux accounts for 3.20% of Steam's active user base -- the highest figure ever recorded on the platform -- representing roughly 4.22 million monthly active gamers. Nearly 90% of Windows games now run on Linux through Proton, and Valve's Deck Verified program had certified over 21,694 titles as playable on SteamOS. The ecosystem is real, it is large, and it works for the vast majority of players.

But there is still a gap between "it works" and "I set it up correctly." Switching to Linux for gaming is not a single click. It is a sequence of deliberate tinkering steps, and the order in which you do them matters. This guide walks through each one with real commands, specific examples, and game-by-game walkthroughs so you know exactly what to expect.

How Proton translates a Windows game to your Linux GPU — click any layer
Windows Game (EXE)
compiled for Win32 / DirectX 9, 11, or 12
The game itself is unchanged. Proton does not recompile it. Your Windows-only game binary runs exactly as shipped — Proton interposes between the game and the operating system, translating calls the game makes into forms Linux understands. This is why compatibility is per-call, not per-game: games that use standard Windows APIs translate well; games that rely on undocumented behavior may not.
Win32 API calls
Wine / Proton Runtime
translates Windows system calls to Linux equivalents
Wine is not an emulator — the name is a recursive acronym: Wine Is Not an Emulator. It reimplements Windows APIs as native Linux libraries. Proton forks Wine and adds gaming-specific patches: better DirectInput handling, Steam integration, and the synchronization work (esync/fsync/NTSync) covered in Step 4. The Proton prefix (~/.local/share/Steam/steamapps/compatdata/APPID/) is a simulated Windows filesystem that Wine creates to give each game its own isolated C: drive.
D3D9/11/12 draw calls
DXVK + VKD3D-Proton
DirectX 9/10/11 → Vulkan  |  DirectX 12 → Vulkan
This is where graphics translation happens. DXVK intercepts DirectX 9, 10, and 11 calls and converts them to Vulkan in real time. VKD3D-Proton does the same for DirectX 12. Neither layer emulates a GPU — they translate the API language. Because Vulkan is a low-level API close to the metal, the translation overhead is small. Shader compilation is the main cost: the first time a DXVK shader runs, it compiles. Steam's pre-cache system downloads pre-compiled shaders for your GPU to avoid first-run stutter.
Vulkan draw calls
GPU Driver (Mesa RADV / Nvidia)
translates Vulkan into hardware microcode your GPU executes
The final software layer. For AMD, Mesa RADV is the open-source Vulkan implementation built into the driver stack — preferred over AMD's official AMDVLK for gaming due to better stability and more frequent performance updates. For Nvidia, the proprietary driver includes its own Vulkan implementation. This is why getting drivers right in Step 1 is load-bearing for everything above it: a missing or broken driver breaks the entire chain.
hardware microcode
GPU Hardware
renders pixels — knows nothing about Windows or Linux
The GPU has no concept of operating system. It executes shader microcode and outputs frames. Every layer above exists solely to get your game's render calls down to this level in a form the GPU can execute. When people say "Proton adds no overhead," they mean the GPU itself is doing the same work either way — the translation layers above are CPU-side, and modern hardware handles them cheaply.
click any layer for details

Before You Install: Picking Your Distro

The distro you choose shapes how much you have to do manually. If you are still undecided between options beyond gaming, the definitive Linux distribution decision framework covers the full picture. For someone who wants to game without rethinking their entire operating environment, three distros are worth your attention in 2026.

your setup path
What GPU do you have?
Which distro family?

Bazzite is built on Fedora Atomic and is arguably the most purpose-built gaming distro available on desktop hardware right now. It ships with Steam pre-installed, supports both KDE Plasma and GNOME, and works out of the box with Nvidia GPUs, AMD GPUs, and integrated graphics. Bazzite also supports non-Steam launchers including the EA App, Epic Games Store, GOG, itch.io, Rockstar Games Launcher, and Ubisoft Connect. If you want the shortest path from bare metal to gaming, Bazzite is the honest answer.

CachyOS is an Arch-based distribution that has quietly become one of the fastest-growing gaming distros -- its market share among Linux Steam users rose 0.73 percentage points to reach 6.74% in November 2025. It ships with a custom Proton build (proton-cachyos) tuned for performance, and its wiki documents advanced tweaks like NTSync, per-game shader caches, and FSR4 upgrades in unusual detail.

Pop!_OS from System76 publishes a dedicated ISO with Nvidia proprietary drivers pre-installed. If you have an Nvidia card and want Ubuntu familiarity, this is the cleanest starting point. Ubuntu itself works fine too, and its ubuntu-drivers autoinstall command handles Nvidia driver selection automatically.

Note

AMD GPUs have a significant practical advantage on Linux: the open-source amdgpu driver ships inside the Linux kernel itself. You typically install nothing extra. Nvidia cards require proprietary drivers, and while those drivers are mature and well-maintained, driver installation is a real configuration step you need to plan for. AMD processors also power approximately 70% of Linux gaming systems, compared to about 39% of general Steam users -- a gap that reflects this driver reality.

What about dual-booting, and can you reuse your existing game installs?

Dual-booting Linux alongside Windows is a completely reasonable way to start -- you keep Windows available for titles that genuinely will not run on Linux, and you test the Linux setup without committing to it fully. The main practical concern during partitioning is leaving enough space: a base Linux install plus a few large games can consume 100 GB quickly, so plan for at least 150--250 GB on the Linux partition if disk space is not constrained.

If you have games already installed on a Windows NTFS partition, you can read them from Linux, but Proton uses Linux-native paths internally and writes certain files (shader caches, Proton prefix data) alongside the game directory. Reusing an NTFS game install works for launching games through Steam, but the partition must be mounted with write access, and NTFS has a known limitation: it does not support the Unix file permissions and symlinks that some Proton prefixes rely on. The safest approach is to install games fresh on an ext4 or btrfs partition under Linux. If you want to share a game library between both operating systems without copying, mount the NTFS drive in Steam as a secondary library folder -- it will work for many titles, but you will likely hit edge cases with some Proton games that expect POSIX semantics.

Watch Out

Do not use a case-insensitive filesystem (including NTFS) as your primary Steam library on Linux. Some Windows game titles contain files with names that differ only by capitalization -- a pattern that works on NTFS and breaks silently on Linux when two files resolve to the same path. Install your main gaming library on ext4 or btrfs.

Step 1: Getting GPU Drivers Right

Nothing else in this guide matters if your GPU driver is broken or missing. This is where many first-time Linux gamers lose an afternoon.

AMD GPUs

For any modern AMD GPU on a mainstream distro, the kernel-integrated amdgpu driver is active automatically. What you may still need to install are the Vulkan-specific userspace packages. On Ubuntu or Debian-based systems:

ubuntu -- AMD Vulkan setup
$ sudo apt update
$ sudo apt install libvulkan1 mesa-vulkan-drivers vulkan-tools
$ vulkaninfo | head -n 5   # confirm Vulkan is working

On Arch-based systems (Manjaro, CachyOS, EndeavourOS), install Mesa's Vulkan radeon driver and its 32-bit counterpart for older game compatibility:

arch -- AMD full Vulkan stack
$ sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader

The Mesa RADV driver -- the one installed by these commands -- is widely regarded as better for gaming than AMD's official AMDVLK package, offering superior stability and more frequent performance updates. Use RADV unless you have a specific reason not to.

Nvidia GPUs

On Ubuntu, the simplest path is to let ubuntu-drivers detect and install the recommended driver version:

ubuntu -- Nvidia auto-install
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install build-essential dkms linux-headers-$(uname -r)
$ ubuntu-drivers devices        # shows recommended driver
$ sudo ubuntu-drivers autoinstall  # installs it
$ sudo reboot
$ nvidia-smi                        # verify driver loaded

After reboot, verify with nvidia-smi. If you see your GPU listed with driver version and CUDA version, you are done. If the command is not found, the driver did not load -- check dmesg | grep nvidia for conflict messages.

Watch Out

If you have Secure Boot enabled, Nvidia kernel modules must be signed, or Secure Boot must be disabled. This is the single most common cause of a successful Nvidia install that still fails to load. Check /sys/firmware/efi/efivars to confirm your boot mode, and consult your distro's documentation on module signing if needed.

On laptop systems with both an integrated Intel or AMD GPU and a discrete Nvidia GPU, the envycontrol tool makes switching modes simple:

envycontrol -- hybrid laptop GPU management
# Preferred: use your distro's package (Ubuntu 24.04+, Arch, Fedora)
$ sudo apt install envycontrol          # Ubuntu/Debian
# sudo pacman -S envycontrol              # Arch
# Fallback if not in your distro's repos:
# pipx install envycontrol
$ sudo envycontrol -s hybrid     # on-demand mode (recommended)
$ sudo envycontrol -s nvidia     # force Nvidia for all rendering
$ envycontrol --query            # check current mode

Step 2: Installing Steam and Enabling Proton

Proton is a project by Valve that forks Wine and adds additional components including DXVK (DirectX-to-Vulkan translation), VKD3D-Proton (DirectX 12 support), esync, and fsync for improved multithreading. The Valve GitHub repository for Proton documents runtime tuning options that let you override behavior on a per-game basis using environment variables.

On Ubuntu, install Steam from the official package:

ubuntu -- Steam install
$ sudo add-apt-repository multiverse
$ sudo dpkg --add-architecture i386   # required: Steam needs 32-bit library support
$ sudo apt update
$ sudo apt install steam-installer vulkan-tools mesa-vulkan-drivers gamemode mangohud

Once Steam opens, navigate to Steam > Settings > Compatibility. Enable both "Enable Steam Play for supported titles" and "Enable Steam Play for all other titles." The second toggle is the important one -- it allows Proton to run games that Valve has not explicitly verified, which includes a substantial portion of the library.

After enabling Steam Play for all titles, let any pending shader pre-cache downloads complete before launching games. Steam downloads pre-compiled shader caches matched to your GPU hardware. Skipping this step is one of the main causes of first-launch stutter that new Linux gamers report, and it is entirely avoidable.

Step 3: Installing GE-Proton

Valve's official Proton is stable and thoroughly tested. GE-Proton (maintained by community contributor GloriousEggroll) ships additional patches and fixes that Valve has not yet merged or chosen not to merge, plus codec support for video cutscenes that Valve's builds exclude for licensing reasons. For a significant slice of games -- particularly titles with in-game video, certain DRM schemes, or niche DirectX behavior -- GE-Proton is the version that makes things work.

The easiest installation path uses ProtonUp-Qt, a graphical manager available in most distro software centers:

ProtonUp-Qt -- flatpak install
$ flatpak install flathub net.davidotek.pupgui2
$ flatpak run net.davidotek.pupgui2

Inside ProtonUp-Qt, select Steam from the application dropdown, click "Add version," choose the latest GE-Proton entry from the list, and click Install. The tool downloads the release from the official GitHub repository, extracts it into ~/.steam/root/compatibilitytools.d/, and handles cleanup automatically. Restart Steam after installation.

If you prefer manual installation:

manual GE-Proton install
# Download from https://github.com/GloriousEggroll/proton-ge-custom/releases
$ mkdir -p ~/.steam/root/compatibilitytools.d
$ tar -xzf GE-Proton10-25.tar.gz -C ~/.steam/root/compatibilitytools.d/
# Restart Steam -- GE-Proton now appears in Compatibility dropdowns

To use GE-Proton for a specific game, right-click the game in your Steam library, select Properties, go to the Compatibility tab, check "Force the use of a specific Steam Play compatibility tool," and select the GE-Proton version from the dropdown.

Step 3b: Non-Steam Games (Epic, GOG, EA App)

Steam is not your only launcher on Linux. A significant portion of the PC gaming library lives on Epic Games Store, GOG, EA App, and Battle.net -- none of which run natively on Linux. Two tools exist specifically to bridge this gap.

Heroic Games Launcher is an open-source launcher that connects to both Epic Games Store and GOG accounts. It handles authentication, library management, and download for both storefronts, and applies Wine or Proton (your choice) when launching Windows titles. Heroic is the cleanest solution if your library is primarily on Epic or GOG.

Heroic Games Launcher -- flatpak install
$ flatpak install flathub com.heroicgameslauncher.hgl
$ flatpak run com.heroicgameslauncher.hgl

Inside Heroic, sign in to your Epic or GOG account. For each game in your library, you can configure which Proton or Wine version to use, set per-game launch options and environment variables using the same flags covered in the next section, and point the install location at any drive on your system. Heroic stores its game configuration in ~/.config/heroic/.

Lutris takes a broader approach: it is a general-purpose game platform that covers GOG, Epic, Humble, itch.io, Battle.net, and standalone installers. Lutris relies on community-maintained install scripts that automate setup steps beyond what a launcher alone handles -- useful for games with complex installers or legacy DRM. Where Heroic is cleaner for Epic and GOG day-to-day, Lutris is the better tool for one-time installs of older or non-storefront games.

Lutris -- install on Ubuntu
$ sudo add-apt-repository ppa:lutris-team/lutris
$ sudo apt update && sudo apt install lutris
Note

Games launched through Heroic or Lutris use their own Wine or Proton installs, separate from Steam's. ProtonUp-Qt can manage GE-Proton versions for both Steam and Heroic from the same interface -- switch between them using the application dropdown at the top of ProtonUp-Qt's window.

Step 4: Launch Options and Environment Variables

Steam launch options are per-game environment variable overrides that run before the game executable. The Valve Proton repository documents these variables in detail. They are set in the game's Properties dialog under Launch Options, and all go before %command%.

Some commonly useful flags:

common launch option flags
# Enable MangoHud FPS overlay
mangohud %command%

# Enable GameMode (CPU governor and scheduler optimizations)
gamemoderun %command%

# Combine MangoHud + GameMode
mangohud gamemoderun %command%

# Force DXVK async shader compilation (GE-Proton only -- silently ignored on official Proton)
DXVK_ASYNC=1 %command%

# Fall back to OpenGL-based wined3d instead of DXVK (Vulkan)
PROTON_USE_WINED3D=1 %command%

# Enable NVIDIA DLSS/NVAPI support
PROTON_ENABLE_NVAPI=1 DXVK_ENABLE_NVAPI=1 %command%

# Enable Proton debug log (outputs to ~/steam-APPID.log)
PROTON_LOG=1 %command%

# AMD Anti-Lag for reduced input latency
ENABLE_LAYER_MESA_ANTI_LAG=1 %command%

# NTSync (requires kernel 6.14+ or patched kernel -- silently ignored on older kernels)
PROTON_USE_NTSYNC=1 %command%

NTSync, esync, and fsync: which one should you use?

These three flags appear constantly in ProtonDB reports and launch option recommendations, and they address the same underlying problem from different angles. Windows games use synchronization primitives (mutexes, semaphores, events) to coordinate threads. Linux does not implement these natively; Wine and Proton have to emulate them. The emulation approach chosen has a direct effect on CPU overhead and game performance.

These three flags appear constantly in ProtonDB reports. They all address the same underlying problem from different angles: Windows games use synchronization primitives (mutexes, semaphores, events) to coordinate threads. Linux does not implement these natively; Wine and Proton emulate them. The emulation approach has a direct effect on CPU overhead and frame times. The three generations below represent a progressive move toward a kernel-level solution that makes the workaround unnecessary:

Generation 1 • 2018
esync
Uses Linux file descriptors to simulate Windows sync objects. Dramatically cut CPU usage for sync-heavy games when introduced. Requires a raised open file descriptor limit (ulimit -n).
on by default in current Proton kernel: any modern kernel
Generation 2 • 2021
fsync
Uses Linux futexes instead of file descriptors — lower overhead for games with many threads. Automatically supersedes esync on supported kernels. No flag required; it activates silently.
on by default, kernel 5.16+ kernel: 5.16+ (futex2 support)
Generation 3 • 2025
NTSync
A Windows NT sync subsystem added directly to the Linux kernel — not a userspace workaround. Eliminates the emulation layer entirely. Measurably lower CPU utilization and fewer frame time spikes on sync-bound games.
opt-in: PROTON_USE_NTSYNC=1 kernel: 6.14+ required
Which should you use? On kernel 6.14+, add PROTON_USE_NTSYNC=1 to launch options for any game where CPU overhead matters. On older kernels, fsync is already active automatically — nothing to set. The NTSync flag is silently ignored on kernels below 6.14, so setting it proactively does no harm. Run uname -r to check your kernel version before deciding.
check kernel version and NTSync eligibility
$ uname -r   # 6.14.x or later: NTSync is available
$ ls /dev/ntsync 2>/dev/null && echo "ntsync present" || echo "ntsync not available"
Tip

Only place one %command% in your launch options. Everything after the first %command% is passed as a game argument, not as an environment variable -- a subtle mistake that silently breaks flags you thought were active.

Step 5: Using ProtonDB Before You Troubleshoot

Before spending time diagnosing a broken game, check ProtonDB (opens in new tab). ProtonDB is a community-driven database rated on a scale from Platinum (works perfectly, no tweaks) through Gold, Silver, Bronze, and Borked (will not launch). Community reports frequently include the exact launch options or Proton version needed to fix a specific title.

Similarly, Are We Anti-Cheat Yet? (opens in new tab) tracks the status of online multiplayer games by anti-cheat system, telling you at a glance whether a title works under Proton, requires developer opt-in that has not happened, or actively blocks Linux. Check both before purchasing a multiplayer title.

Step 6: Game-Specific Walkthroughs

The following walkthroughs cover real scenarios that represent the range of situations you will actually encounter when building a Linux gaming library.

Where do Proton game saves live?

Windows games running through Proton write their save files into a simulated Windows directory tree called the Proton prefix. You will find it at ~/.local/share/Steam/steamapps/compatdata/APPID/pfx/drive_c/users/steamuser/, where APPID is the game's numeric Steam App ID (visible in the store URL). Documents folder saves land in My Documents/, AppData saves in AppData/Roaming/ or AppData/Local/. Steam Cloud sync works normally for games that support it -- saves are uploaded and downloaded exactly as on Windows. For games without Steam Cloud, back up the compatdata directory if you want portable saves.

Walkthrough 1: Elden Ring (Gold-rated, works with minor setup)

Elden Ring uses Easy Anti-Cheat, which has official Linux support for Proton when the developer enables it. FromSoftware has enabled it. The game runs on default Proton 10 for most users, but ProtonDB reports consistently recommend one adjustment to prevent an intermittent crash on launch.

Right-click Elden Ring in Steam, go to Properties > Launch Options, and set:

Elden Ring -- launch options
PROTON_USE_NTSYNC=1 %command%
# If using GE-Proton, also add: DXVK_ASYNC=1

No Proton version override is typically needed on Proton 10. If you encounter the known EAC initialization delay on first launch, wait up to 60 seconds before assuming a crash -- this is a known first-run behavior that resolves on subsequent launches.

Walkthrough 2: Cyberpunk 2077 (Platinum-rated, REDmod note)

Cyberpunk 2077 is one of the highest-profile Platinum-rated games on ProtonDB. CD Projekt Red has done significant work on Linux compatibility and the game runs near-identically to Windows performance. The main area requiring attention is REDmod, the official modding framework.

REDmod requires Proton Experimental or GE-Proton rather than stable Proton to initialize correctly. In Steam, right-click Cyberpunk 2077 > Properties > Compatibility > Force the use of a specific Steam Play compatibility tool > Proton Experimental (or GE-Proton). Then in Launch Options:

Cyberpunk 2077 -- launch options with DLSS on Nvidia
PROTON_ENABLE_NVAPI=1 DXVK_ENABLE_NVAPI=1 PROTON_DLSS_UPGRADE=1 %command%

For AMD users, PROTON_FSR4_UPGRADE=1 replaces the DLSS flags and enables FSR4 -- note this only applies to RDNA 4 hardware (RX 9000 series); earlier AMD GPUs will use FSR3 regardless of this flag. Drop ray tracing to Low or Off if you experience hitching -- the translation overhead for RT on Linux is real, particularly on Nvidia.

Walkthrough 3: Path of Exile 2 -- using GE-Proton for video cutscenes

Path of Exile 2 uses video cutscenes that require media codecs Valve's official Proton omits. GE-Proton includes these codecs. Without GE-Proton, cutscenes either show a black screen or crash the game.

After installing GE-Proton via ProtonUp-Qt as described earlier, launch Steam in Gaming Mode (on desktop, restart Steam). In your library, find Path of Exile 2 > Properties > Compatibility > Force the use of a specific Steam Play compatibility tool, then select the installed GE-Proton version (for example, GE-Proton10-25). No additional launch options are required for the base game.

Path of Exile 2 -- GE-Proton selection via CLI verify
# Verify GE-Proton directory is in place
$ ls ~/.steam/root/compatibilitytools.d/
GE-Proton10-25

# Once selected in Steam, verify it was used after first launch
$ ls ~/.local/share/Steam/steamapps/compatdata/
# Path of Exile 2's App ID is 2694490
$ ls ~/.local/share/Steam/steamapps/compatdata/2694490/

Walkthrough 4: Counter-Strike 2 -- native Linux, no Proton needed

Counter-Strike 2 ships with a native Linux build. You do not need Proton at all. However, CS2 uses VAC (Valve Anti-Cheat), and VAC is explicitly supported on Linux. The most common issue Linux users report is not compatibility but audio: PipeWire conflicts with the game's audio initialization on some setups.

If you hear no sound or experience audio crashes:

CS2 -- PipeWire audio fix
# Check whether PipeWire pulse is running
$ systemctl --user status pipewire-pulse

# If not running, start it
$ systemctl --user start pipewire-pulse

# CS2 launch option to force SDL audio to PulseAudio backend
SDL_AUDIODRIVER=pulse %command%

Walkthrough 5: A game that will not launch at all -- using PROTON_LOG to diagnose

When a game shows an error or simply closes immediately, the first step is generating a Proton debug log. Add PROTON_LOG=1 %command% to launch options and run the game. A log file named steam-APPID.log will appear in your home directory. Search the log for the string "err:" to find the first meaningful error.

reading a Proton log
# Find your game's App ID -- shown in the URL on its Steam store page
$ ls ~/steam-*.log

# Filter to error lines only
$ grep "err:" ~/steam-1234567.log | head -30

# Look for missing DLL errors -- use protontricks to supply them
$ flatpak install flathub com.github.Matoking.protontricks
$ flatpak run com.github.Matoking.protontricks 1234567 vcrun2022
# Replace vcrun2022 with the appropriate runtime name

Anti-Cheat: What Actually Works and What Does Not

Anti-cheat compatibility is the most misunderstood part of Linux gaming. Here is the honest picture in 2026.

Both Easy Anti-Cheat (EAC) and BattlEye have officially announced support for Proton on Linux, but this support is opt-in per developer. The frameworks support Linux; the decision to enable that support belongs to each game's developer. Titles where the developer has enabled the Linux path -- including Apex Legends, PUBG, and Elden Ring -- work through Proton. Titles where the developer has not enabled it do not work, regardless of which Proton version you use.

check your game
What anti-cheat system does the game use?
Has the developer enabled Proton/Linux support for EAC in this specific game?
Has the developer enabled BattlEye Linux/Proton support for this game?
Works on Linux
EAC has official Proton support and the developer has enabled it. Games like Elden Ring, Apex Legends, and Dead by Daylight fall into this category. Launch through Steam with your chosen Proton version — no special EAC-specific flags needed. Check ProtonDB for any game-specific launch options.
Check First
EAC supports Proton, but per-developer opt-in means you need to verify. Search areweanticheatyet.com and ProtonDB for this specific game title. If ProtonDB shows recent Gold or Platinum reports with online multiplayer working, you are likely fine. If reports mention "EAC not supported," the developer has not enabled the Linux path.
Will Not Run
EAC support exists at the framework level, but the developer must enable it per-game. If they have not, Proton cannot override that decision. The game will fail at launch. Single-player modes in the same title may still work if they run without EAC — check ProtonDB for split reports on SP vs. MP modes.
Works on Linux
BattlEye has enabled Linux/Proton support for this game. PUBG and several others with BattlEye work through Proton. Follow standard Proton setup and check ProtonDB for any version-specific recommendations.
Check First
BattlEye officially supports Proton, but opt-in is per-developer. Check areweanticheatyet.com directly — it maintains a live status for BattlEye titles. If the status shows "supported," you are good. If it shows "denied," the developer has not opted in.
Will Not Run
Without developer opt-in, BattlEye will block Proton. There is no workaround. Monitor areweanticheatyet.com — some developers have added support after initially shipping without it.
Works on Linux
VAC (Valve Anti-Cheat) has full Linux support — it was designed by the same team that built Steam on Linux. Counter-Strike 2, Dota 2, and other VAC-protected titles work natively. CS2 even ships a native Linux build that bypasses Proton entirely.
Permanently Blocked
Valorant's Vanguard anti-cheat operates at the Windows kernel level (ring 0). Linux does not expose kernel access to Windows drivers. There is no compatibility layer, Proton build, or kernel patch that can bridge this gap — it is an architectural incompatibility, not a software version issue. No version of GE-Proton, NTSync, or any other tool changes this.
Works on Linux
No kernel-level anti-cheat means no architectural barrier. Single-player games, games with no online component, and games using lightweight client-side detection typically work well through Proton. Check ProtonDB for compatibility rating and any game-specific tweaks, then launch normally.

The linux.org community notes that while Easy Anti-Cheat and BattlEye both run at user level under Proton, few developers have opted in because the Linux player base remains small relative to the effort required.

-- linux.org community forum, Anti-Cheat Compatibility List

Kernel-level anti-cheat -- the kind used by Valorant (Vanguard) and a handful of other titles -- cannot run on Linux at all. This is a hard architectural limit, not a compatibility layer gap. Vanguard requires Windows kernel access by design. These titles will not run on Linux and cannot be made to run through any available tool.

The Are We Anti-Cheat Yet? (opens in new tab) site maintains a real-time list with per-game status. Check it before buying any multiplayer title you plan to play on Linux.

Step 7: Performance Monitoring and Tuning

MangoHud gives you a real-time overlay showing FPS, GPU and CPU load, temperatures, and frame times. Launch any game with mangohud %command% to enable it. The overlay is configurable through ~/.config/MangoHud/MangoHud.conf.

GameMode, developed by Feral Interactive, applies a set of optimizations including setting the CPU governor to performance mode, renice-ing the game process, and disabling certain power management behaviors. Add gamemoderun before %command% to activate it. On Ubuntu:

install and verify GameMode
$ sudo apt install gamemode
$ gamemoded -t   # run self-test to confirm it's working

For GPU monitoring beyond what MangoHud shows, radeontop gives detailed AMD GPU utilization stats, and nvtop covers both AMD and Nvidia in an interactive terminal interface:

GPU monitoring tools
$ sudo apt install radeontop nvtop
$ nvtop   # interactive GPU monitor (AMD and Nvidia)
$ nvidia-smi dmon   # Nvidia-only continuous monitoring

Frame time spikes are often more meaningful than average FPS. A game averaging 90 FPS with regular 50ms frame time spikes feels worse than a game at 60 FPS with consistent 16ms frames. Watch frame time in MangoHud, not just the FPS counter.

Common Problems and Their Fixes

A few issues recur frequently enough across the Linux gaming community to be worth listing directly.

Game launches then immediately closes. First, check ProtonDB for known fixes. If none exist, enable PROTON_LOG=1 and search the log for "err:" entries. Then try switching Proton versions -- start with Proton Experimental, then try the latest GE-Proton build.

Severe stuttering on first run. This is almost always shader compilation. Wait for the Steam shader pre-cache to complete before launching. If you skipped it, let the game run through the first stuttery session -- the shader cache builds progressively, and subsequent sessions are significantly smoother.

Game runs but cutscenes are black or silent. Switch to GE-Proton. This is the primary use case for which the community builds GE-Proton -- media codec support for video that Valve cannot ship due to licensing.

Controller not recognized. Check Steam's controller settings under Steam > Settings > Controller. If the controller does not appear, add your user to the input group:

controller input group fix
$ sudo usermod -aG input $USER
# Log out and back in for the change to take effect
$ cat /proc/bus/input/devices | grep -A 5 -i gamepad   # verify

Game performs noticeably worse than Windows benchmarks suggest. Confirm the correct GPU is rendering. On hybrid laptop setups, the game may be rendering on the integrated GPU. Use prime-run %command% (on Nvidia hybrid systems) or confirm via MangoHud that GPU load is on the discrete card. Also verify your Proton version -- Proton 10 regressed performance for some titles compared to Proton 9, and rolling back to the stable 9.0 series resolves this for the affected games.

The Realistic Picture in 2026

Linux gaming in 2026 is not a compromise for people who do not care about gaming quality. It is a viable primary gaming platform for the vast majority of the Steam library. XDA-Developers reported in early 2026 (opens in new tab) that a solid Vulkan-capable driver stack and Proton support are all that is needed for a complete gaming experience -- kernel tweaks and manual optimizations are largely unnecessary once those foundations are in place.

The tinkering steps in this guide are real, but they are not endless. Set up your drivers once. Enable Steam Play once. Install GE-Proton once. Check ProtonDB before you buy a new title. Most games then simply work. The ones that do not almost always have a documented fix in the ProtonDB community reports. The ones that genuinely cannot work -- kernel-level anti-cheat titles -- are clearly flagged on Are We Anti-Cheat Yet so you know before you spend money.

The time investment is front-loaded. After the initial setup session, the day-to-day experience is clicking Play. If you want a broader post-install checklist beyond gaming, the guide on what to do immediately after installing Linux covers the essential system-level steps worth doing alongside your gaming setup.

Sources

How to Switch to Linux for Gaming

Step 1: Install GPU drivers

On AMD, the amdgpu driver ships inside the Linux kernel and activates automatically. Install the Mesa Vulkan packages for your distro to complete the stack. On Nvidia, use your distro's driver installer -- ubuntu-drivers autoinstall on Ubuntu -- then verify with nvidia-smi after rebooting. Confirm Vulkan is working by running vulkaninfo.

Step 2: Install Steam and enable Proton for all titles

Install Steam from your distro's package manager or the official installer. Open Steam Settings, go to the Compatibility tab, and enable Steam Play for all titles -- not just Valve-verified ones. Let the shader pre-cache downloads finish before launching games to avoid first-run stutter.

Step 3: Install GE-Proton and configure per-game settings

Install ProtonUp-Qt from your software center or via Flatpak. Use it to download the latest GE-Proton release, which adds media codec support and community patches. For games that need it, right-click the title in Steam, open Properties, go to the Compatibility tab, and select the GE-Proton version. Add launch option flags such as PROTON_USE_NTSYNC=1 or mangohud before %command% as needed for individual games.

Frequently Asked Questions

Do most games work on Linux through Proton?

Nearly 90% of Windows games run on Linux through Proton as of early 2026. Valve's Steam Play covers the vast majority of the Steam library, and the ProtonDB community database tracks compatibility ratings -- Platinum through Borked -- for individual titles. Games using kernel-level anti-cheat such as Valorant are the main exception and cannot run on Linux.

What is GE-Proton and when should I use it?

GE-Proton is a community-maintained fork of Valve's official Proton, built by GloriousEggroll. It includes additional patches, media codecs for video cutscenes that Valve cannot ship due to licensing, and fixes that have not yet been merged into the official release. Use GE-Proton when a game has black-screen cutscenes, crashes that do not reproduce on the official build, or when ProtonDB reports recommend a specific GE-Proton version.

Does anti-cheat software work on Linux?

Easy Anti-Cheat and BattlEye both have official support for Proton on Linux, but that support is opt-in per developer. Games where the developer has enabled Linux support -- including Elden Ring, Apex Legends, and PUBG -- work through Proton. Games using kernel-level anti-cheat, such as Valorant with Vanguard, cannot run on Linux due to an architectural incompatibility. The Are We Anti-Cheat Yet (opens in new tab) website tracks the status of individual titles.

Can I run non-Steam games on Linux?

Yes. Heroic Games Launcher handles Epic Games Store and GOG libraries, applying Proton or Wine on your behalf for Windows titles. Lutris covers a broader range of storefronts and includes community install scripts for games with complex setup steps. Both tools accept the same environment variable flags used in Steam's launch options, and ProtonUp-Qt manages GE-Proton installs for both Heroic and Steam from a single interface.

Should I dual-boot or go Linux-only?

Dual-booting is the practical starting point for anyone who is not certain their full game library is covered. You keep Windows available for kernel-level anti-cheat titles and any software with no Linux equivalent, while testing the Linux setup at your own pace. The main constraints are disk partitioning (plan for at least 150 GB on the Linux side) and understanding that NTFS game installs shared between both systems will hit edge cases with some Proton games that expect POSIX file semantics. For a clean gaming experience, install games fresh on the Linux ext4 or btrfs partition rather than pointing Steam at an existing NTFS library.