DEV Community

Cover image for The Complete Guide to Linux Gaming: Setting Up Wine, Proton, and Dependencies.
Hishantik Sarkar
Hishantik Sarkar

Posted on • Edited on

The Complete Guide to Linux Gaming: Setting Up Wine, Proton, and Dependencies.

For years, gaming on Linux was considered an adventure reserved for the most dedicated enthusiasts. Closed-source games simply didn't run, compatibility was hit-or-miss, and the general consensus was that if you wanted to play games, you needed Windows. That narrative has fundamentally shifted. With the rise of Wine-based compatibility layers, Steam's Proton initiative, and an increasingly supportive gaming ecosystem, Linux has become a legitimate platform for PC gaming. This guide will walk you through everything you need to know to set up your Linux system for gaming, including installation instructions for Ubuntu, Arch Linux, and other popular distributions.

Understanding the Linux Gaming Landscape

Before diving into installation commands, it's worth understanding what makes Linux gaming possible today. At the heart of this ecosystem lies Wine, a compatibility layer that translates Windows API calls into their Linux equivalents. Wine isn't an emulator in the traditional sense—it's a translation layer that allows Windows applications to run on Unix-like systems by intercepting system calls and replacing them with POSIX-compliant alternatives.

Proton, developed by Valve Corporation in collaboration with CodeWeavers, builds directly upon Wine with additional enhancements specifically tailored for gaming. Proton includes DirectX 9, 10, and 11 support (via Vulkan-based translation), improved controller compatibility, better fullscreen support, and deep integration with Steam. What makes Proton particularly powerful is that it comes pre-configured with Steam, meaning many Windows games can be played on Linux with zero additional setup.

The gaming landscape extends beyond just Wine and Proton, though. You'll also encounter tools like Lutris for managing games from multiple sources (GOG, Epic, standalone installers), PlayOnLinux for organizing Wine prefixes, and various compatibility launchers. Understanding these tools—and when to use each—will make your Linux gaming experience much smoother.

Prerequisites and System Preparation

Before installing any gaming-related software, ensure your system meets a few basic requirements. Your graphics drivers are the most critical component here. For NVIDIA users, you'll want the proprietary drivers rather than the open-source nouveau alternative, as they provide significantly better performance and proper Vulkan support. AMD and Intel users generally fare well with open-source drivers, though AMD's proprietary driver (AMDGPU-PRO) exists for enterprise users who need its specific feature set.

You should also verify that your system has the necessary 32-bit architecture support enabled. Many Windows games are 32-bit applications, and Wine requires 32-bit libraries to run them. Most modern distributions enable this by default, but we'll cover specific commands to ensure it's configured correctly on each platform.

Setting Up Ubuntu and Debian-Based Distributions

Ubuntu and its derivatives (Linux Mint, Pop!_OS, elementary OS) share a common package management foundation, making their setup process nearly identical. The process begins with enabling 32-bit architecture support and updating your package lists.

sudo dpkg --add-architecture i386
Enter fullscreen mode Exit fullscreen mode
sudo apt update && sudo apt upgrade -y
Enter fullscreen mode Exit fullscreen mode

Next, you'll install the foundational graphics libraries.

For NVIDIA graphics cards, the proprietary driver package includes everything you need:

sudo apt install nvidia-driver-525 libnvidia-gl-525 libnvidia-gl-525:i386 libvulkan1 libvulkan1:i386 mesa-vulkan-drivers mesa-vulkan-drivers:i386
Enter fullscreen mode Exit fullscreen mode

AMD users should install the Mesa Vulkan drivers and relevant libraries:

sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:i386 libgl1-mesa-dri libgl1-mesa-dri:i386 libgles2-mesa-dri libgles2-mesa-dri:i386
Enter fullscreen mode Exit fullscreen mode

Intel users typically need the same Mesa packages as AMD users, plus potentially the Intel Media driver for hardware-accelerated video playback:

sudo apt install intel-media-va-driver-non-free mesa-vulkan-drivers mesa-vulkan-drivers:i386
Enter fullscreen mode Exit fullscreen mode

