Appendix F

Gaming
on Linux

Linux gaming is not a workaround anymore. Steam, Proton, and the surrounding toolchain handle most of the Windows library without modification. This page gets you set up and tuned.

GPU drivers
Steam + Proton
gamemode · MangoHUD

Before You Install Anything

GPU and drivers.

Linux gaming experience splits cleanly on GPU brand. Not because one card is faster — because the driver situation is fundamentally different.

AMD Just works
The open-source amdgpu driver ships in the Linux kernel. There is no package to install, no signing required, no proprietary module to break after a kernel update. Plug in the card, boot, and Vulkan is available. Some older cards need firmware from the firmware-amd-graphics package, but that's a one-liner.

If you're buying a GPU specifically for Linux gaming, AMD is the path of least friction.
NVIDIA Totally workable
NVIDIA requires the proprietary driver. It needs to be installed manually, and it must match your kernel version. On Debian Testing this is straightforward — the driver packages handle the kernel module build automatically. NVIDIA's recent move to an open kernel module (not the same as open source, but better integrated) has improved the experience considerably on Turing+ (RTX 20xx) and newer cards.

If you already own NVIDIA hardware, don't let this stop you. It works.

AMD — verify Vulkan is ready

# Firmware (some older cards need this; safe to run either way)
sudo apt install firmware-amd-graphics

# Vulkan userspace driver + tools
sudo apt install mesa-vulkan-drivers vulkan-tools

# Also add 32-bit Vulkan support (needed for many older games via Proton)
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install mesa-vulkan-drivers:i386

# Verify — should list your GPU
vulkaninfo --summary

NVIDIA — driver install on Debian Testing

NVIDIA drivers live in the non-free and non-free-firmware sections. Check that your /etc/apt/sources.list includes them:

/etc/apt/sources.list — required entries for NVIDIA
# Each line must include non-free and non-free-firmware
deb http://deb.debian.org/debian testing main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security testing-security main contrib non-free non-free-firmware
# Identify your GPU
lspci | grep -i 'vga\|3d\|display'

# Install kernel headers + driver + firmware
sudo apt install linux-headers-$(uname -r) nvidia-driver firmware-misc-nonfree

# 32-bit libs for Proton/Steam (needed for many games)
sudo apt install nvidia-driver-libs:i386

# Reboot — driver loads at next boot
sudo reboot

# Verify after reboot
nvidia-smi

NVIDIA + Wayland

NVIDIA and Wayland compositors (Sway, Hyprland) have historically been rocky. On Debian Testing with Fluxbox or XFCE — both X11 — you will not hit this. If you move to a Wayland compositor later, check that compositor's NVIDIA notes first. X11 with NVIDIA is rock solid.

The Core Stack

Steam and Proton.

Proton is Valve's compatibility layer — a Wine fork with DXVK (DirectX→Vulkan), VKD3D-Proton (DirectX 12→Vulkan), Steam Linux Runtime containers, and a pile of game-specific patches. It ships inside Steam and requires no separate install. Most of your Steam library will just run.

Install Steam

Two options. Flatpak is cleaner — Steam's dependencies stay containerized. Native is simpler if you prefer not to set up Flatpak.

A Flatpak (recommended) Sandboxed · always current
# Install Flatpak if not already present
sudo apt install flatpak

# Add Flathub (the main Flatpak repository)
flatpak remote-add --if-not-exists flathub \
  https://flathub.org/repo/flathub.flatpakrepo

# Install Steam
flatpak install flathub com.valvesoftware.Steam

# Launch
flatpak run com.valvesoftware.Steam

Proton-GE goes in ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/ when using the Flatpak version — see below.

B Native Debian package From Debian repos · requires i386
# Enable 32-bit architecture (Steam requires it)
sudo dpkg --add-architecture i386
sudo apt update

# Install Steam (lives in contrib)
# Ensure contrib is in sources.list (see sources section above)
sudo apt install steam

# Launch from your application menu or:
steam

Enable Proton for all games

By default, Steam only runs games that have a native Linux build. Turn on Proton for your entire library in one setting.

