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

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-smi

Expected 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 reboot

On Arch:

sudo pacman -S nvidia nvidia-utils lib32-nvidia-utils

Wayland 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 -y

Fedora

# 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 -y

Arch 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 steam

Flatpak (Distro-Agnostic)

flatpak install flathub com.valvesoftware.Steam -y

Flatpak 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

  1. Open Steam → Steam → Settings → Compatibility
  2. Toggle "Enable Steam Play for all other titles" on
  3. Select Proton Experimental or the latest stable version from the dropdown
  4. 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 dropdown

Checking 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 -y

Open 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 -y

After 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


Go up