Now comes theWine installation. The Ubuntu Wine team maintains a repository that offers newer Wine versions than the default repositories. Add the Wine repository with these commands:

sudo mkdir -p /etc/apt/keyrings
wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo gpg --dearmor -o /etc/apt/keyrings/winehq-archive.key
Enter fullscreen mode Exit fullscreen mode
echo "deb [signed-by=/etc/apt/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs) main"|sudo tee /etc/apt/sources.list.d/winehq.list
Enter fullscreen mode Exit fullscreen mode

Update your package list again and install Wine:

sudo apt update
sudo apt install --install-recommends winehq-stable
Enter fullscreen mode Exit fullscreen mode

For users who prefer the development or staging branches (which sometimes offer better compatibility with newer games), replace winehq-stable with winehq-devel or winehq-staging. The staging branch includes experimental patches that can improve compatibility with certain titles.

Proton installation is simpler since it integrates directly with Steam. Install Steam through the Ubuntu software center or via command line:

sudo apt install steam
Enter fullscreen mode Exit fullscreen mode

After installing Steam, launch it, go to Steam > Settings > Steam Play, and ensure "Enable Steam Play for all titles" is checked. Steam will automatically download and configure the appropriate Proton version for your games.

For enhanced gaming functionality, consider installing these additional packages:

sudo apt install gamemode libgamemode0 libgamemode-dev mangohud mangohud:i386 goverlay
Enter fullscreen mode Exit fullscreen mode

Gamemode automatically optimizes system resources when gaming, MangoHUD displays performance metrics during gameplay, and GOverlay provides a graphical interface for MangoHUD configuration.

Setting Up Arch Linux and Manjaro

Arch Linux offers a more hands-on approach to software installation, with the Arch User Repository (AUR) providing access to an enormous range of software, including gaming tools. Start by ensuring your system is up to date:

sudo pacman -Syu
Enter fullscreen mode Exit fullscreen mode

Enable the multilib repository for 32-bit support by editing /etc/pacman.conf, uncommenting the following lines:

[multilib]
Include = /etc/pacman.d/mirrorlist
Enter fullscreen mode Exit fullscreen mode

Sync the new repositories:

sudo pacman -Syu
Enter fullscreen mode Exit fullscreen mode

Install your graphics drivers. For NVIDIA systems:

sudo pacman -S nvidia nvidia-utils lib32-nvidia-utils vulkan-icd-loader lib32-vulkan-icd-loader
Enter fullscreen mode Exit fullscreen mode

AMD users should install:

sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon  libva-mesa-driver lib32-libva-mesa-driver
Enter fullscreen mode Exit fullscreen mode

Intel users can use:

sudo pacman -S mesa lib32-mesa intel-media-driver libva-intel-driver vulkan-intel lib32-vulkan-intel
Enter fullscreen mode Exit fullscreen mode

Wine installation on Arch is straightforward since it's in the official repositories. Install both the 64-bit and 32-bit versions:

sudo pacman -S wine wine-mono wine-gecko
Enter fullscreen mode Exit fullscreen mode
sudo pacman -S lib32-wine lib32-wine-mono lib32-wine-gecko
Enter fullscreen mode Exit fullscreen mode

For users who prefer the staging repository (which includes performance improvements and bug fixes not yet in stable Wine):

sudo pacman -S wine-staging wine-staging-mono wine-staging-gecko
Enter fullscreen mode Exit fullscreen mode
sudo pacman -S lib32-wine-staging lib32-wine-staging-mono lib32-wine-staging-gecko
Enter fullscreen mode Exit fullscreen mode

Proton installation is still handled through Steam, but Arch users might want to install the latest Proton version from the AUR (Arch User Repository):

yay -S protonup-qt
Enter fullscreen mode Exit fullscreen mode

ProtonUp-Qt is a tool that helps you install different versions of ProtonGE (a community-enhanced version of Proton) and DXVK for Steam and Lutris; it usually offers better compatibility with the latest games.