Steam → Settings → Compatibility

Enable "Enable Steam Play for all other titles" and set the Proton version to the latest non-experimental release. Steam Play for supported titles is already on by default — this setting extends it to your entire library.

Proton-GE — community-patched Proton

GloriousEggroll's Proton builds include patches that haven't landed in official Proton yet: extra codec support, game-specific fixes, and faster DXVK/VKD3D builds. Many games that stutter or refuse to launch under official Proton work fine under GE. Check the releases page at github.com/GloriousEggroll/proton-ge-custom — the latest is always listed there.

Install Proton-GE manually Works for both native and Flatpak Steam
# Download GE-ProtonX-YY.tar.gz from the GitHub releases page
# Replace the filename with the actual latest version

## Native Steam:
mkdir -p ~/.steam/root/compatibilitytools.d
tar -xf GE-ProtonX-YY.tar.gz -C ~/.steam/root/compatibilitytools.d/

## Flatpak Steam:
mkdir -p ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d
tar -xf GE-ProtonX-YY.tar.gz -C \
  ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/

# Restart Steam — GE-Proton now appears in the Compatibility dropdown
# Right-click game → Properties → Compatibility → Force Proton version

ProtonUp-Qt is a GUI tool that manages Proton-GE (and other custom Proton builds) for you. Available via Flatpak: flatpak install flathub net.davidotek.pupgui2

protondb.com — check before you buy or troubleshoot

ProtonDB is a community database of compatibility reports. Search any game and see real player results with their hardware, Proton version, and any tweaks needed. Use it before purchasing a game on sale, and before spending an hour debugging something that has a known one-line fix in the reports.

Platinum — runs perfectly out of the box Gold — runs with minor tweaks Silver — some issues but playable Bronze — runs, with significant problems Borked — does not run

Gold and above covers the overwhelming majority of the Steam library.

Squeeze Out More FPS

gamemode and MangoHUD.

Two tools that are worth installing immediately and then forgetting about. Both work via Steam launch options — add them once per game and they run silently.

gamemode

A daemon from Feral Interactive that applies system optimizations when a game is running: sets the CPU governor to performance, bumps I/O priority, puts the GPU in performance mode (where supported), and relinquishes all of it when the game exits. Automatic, reversible, no configuration required.

sudo apt install gamemode

# Verify the daemon starts correctly
gamemoded -t

# Add to Steam launch options (right-click game → Properties → Launch Options):
gamemoderun %command%

MangoHUD

An in-game overlay displaying FPS, frametime graph, CPU/GPU utilization and temperature, RAM, and VRAM usage — all while the game is running. Invaluable for spotting whether you're CPU-bound or GPU-bound, and for verifying that gamemode and driver changes are actually having an effect.

sudo apt install mangohud

# Add to Steam launch options:
MANGOHUD=1 %command%

# Combined with gamemode (the recommended combination):
MANGOHUD=1 gamemoderun %command%
MangoHUD config file ~/.config/MangoHud/MangoHud.conf

Without a config file, MangoHUD shows a default set of metrics. Drop this in ~/.config/MangoHud/MangoHud.conf to customize what's displayed. Toggle the overlay on/off with Right Shift + F12 while in-game.

~/.config/MangoHud/MangoHud.conf
# Position: top-left, top-right, bottom-left, bottom-right
position=top-left

# What to show
fps
frametime
cpu_stats
cpu_temp
gpu_stats
gpu_temp
ram
vram

# History length for the frametime graph
histogram

# Font size (default is fine; increase on HiDPI)
font_size=24

Beyond Steam

Epic, GOG, and Windows-only games.

Steam isn't the whole library. These tools cover the rest — from Epic and GOG storefronts to individual Windows executables that need a managed Wine environment.

