Linux for Gaming: Steam, Proton, and Everything You Need

Tested on: Ubuntu 24.04 LTS · Fedora 41 · Arch Linux · Pop!_OS 22.04 — NVIDIA and AMD GPUs — Last updated: June 2026
Linux gaming has crossed a threshold. Proton, mature GPU drivers, and Valve's Steam Deck forcing developer attention have turned Linux into a first-class gaming platform — not a compromise. Over 80% of Steam's catalog runs on Linux today, and most titles perform within 5% of Windows. This guide covers the full stack: drivers, Steam, Proton, Proton-GE, Lutris, Heroic, performance tuning, anti-cheat realities, and controller setup.
Prerequisites
- A working Linux installation (Ubuntu 24.04, Fedora 41, Arch, or similar)
- sudo privileges
- Internet connection for package downloads
- GPU with Vulkan support (Radeon RX 400 series+, GeForce GTX 900 series+, or Intel Arc)
- At least 8 GB RAM; 16 GB strongly recommended for modern games
The Current State of Linux Gaming
Three things changed everything. First, the Steam Deck — 8+ million units running SteamOS (Arch-based Linux) forced game developers to care about Linux compatibility for the first time. Second, Proton matured from a promising experiment into a production-grade compatibility layer. Third, GPU driver quality on Linux caught up: NVIDIA's proprietary driver and AMD's open-source amdgpu stack are both genuinely excellent in 2026.
What still doesn't work: games using kernel-level anti-cheat that explicitly blocks non-Windows environments — primarily Vanguard (Valorant, League of Legends). Everything else is fair game. Most single-player titles, indie games, and a large fraction of multiplayer games work with zero configuration or minor tweaks.
GPU Drivers: Do This First
Driver setup is the single highest-impact step. A misconfigured GPU means poor performance, crashes, or games that simply refuse to launch. Get this right before touching Steam.
NVIDIA
On Ubuntu, the ubuntu-drivers tool selects the recommended driver version automatically:
# Let Ubuntu pick the right driver:
sudo ubuntu-drivers install
# Or install a specific version explicitly:
sudo apt install nvidia-driver-560 -y
# Verify the driver loaded:
nvidia-smiExpected output:
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| 0 NVIDIA GeForce RTX 4070 Off | 00000000:01:00.0 On | N/A |
+-----------------------------------------------------------------------------------------+On Fedora, use RPM Fusion (must be enabled first):
sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda -y
# Wait for the kmod to compile — takes 2-5 minutes on first boot after install
sudo systemctl rebootOn Arch:
sudo pacman -S nvidia nvidia-utils lib32-nvidia-utilsWayland note: NVIDIA 555+ drivers support Wayland properly including VRR/FreeSync. If you're on an older driver or experiencing issues, log out and select "Ubuntu on Xorg" at the login screen as a fallback.
AMD
AMD's open-source amdgpu driver ships in the kernel — no separate installation needed for RX 5000 series and newer. What you do need is Vulkan support, which most modern games require:
# Ubuntu/Debian — install Vulkan and Mesa:
sudo apt install vulkan-tools libvulkan1 mesa-vulkan-drivers mesa-utils -y
# Fedora:
sudo dnf install vulkan-tools mesa-vulkan-drivers -y
# Arch:
sudo pacman -S vulkan-radeon lib32-vulkan-radeon vulkan-tools
# Verify AMD GPU is detected and driver is active:
lspci | grep -i amd | grep -i vga
glxinfo | grep "OpenGL renderer"
# Verify Vulkan is functional:
vulkaninfo 2>&1 | grep "GPU id"Expected Vulkan output:
GPU id = 0 (AMD Radeon RX 7800 XT)Intel (Integrated and Arc)
# Intel drivers are kernel-built-in. For Arc GPUs, add media libraries:
sudo apt install intel-media-va-driver-non-free libva-utils -y
# Verify:
vainfo | grep "vainfo: Driver version"Install and Configure Steam
Ubuntu / Debian / Linux Mint
# Steam requires 32-bit libraries — enable multiarch first:
sudo dpkg --add-architecture i386
sudo apt update
# Install Steam from Ubuntu's repositories:
sudo apt install steam -y
# Alternative: download the official .deb from Valve directly:
wget https://cdn.akamai.steamstatic.com/client/installer/steam.deb
sudo apt install ./steam.deb -yFedora
# Requires RPM Fusion Free and Nonfree enabled:
sudo dnf install
"https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm"
"https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm" -y
sudo dnf install steam -yArch Linux
# Enable multilib in /etc/pacman.conf — uncomment [multilib] and its Include line:
sudo sed -i '/[multilib]/,/Include/s/^#//' /etc/pacman.conf
sudo pacman -Sy
sudo pacman -S steamFlatpak (Distro-Agnostic)
flatpak install flathub com.valvesoftware.Steam -yFlatpak Steam works but has two drawbacks: slight performance overhead from the sandbox, and restricted filesystem access that can complicate game installations outside ~/.var. Native packages are preferred for gaming.
Proton and Steam Play
Proton is Valve's compatibility layer built on Wine, DXVK (DirectX 9/10/11 → Vulkan), VKD3D-Proton (DirectX 12 → Vulkan), Steam Linux Runtime containers, and hundreds of game-specific patches. When enabled, Steam downloads and runs Windows-only games transparently.
Enable Steam Play for All Titles
- Open Steam → Steam → Settings → Compatibility
- Toggle "Enable Steam Play for all other titles" on
- Select Proton Experimental or the latest stable version from the dropdown
- Click OK and restart Steam
Every game in your library — including Windows-only titles — now has a Play button.
Choosing a Proton Version
Per-game version override: right-click the game → Properties → Compatibility → Force specific Steam Play compatibility tool.
- Proton Experimental: Bleeding edge, updated frequently. Best choice for newly released games.
- Proton 9.x: Current stable branch. Solid default for most titles.
- Proton 8.x: Occasionally better for older games with regressions in 9.x.
- Proton-GE: Community fork. Often fixes things official Proton doesn't. See next section.
Proton-GE: The Community-Patched Fork
GloriousEggroll's Proton-GE ships with patches Valve hasn't merged yet, additional media codecs for cutscene playback, and fixes targeting specific games. Many Linux gamers run it as their default. Install it through ProtonUp-Qt — the graphical tool that manages alternative Proton versions and Wine builds.
# Install ProtonUp-Qt via Flatpak:
flatpak install flathub net.davidotek.pupgui2 -y
# Launch it, click "Add version", select GE-Proton, install.
# It automatically places files in the right directory.For manual installation without ProtonUp-Qt:
# Create the custom compatibility tools directory:
mkdir -p ~/.steam/root/compatibilitytools.d/
# Download the latest release tarball from:
# https://github.com/GloriousEggroll/proton-ge-custom/releases
# Then extract it:
tar -xf GE-Proton9-20.tar.gz -C ~/.steam/root/compatibilitytools.d/
# Restart Steam — GE-Proton9-20 now appears in the compatibility tool dropdownChecking Game Compatibility Before You Buy
protondb.com is essential. Community-reported compatibility ratings tell you exactly how well a specific game runs, which Proton version works best, and what launch options to set. The rating tiers:
- Platinum: Works flawlessly out of the box, no configuration needed
- Gold: Runs well with minor tweaks (different Proton version, one launch flag)
- Silver: Playable with some workarounds or minor issues
- Bronze: Launches but has significant problems affecting experience
- Borked: Does not work at all
Check ProtonDB before purchasing any Windows-only game. User reports also include specific launch options and Proton version recommendations that save hours of troubleshooting.
For games that have native Linux builds — Counter-Strike 2, Dota 2, the Portal series, Left 4 Dead 2, Team Fortress 2 — native always beats Proton for latency and stability. Filter by Linux in Steam's store search.
Lutris: Everything Outside Steam
Lutris manages non-Steam games through a community database of install scripts. It covers GOG, EA App, Ubisoft Connect, Blizzard Battle.net, emulators, and individual game installers. Scripts handle Wine configuration, dependencies, and runtime setup automatically.
# Ubuntu/Debian:
sudo add-apt-repository ppa:lutris-team/lutris -y
sudo apt install lutris -y
# Fedora:
sudo dnf install lutris -y
# Arch:
sudo pacman -S lutris
# Flatpak:
flatpak install flathub net.lutris.Lutris -yOpen Lutris and search for your game. Click the install button — Lutris downloads the installer script from its database and walks you through setup. For Battle.net: search "Battle.net" in Lutris and run the installer script; World of Warcraft, Diablo IV, and Overwatch 2 all become manageable through a single interface.
Heroic Games Launcher: Epic Games and GOG
Heroic is the go-to client for Epic Games Store and GOG libraries on Linux. It uses Legendary as the Epic backend and gogdl for GOG, wraps them in a clean GUI, and configures Wine/Proton automatically.
# Flatpak (recommended — gets updates independent of your distro):
flatpak install flathub com.heroicgameslauncher.hgl -yAfter installation: open Heroic, sign into your Epic or GOG account, browse your library, click Install. Heroic selects a Wine/Proton build automatically. For better compatibility with specific games, go to game Settings and switch the Wine version to a Proton-GE build installed via ProtonUp-Qt.
Performance Optimization
GameMode
GameMode is a Feral Interactive daemon that applies system-level optimizations when games launch: CPU governor switched to performance mode, GPU performance hints, process scheduler adjustments.
sudo apt install gamemode -y # Ubuntu/Debian
sudo dnf install gamemode -y # Fedora
sudo pacman -S gamemode # Arch
# Test that it's working:
gamemoded -t
# Add to Steam launch options (right-click game → Properties → Launch Options):
gamemoderun %command%MangoHud: Performance Overlay
MangoHud renders a configurable overlay showing FPS, frametime graph, CPU/GPU usage, temperatures, and VRAM usage — equivalent to MSI Afterburner on Windows.
sudo apt install mangohud -y # Ubuntu/Debian
sudo dnf install mangohud -y # Fedora
sudo pacman -S mangohud # Arch
# Enable per-game in Steam Launch Options:
MANGOHUD=1 %command%
# Combine with GameMode:
MANGOHUD=1 gamemoderun %command%Key Steam Launch Options
Set these in game Properties → Launch Options:
# Core performance combo — use this as a baseline:
MANGOHUD=1 gamemoderun %command%
# Disable ESync (fixes crashes in some games):
PROTON_NO_ESYNC=1 %command%
# Disable FSync (if ESync disable doesn't help):
PROTON_NO_FSYNC=1 %command%
# AMD FSR upscaling for fullscreen Windows games via Wine:
WINE_FULLSCREEN_FSR=1 WINE_FULLSCREEN_FSR_STRENGTH=2 %command%
# FSR_STRENGTH: 1