Gaming utilities are readily available in the official repositories:

sudo pacman -S gamemode mangohud goverlay protontricks
Enter fullscreen mode Exit fullscreen mode

Protontricks is a powerful script that helps you install Windows runtime libraries in specific Wine prefixes, which is crucial for running games that depend on DirectX or specific Windows components.

The Arch AUR also offers many specialized game-related tools:

yay -S lutris-git heroic-games-launcher-bin
Enter fullscreen mode Exit fullscreen mode

Lutris is a game manager that handles games from various platforms (GOG, Epic, emulators, indie games), while Heroic is a launcher specifically for the Epic Games Store.

Setting Up Fedora and Red Hat-Based Distributions

Fedora takes a slightly different approach, focusing on free and open-source software by default. Gaming setup begins with enabling the RPM Fusion repositories, which provide proprietary and non-free software:

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
Enter fullscreen mode Exit fullscreen mode
sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
Enter fullscreen mode Exit fullscreen mode

Refresh your package cache:

sudo dnf makecache
Enter fullscreen mode Exit fullscreen mode

Install graphics drivers. NVIDIA users should be aware that Fedora specifically requires the RPM Fusion version of the driver:

sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda libnvidia-vdpau-driver
sudo dnf install xorg-x11-drv-nvidia-libs.i686
Enter fullscreen mode Exit fullscreen mode

AMD and Intel users can use Mesa drivers:

sudo dnf install mesa-vulkan-drivers mesa-libGL
Enter fullscreen mode Exit fullscreen mode
sudo dnf install mesa-libGL.i686
Enter fullscreen mode Exit fullscreen mode

Wine installation on Fedora requires adding the WineHQ repository:

sudo dnf config-manager --add-repo https://dl.winehq.org/wine-builds/fedora/winehq.repo
Enter fullscreen mode Exit fullscreen mode
sudo dnf install winehq-stable
Enter fullscreen mode Exit fullscreen mode

For Plasma users (KDE Plasma desktop), Fedora also makes gaming straightforward with additional utilities:

sudo dnf install gamemode mangohud
Enter fullscreen mode Exit fullscreen mode

Steam installation follows a pattern similar to other distributions:

sudo dnf install steam
Enter fullscreen mode Exit fullscreen mode

Setting Up Lutris and Heroic Game Launcher for Wine/Proton

Linux gaming has become increasingly viable thanks to tools like Lutris and Heroic Game Launcher, which simplify running Windows games through compatibility layers. This guide walks you through installing these launchers, configuring Wine and Proton environments, and implementing DXVK for improved Direct3D performance. The focus here is on the post-driver-setup process, assuming your graphics drivers are already properly installed and configured.

Installing Lutris Across Different Distributions

Lutris serves as a meta-launcher that manages wine prefixes, runtime environments, and game configurations through an intuitive interface. The installation process varies slightly depending on your Linux distribution, so choose the commands appropriate for your system.

On Ubuntu-based distributions such as Ubuntu, Linux Mint, or Pop!_OS, add the official Lutris repository and install the application. First, install the necessary dependencies and repository signing key, then add the repository itself before finally installing Lutris. This process ensures you receive the latest stable version directly from the project's maintained packages rather than relying on potentially outdated distribution repositories.

For Fedora, RHEL, or CentOS users, the process involves enabling the RPM Fusion Free repository, which contains the Lutris package. After enabling the repository, a straightforward dnf install command fetches all required dependencies and the application itself. Arch Linux and Arch-based distributions like Manjaro benefit from Lutris being available in the Arch User Repository, where installation through your preferred AUR helper provides the most up-to-date version.

Installing Heroic Game Launcher

Heroic specializes in running Epic Games Store titles through Heroic Games Launcher, offering a dedicated interface for managing DRM-free and Epic-exclusive games without requiring the official Epic client. The installation approach mirrors the distribution-specific patterns established with Lutris.

Ubuntu users should download the official .deb package from the Heroic GitHub releases page and install it using dpkg or your preferred package manager, then fix any dependency issues that arise during initial installation.

