DEV Community

Cover image for Gaming on Linux Using Wine/Proton with DXVK & Lutris: A Complete Guide
Hishantik Sarkar
Hishantik Sarkar

Posted on • Edited on

Gaming on Linux Using Wine/Proton with DXVK & Lutris: A Complete Guide

Overview

Linux gaming has improved dramatically in recent years, thanks to Wine, Proton, DXVK, and Lutris. Whether you're trying to play AAA titles, indie games, or older Windows-only games, these technologies provide an excellent gaming experience.

In this guide, we’ll explore:

  • How Wine, Proton, DXVK, and Lutris work together

  • Setting up your Linux system for gaming

  • Running Windows games using Wine, Proton, or Lutris

  • Optimizing performance for the best gaming experience


1. Understanding Wine, Proton, DXVK, and Lutris

Before setting things up, let's break down these key technologies:

Wine

  • Wine (Wine Is Not an Emulator) allows you to run Windows applications on Linux without a virtual machine.

  • It translates Windows API calls into POSIX-compatible calls in real time.

  • Many Windows games work on Wine, but some need additional tweaks.

Proton

  • Developed by Valve, Proton is a compatibility layer built on Wine but optimized for gaming.

  • Comes bundled with Steam Play, allowing you to play many Windows games directly from Steam.

  • Uses DXVK and VKD3D to improve DirectX performance on Linux.

DXVK

  • DXVK translates DirectX 9, 10, and 11 calls into Vulkan API calls.

  • Significantly improves performance for DirectX-based games on Linux.

  • Works with both Wine and Proton.

Lutris

  • Lutris is a game manager that helps you install and run Windows games using Wine, DXVK, and Proton.

  • Supports GOG, Epic Games, Battle.net, Ubisoft Connect, Origin, and more.

  • Makes Wine gaming easier by providing community-made install scripts.


2. Setting Up Your Linux System for Gaming

Step 1: Install Graphics Drivers

Before anything, ensure your GPU drivers are up to date.

For Arch based system

AMD (Mesa Drivers)

pacman -S mesa lib32-mesa libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau libva-vdpau-driver lib32-libva-vdpau-driver vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader
Enter fullscreen mode Exit fullscreen mode

NVIDIA

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

INTEL

pacman -S vulkan-intel
Enter fullscreen mode Exit fullscreen mode

Step 2: Install Wine

On Arch-based systems, install Wine and dependencies:

sudo pacman -S wine wine-staging winetricks

Enter fullscreen mode Exit fullscreen mode

For Debian/Ubuntu:

sudo apt install wine winetricks
Enter fullscreen mode Exit fullscreen mode

Step 3: Install Steam with Proton

If you're using Steam, install it first:

sudo pacman -S steam
Enter fullscreen mode Exit fullscreen mode

Enable Steam Play in Steam settings:

Open Steam > Settings > Steam Play

Enable Steam Play for all titles

Select the latest Proton version

Step 4: Install DXVK (for non-Steam Games)

For Wine users who want to run non-Steam games, manually install DXVK:

wget https://github.com/doitsujin/dxvk/releases/latest/download/dxvk.tar.gz
tar -xvf dxvk.tar.gz
cd dxvk-x.x
./setup_dxvk.sh install
Enter fullscreen mode Exit fullscreen mode

3. Running Windows Games with Wine/Proton

For Steam Games

Just install the game via Steam.

If it doesn't work out of the box, force Proton:

Right-click the game > Properties > Compatibility

Enable "Force the use of a specific Steam Play compatibility tool"

Choose the latest Proton version

For Non-Steam Games (Using Wine)

1. Create a Wine Prefix

WINEPREFIX=~/.wine-game WINEARCH=win64 winecfg
Enter fullscreen mode Exit fullscreen mode

2. Install Game Dependencies (if needed)

WINEPREFIX=~/.wine-game winetricks corefonts vcrun2019 dxvk
Enter fullscreen mode Exit fullscreen mode

3. Run the Game

WINEPREFIX=~/.wine-game wine game.exe
Enter fullscreen mode Exit fullscreen mode

4. Optimizing Performance

Enable Fsync & Esync

Fsync and Esync improve performance in some games.

Add this to the launch options in Steam:

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

or

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

Use Game-Specific Proton Versions (Proton-GE)

Proton-GE is a community-built Proton version that often includes patches for better performance.

Install ProtonUp-Qt:

sudo pacman -S protonup-qt
Enter fullscreen mode Exit fullscreen mode

Run ProtonUp-Qt and install the latest Proton-GE version.

Enable AMD FSR (For Low-End GPUs)

You can use FSR (FidelityFX Super Resolution) to upscale resolution and boost FPS:

1. Add this to launch options in Steam:

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

2. Works best in fullscreen mode

Enable DXVK in Lutris

  1. Open Lutris

  2. Select the game > Configure

  3. Under Runner Options, enable DXVK

5. Checking Game Compatibility

Before installing a game, check its compatibility on ProtonDB and Lutris.net:

🔗 https://www.protondb.com

🔗 https://lutris.net

ProtonDB provides reports on how well games work with Proton.

Lutris.net offers Wine installation scripts for many Windows games.


Final Thoughts

With Wine, Proton, DXVK, and Lutris, gaming on Linux is more accessible than ever.

Use Proton for Steam games.

Use Lutris for non-Steam games like Epic, GOG, Battle.net, etc.

Enable DXVK and tweak settings for the best performance.

Have you tried gaming on Linux? What are your experiences? Let me know in the comments!

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post