Heroic Games Launcher
Free · Epic + GOG + Amazon
Open-source frontend for Epic Games Store, GOG, and Amazon Prime Gaming. Manages its own Wine/Proton installations, downloads games directly, and integrates with gamemode and MangoHUD. The go-to for Epic titles — Fortnite excluded (anti-cheat doesn't run on Linux). Available via Flatpak: flatpak install flathub com.heroicgameslauncher.hgl
Lutris
Free · Universal game manager
Game manager and installer for everything: Steam, GOG, Battle.net, emulators, native Linux games, and bare Wine. Community-maintained "install scripts" handle per-game Wine configuration automatically. Best for games that need specific Wine versions or DLL overrides — retro games, old Blizzard titles, niche Windows games. sudo apt install lutris
CrossOver
Paid · ~$24/yr or ~$74 one-time
Commercial Wine from CodeWeavers — the company that funds most of Wine's development. CrossOver wraps Wine in a polished GUI, handles per-application bottles automatically, and ships with extra patches and codec support that take time to upstream into Wine proper. Best choice if you want Windows-app compatibility without configuration — install a game or app, click Run, it either works or it doesn't. Worth it for non-technical setups or specific apps that need more than vanilla Wine. Available at codeweavers.com.
Wine (bare)
Free · Direct Windows layer
sudo apt install wine wine32 wine64. Run a Windows executable with wine game.exe. No GUI, no bottle management — just raw translation. Use it for small standalone Windows utilities or when you know exactly what environment a program needs. For games, prefer Lutris or CrossOver; they manage Wine prefixes and per-application settings that bare Wine leaves to you.

Anti-cheat is the hard limit

Games using kernel-level anti-cheat — Easy Anti-Cheat (EAC) with the native Linux module not enabled by the developer, BattlEye without the Linux runtime, or Vanguard — will not work under Proton or Wine. This is not a Proton failure; the kernel module simply does not run. Check ProtonDB before buying competitive multiplayer games. EAC and BattlEye have Linux-compatible runtimes that many developers have opted into — it's a per-game publisher decision.

When It Doesn't Work

Common issues and fixes.

Game doesn't launch at all First steps
# Run Steam from a terminal to see real error output
steam
# (or: flatpak run com.valvesoftware.Steam)

# Enable Steam console for per-game logs
# Steam launch option that shows Proton output:
PROTON_LOG=1 %command%
# Log appears at ~/steam-[AppID].log

# Check Vulkan is working (common root cause)
vulkaninfo --summary

Also check ProtonDB for the game — if there's a known fix, someone has already documented the exact launch option or registry tweak needed.

Poor performance or stuttering Shader compilation + governor

Stuttering on first play is almost always shader compilation. Proton compiles DXVK/VKD3D shaders on first run and caches them. Play for 20–30 minutes; the stutters diminish as the cache builds. Steam also pre-caches shaders in the background before you launch — let it finish.

# Verify gamemode is activating
gamemoded -s

# Check current CPU governor (should switch to "performance" during play)
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# If gamemode isn't recognized, add user to gamemode group
sudo usermod -aG gamemode $USER
# then log out and back in
Missing fonts / garbled UI in game menus Wine font issue
# Install common Windows fonts for Wine/Proton
sudo apt install ttf-mscorefonts-installer

# Or via winetricks (handles font installation per-prefix)
sudo apt install winetricks
winetricks allfonts
NVIDIA: game crashes or black screen Driver / kernel mismatch
# Check driver is loaded correctly
nvidia-smi
lsmod | grep nvidia

# If nvidia-smi fails — driver and kernel version mismatch
# Reinstall headers for the running kernel, then rebuild:
sudo apt install --reinstall linux-headers-$(uname -r) nvidia-driver
sudo reboot

# For games that crash, try disabling GSP firmware (known fix for some Proton games)
# Add to Steam launch options:
__GL_GSYNC_ALLOWED=0 __GL_VRR_ALLOWED=0 %command%
Game uses the wrong monitor or wrong resolution Fullscreen / display issues

On multi-monitor setups, Proton games can launch on the wrong screen. Force the game to use your primary monitor with:

# Force Proton to use a specific display
DISPLAY=:0 %command%

# For borderless windowed (often fixes display selection)
# Set in-game if available, or add:
PROTON_USE_WINED3D=0 %command%

# On HiDPI + xrandr --scale setups, some games see the unscaled
# resolution. Set in-game resolution manually to match logical res.