Fedora users can add the Heroic COPR repository, which provides automated builds and updates through a one-time repository enablement command followed by a standard package installation.

Arch Linux users again have the advantage of AUR availability, where installation proceeds identically to Lutris through your chosen AUR helper.

Flatpak installation offers a distribution-agnostic approach that works across any distribution supporting Flatpak. Add the Flathub repository if you haven't already, then install Heroic through your software center or via command line using flatpak install, which ensures you receive a sandboxed, self-contained application package.

Configuring Wine and Proton Environments

Both launchers require Wine or Proton installations to run Windows applications, and proper configuration significantly impacts performance and compatibility. Lutris allows you to install multiple Wine versions simultaneously, toggling between them on a per-game basis.

Access the preferences menu, navigate to the runners section, and install recommended Wine versions—typically the latest stable release alongside a GE (Gaming Enhanced) build from the Glorious Eggroll project, which includes patches specifically for gaming performance.

Heroic integrates Proton functionality through Steam's Proton, which requires Steam to be installed on your system even if you don't actively use it for gaming.

Enable Proton in Heroic's settings, and the launcher automatically detects and utilizes available Proton versions.

For games that struggle with newer Proton releases, configuring an older version through Heroic's per-game settings often resolves compatibility issues.

Creating separate Wine prefixes for each game prevents library conflicts and allows fine-tuned optimization without affecting your entire library. Lutris creates prefixes automatically in your designated games directory, while Heroic manages Epic Games titles within its own prefix structure.

Implementing DXVK for Direct3D Performance

DXVK translates Direct3D 9, 10, and 11 calls to Vulkan, the graphics API native to Linux, providing substantial performance improvements for many Direct3D-based games. Both launchers support DXVK installation through their runner configuration interfaces.

In Lutris

select your Wine runner, access runner options, and enable DXVK

if it isn't included with your selected Wine version.

Manually downloading DXVK releases and extracting them into your game's prefix folder inside the drive_c/windows/system32 directory offers more control over versioning. Heroic includes DXVK management within its settings menu under the DXVK tab, allowing per-game version selection including DXVK-native and D9VK variants for older titles.

For maximum compatibility, match your DXVK version to your game era—newer DXVK releases work best with recent games, while older versions often prove more stable for titles from the Direct3D 9 or early 10 era. Testing different versions helps identify the optimal configuration for problematic titles.

Optimization Arguments and Distribution-Specific Tuning

Performance tuning involves export variables set before launching games, which both launchers support through their environment variable configuration fields. These optimizations apply regardless of your distribution.

The PROTON_NO_ESYNC=1 export addresses stability issues with certain games that don't properly handle esync, while PROTON_NO_FSYNC=1 serves the same purpose for games experiencing issues with newer kernel synchronization features. For AMD GPU users, RADV_PERFTEST=esync and the more aggressive vk_xwayland_scale=0 setting can improve frame pacing and reduce input latency.

Nvidia users should ensure the nvidia-drm modeset=1 kernel parameter appears in your bootloader configuration for proper Wayland support and reduced stuttering when using Vulkan applications. Frame rate limiters through mangoHud or the in-game settings prevent unnecessary GPU load that generates heat and power consumption without visual benefit.

Distribution-specific considerations include enabling Game Mode through gamemoded, which Ubuntu and Fedora users install from their default repositories. Arch users find gamemoded in the AUR. This daemon optimizes system resources when gaming by scaling CPU governors, preventing power-saving states from interfering with performance-sensitive applications.

Advanced Configuration and Optimization

With the basic installation complete, optimizing your gaming environment significantly improves performance and compatibility. Creating a dedicated Wine prefix for each game helps prevent conflicts between different games' dependencies and provides a clean environment for troubleshooting when issues arise.

Create a new Wine prefix using:

WINEPREFIX=~/.wine/mygame WINEARCH=win32 wineboot -u
Enter fullscreen mode Exit fullscreen mode

