Linux gaming is no longer “impossible”
A few years ago, saying you wanted to game on Linux would get you laughed at. The default answer was always: “Just install Windows.” That’s changed. Valve started pouring money into Proton back in 2018, and today over 70% of Steam games run on Linux according to ProtonDB statistics — including demanding titles like Cyberpunk 2077 and Elden Ring.
I’ve been using Fedora as my main development machine for two years. At first I only planned to use it for coding, but then I tried gaming on weekends and was genuinely surprised: many games actually ran better than on Windows. The problem isn’t that Linux can’t run them — it’s that most guides stop at “install Steam and run it,” skipping the best part: performance optimization and troubleshooting when games refuse to launch.
This article goes straight into the practical workflow: drivers done right, Proton-GE instead of stock Proton, and MangoHud to monitor FPS/GPU/CPU right inside the game.
Proton, Proton-GE, and Wine: What’s the difference?
Confusing these leads to installing the wrong tool and debugging in the wrong direction — a massive time sink.
- Wine: A low-level compatibility layer that translates Windows API calls to Linux. Not optimized for gaming — low FPS, frequent crashes.
- Proton: Valve’s fork of Wine. Integrates DXVK (DirectX 9/10/11 → Vulkan), VKD3D-Proton (DX12 → Vulkan), plus dozens of gaming-specific patches. This is the official Proton shipped with Steam.
- Proton-GE: A community build maintained by GloriousEggroll. Updates 2–4 weeks ahead of official Proton, includes additional patches for specific games like media codecs for cutscenes and fixes for certain anti-cheat implementations. Many games that crash with stock Proton run fine with Proton-GE.
Practical strategy: use Proton-GE as the default. Only fall back to official Proton when GE causes issues.
First step: Drivers and Vulkan
Linux gaming depends heavily on Vulkan. It’s the high-performance graphics API that replaces OpenGL in most modern games. Wrong driver or missing Vulkan → game crashes or runs at 20 FPS no matter what tools you install.
AMD GPU (the better choice for Linux gaming)
The AMD driver (AMDGPU) has been in the Linux kernel since kernel 4.2. You only need to install the userspace components:
# Enable RPM Fusion if not already done
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
# Install Vulkan and Mesa (i686 packages needed for 32-bit games)
sudo dnf install vulkan-tools mesa-vulkan-drivers mesa-vulkan-drivers.i686
# Verify Vulkan detects your GPU
vulkaninfo --summary
NVIDIA GPU
# NVIDIA driver via RPM Fusion
sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda
# Vulkan for NVIDIA
sudo dnf install vulkan-loader vulkan-loader.i686
# Reboot then verify
nvidia-smi
vulkaninfo --summary
Common pitfall with NVIDIA on Fedora: Fedora enables Secure Boot by default. If after rebooting the driver doesn’t load (the nvidia-smi command returns an error), you have two options: manually sign the kernel module or disable Secure Boot in the BIOS. The latter is faster but reduces security — your call. If you’re also managing system-wide encryption policies, see Mastering Fedora Security: Managing System-Wide Encryption with update-crypto-policies for how Fedora handles these security layers together.
Installing Steam and enabling Steam Play
Install Steam from RPM Fusion
# Steam needs 32-bit libraries — RPM Fusion handles this
sudo dnf install steam
# Or Flatpak for better sandboxing
flatpak install flathub com.valvesoftware.Steam
I go with native Steam over Flatpak because integrating Proton-GE is simpler. Flatpak sandboxing is solid, but you need extra steps to grant filesystem permissions — easy to mess up when you’re just getting started. If you do go the Flatpak route, Managing Flatpak Applications on Fedora covers sandboxing and storage optimization in detail.
Enable Steam Play for all games
Open Steam → Settings → Compatibility → Enable Steam Play for all other titles → select the latest Proton version. This step allows running Windows games through Proton, including games with no native Linux build.
Installing Proton-GE — the step that makes the real difference
Two approaches: manual installation or using ProtonUp-Qt. Start with the easy one.
Method 1: ProtonUp-Qt (recommended)
flatpak install flathub net.davidotek.pupgui2
flatpak run net.davidotek.pupgui2
Inside ProtonUp-Qt: click Add version → select GE-Proton → choose the latest version → Install. Restart Steam when done.
Method 2: Manual installation
mkdir -p ~/.steam/root/compatibilitytools.d
# Replace GE-Proton9-27 with the latest version from GitHub
wget https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton9-27/GE-Proton9-27.tar.gz
tar -xf GE-Proton9-27.tar.gz -C ~/.steam/root/compatibilitytools.d/
killall steam && steam
After Steam restarts: find the game in your Library → right-click → Properties → Compatibility → Force the use of a specific Steam Play compatibility tool → select GE-Proton.
MangoHud: in-game overlay for monitoring FPS
MangoHud displays system information directly on your game screen — FPS, GPU temp, CPU usage, VRAM, frametime. When a game stutters unexpectedly, MangoHud immediately tells you whether the GPU is throttling or the CPU is the bottleneck.
Install MangoHud
sudo dnf install mangohud mangohud.i686
# Quick test
mangohud glxgears
Configure MangoHud
mkdir -p ~/.config/MangoHud
cat > ~/.config/MangoHud/MangoHud.conf << 'EOF'
# Overlay position
position=top-left
# Information to display
gpu_stats
gpu_temp
gpu_power
cpu_stats
cpu_temp
ram
vram
fps
frametime
frame_timing
# 0 = no FPS cap
fps_limit=0
text_color=FFFFFF
font_size=20
EOF
Enable MangoHud for a Steam game
Go to the game → right-click → Properties → General → Launch Options, and add:
MANGOHUD=1 %command%
To enable it for all games at once, add this to ~/.bashrc:
export MANGOHUD=1
Further optimization: GameMode and environment variables
GameMode by Feral Interactive
A small but effective tool: automatically switches the CPU governor to performance while a game is running, then restores it when you exit. On some machines, GameMode adds 5–15% more FPS.
sudo dnf install gamemode
# Verify the daemon is running correctly
gamemoded -t
Add to Launch Options:
MANGOHUD=1 gamemoderun %command%
Useful environment variables
# Show DXVK's built-in FPS overlay (lighter alternative to MangoHud)
DXVK_HUD=fps %command%
# Enable Proton logging for debugging — log saved to ~/steam-{AppID}.log
PROTON_LOG=1 %command%
Full Launch Options for a solid setup:
MANGOHUD=1 gamemoderun %command%
Debugging when a game won’t run
This is the section most guides skip. In practice, the first time you launch a new game there’s roughly a 30–40% chance you’ll hit an issue — especially with older games or games using anti-cheat.
Check ProtonDB before you buy
Go to ProtonDB.com and search for the game. A Platinum/Gold rating means it runs great with no tweaks needed. Silver means a few minor adjustments are required. Bronze/Borked — skip it or wait for an update.
Step-by-step debugging process
# Enable Proton logging in Launch Options
PROTON_LOG=1 %command%
# After the game crashes, look for the root cause
cat ~/steam-APPID.log | grep -i error
# More complete Steam log
cat ~/.local/share/Steam/logs/content_log.txt
Common errors
- Crash immediately on launch: Try switching to Proton-GE. If the game uses an older DirectX 8/9 renderer, add
PROTON_USE_WINED3D=1to fall back to the older renderer. - Anti-cheat block (EAC, BattlEye): Only works when the developer has actively enabled Linux support. Check ProtonDB to see if it’s been enabled — there’s no valid workaround here.
- Black screen but audio plays: Usually Vulkan failing to initialize correctly. Add
PROTON_USE_WINED3D=1 %command%to use OpenGL instead. - Abnormally low FPS despite a capable GPU: Open MangoHud and check whether the CPU is throttling. On a laptop, run
powerprofilesctl set performancebefore launching the game.
Wrapping up
This setup has been running smoothly for me for over a year: Fedora 40, RX 6700 XT, native Steam + Proton-GE 9.x, MangoHud always on. Cyberpunk 2077 runs at ~85 FPS on Ultra 1080p — no worse than Windows.
The toolkit to remember, in order: Vulkan driver → Steam (RPM Fusion) → Proton-GE via ProtonUp-Qt → MangoHud + GameMode. And before buying a new game, check ProtonDB first — it’ll save you a lot of headaches. For keeping your gaming system up to date without breaking anything, Mastering dnf-automatic: Automating Fedora Updates Safely and Professionally is worth a read.
Now I run a single machine. I code on it and game on weekends. Dual-booting is a thing of the past.