This command creates a 32-bitprefix in your home directory. The WINEPREFIX environment variable tells Wine where to store this particular installation, keeping it separate from your default prefix.

Installing specific Windows dependencies often resolves compatibility issues. Protontricks simplifies this process considerably:

protontricks -s "Game Name"
protontricks 1234567 dotnet48 vcrun2019
Enter fullscreen mode Exit fullscreen mode

Some games require specific graphics settings to run properly. You can configure Wine settings using winecfg:

winecfg
Enter fullscreen mode Exit fullscreen mode

The winecfg dialog allows you to set Windows version compatibility (Windows 10 recommended for most modern games), configure graphics settings including virtual desktop resolution, and manage DLL overrides for specific libraries.

For Steam games specifically, you can pass launch options to customize how games run. Right-click a game in your library, select Properties, and enter launch options:

PROTON_NO_ESYNC=1 %command%
Enter fullscreen mode Exit fullscreen mode

The PROTON_NO_ESYNC flag disables esync, which can resolve issues on some systems. Other useful proton environment variables include PROTON_DUMP_DEBUG_INFO (for debugging), and PROTON_USE_WINEDBG (which provides more detailed error reporting).

Troubleshooting Common Issues

Even with perfect setup, you'll occasionally encounter issues. Black screens upon launching games often indicate driver problems—ensure your Vulkan installation is correct and that you're using the appropriate graphics card. You can verify Vulkan functionality with:

vulkaninfo
Enter fullscreen mode Exit fullscreen mode

Performance issues frequently relate to system configuration rather than software setup. Gamemode should activate automatically for Steam games, but you can verify its operation:

gamemoded -s
Enter fullscreen mode Exit fullscreen mode

Sound problems in games sometimes require configuring Wine to use a specific audio backend. Edit your winecfg and navigate to the Audio tab to experiment with different options if sound isn'tworking correctly.

Games that crash on startup may need specific Windows DLLs or runtime libraries. The Wine Application Database (winehq.org) maintains extensive compatibility ratings and user-reported solutions for thousands of games.

The Broader Linux Gaming Ecosystem

With your gaming environment configured, exploring the broader Linux gaming ecosystem enhances your experience significantly. Lutris connects to multiple game platforms, automatically configuring Wine prefixes and dependencies for hundreds of games. After installation, you can add games through Lutris' browser extension, with most major titles having community-contributed installation scripts.

For Epic Games Store titles, Heroic provides a native Linux experience:

flatpak install flathub com.heroicgameslauncher.HGL
Enter fullscreen mode Exit fullscreen mode

Heroic supports importing your Epic library and managing games similarly to Steam, with Proton compatibility built-in.

Linux gaming continues evolving rapidly, with the Steam Deck demonstrating that Linux can provide an excellent gaming experience even for casual users. The tools and techniques covered in this guide position you at the forefront of this transformation, giving you access to thousands of games on an operating system that respects your freedom and privacy.

The community around Linux gaming is remarkably active, with dedicated forums, Discord servers, and wiki pages documenting solutions for even the most obscure issues. When you encounter problems, these communities offer valuable support, and contributing your own solutions helps everyone in the ecosystem.

Your Linux gaming setup is now complete. Start Steam, enable Steam Play, and browse your library—many of your games will work immediately. For titles that need additional configuration, the tools and knowledge you now possess will guide you through optimizations that make Linux gaming not just viable, but in many ways preferable to other platforms.

Top comments (2)

Collapse
 
larsmartin4 profile image
larsmartin4

wget github.com/doitsujin/dxvk/releases... (Not Found)
tar -xvf dxvk.tar.gz
cd dxvk-x.x
./setup_dxvk.sh install

Collapse
 
hishantik profile image
Hishantik Sarkar • Edited

Better go with protonup-qt tool that helps you manage and install almost all the dxvk as well as wine/proton versions

flatpak install flathub net.davidotek.pupgui2
Enter fullscreen mode Exit fullscreen mode

Some comments may only be visible to logged-in visitors. Sign in to view all comments.