Skip to Content
DocsDesktopGamingProton & Wine

Proton / Wine Basics

Running Windows games and applications on Linux relies on the Wine and Proton compatibility layers. This article explains how they work and how to use them.

What Is Wine

Wine (Wine Is Not an Emulator) is a compatibility layer that translates Windows API calls into Linux system calls, allowing Windows programs to run on Linux. Wine is not an emulator — it directly translates APIs, so the performance overhead is minimal.

Installing Wine

# Enable 32-bit architecture sudo dpkg --add-architecture i386 sudo apt update # Add the WineHQ repository sudo mkdir -pm755 /etc/apt/keyrings wget -O- https://dl.winehq.org/wine-builds/winehq.key | sudo gpg --dearmor -o /etc/apt/keyrings/winehq-archive.key wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -cs)/winehq-$(lsb_release -cs).sources # Install the stable version sudo apt update sudo apt install --install-recommends winehq-stable -y

Verify the installation:

wine --version

Basic Wine Usage

# Run a Windows program wine program.exe # Configure Wine (graphical interface) winecfg # Run Wine built-in tools wine regedit # Registry editor wine taskmgr # Task manager wine explorer # File manager wine control # Control panel

Wine Prefixes (WINEPREFIX)

A Wine prefix is an isolated Windows environment. You can create separate environments for different programs:

# Create a new Wine prefix WINEPREFIX=~/wine-myapp wineboot # Run a program in a specific prefix WINEPREFIX=~/wine-myapp wine myapp.exe # Configure a specific prefix WINEPREFIX=~/wine-myapp winecfg # Create a 32-bit prefix WINEARCH=win32 WINEPREFIX=~/wine32 wineboot

Installing Winetricks

Winetricks makes it easy to install common components and runtime libraries in Wine:

sudo apt install winetricks -y # Install common runtime libraries winetricks vcrun2022 dotnet48 cjkfonts winetricks d3dx9 d3dcompiler_47 winetricks dxvk # Use the graphical interface winetricks --gui

What Is Proton

Proton is a compatibility layer developed by Valve based on Wine, optimized specifically for gaming. It integrates:

  • Wine — Windows API translation
  • DXVK — DirectX 9/10/11 to Vulkan conversion
  • VKD3D-Proton — DirectX 12 to Vulkan conversion
  • Various game-specific patches and optimizations

Proton is integrated into Steam and does not need to be installed separately. Just enable it in Steam’s Compatibility settings.

Proton-GE (GloriousEggroll)

Proton-GE is a community-maintained enhanced version of Proton with additional patches and fixes:

# Install ProtonUp-Qt flatpak install flathub net.davidotek.pupgui2 -y # Launch flatpak run net.davidotek.pupgui2

In ProtonUp-Qt:

  1. Select the Steam installation directory
  2. Click Add version
  3. Select Proton-GE and install the latest version

Manual Proton-GE Installation

# Create directory mkdir -p ~/.steam/root/compatibilitytools.d # Fetch and install the latest GE-Proton automatically (avoids hardcoding a version) TAG=$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep -oP '"tag_name": "\K[^"]+') wget "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${TAG}/${TAG}.tar.gz" # Extract to the Steam directory tar -xzf "${TAG}.tar.gz" -C ~/.steam/root/compatibilitytools.d/ # Clean up rm "${TAG}.tar.gz"

Restart Steam, then select the Proton-GE version in a game’s properties.

Specifying Proton Version for a Single Game

Right-click a game > Properties > Compatibility > Check Force the use of a specific Steam Play compatibility tool > Select the version.

Lutris

Lutris is an open-source game management platform that supports managing games from different sources: Steam, GOG, Epic, Battle.net, and more.

Installing Lutris

sudo apt install lutris -y

Using Lutris

Launch Lutris:

lutris

Key Lutris features:

  • Install scripts: Community-maintained game installation scripts for one-click setup
  • Wine management: Built-in multiple Wine versions with automatic best-version selection
  • Runners: Support for multiple game runners (Wine, DOSBox, ScummVM, RetroArch, etc.)

Installing Games via Lutris

  1. Visit https://lutris.net  and search for a game
  2. Click the Install button
  3. Lutris will automatically open and execute the installation script

Or manually add a game:

  1. Click the + button
  2. Select a runner (Wine/Linux/Steam, etc.)
  3. Configure the game path and parameters

Bottles

Bottles is another excellent Wine prefix management tool:

flatpak install flathub com.usebottles.bottles -y flatpak run com.usebottles.bottles

Bottles provides:

  • Pre-configured Wine environments (Gaming, Application, Custom)
  • Dependency manager
  • Version management
  • Clean graphical interface

Heroic Games Launcher

For running Epic Games Store and GOG games:

flatpak install flathub com.heroicgameslauncher.hgl -y

DXVK and VKD3D-Proton

DXVK

DXVK converts DirectX 9/10/11 to Vulkan and is one of Proton’s core components:

# Manually install DXVK in Wine winetricks dxvk

VKD3D-Proton

VKD3D-Proton converts DirectX 12 to Vulkan:

# Install vkd3d-proton winetricks vkd3d

Common Troubleshooting

Viewing Proton Logs

# Enable Proton logging PROTON_LOG=1 %command% # Log location ls ~/steam-*.log

Useful Environment Variables

# Enable DXVK HUD (display DXVK info) DXVK_HUD=fps,devinfo %command% # Force a specific DXVK version DXVK_CONFIG_FILE=~/dxvk.conf %command% # Enable Fsync (older sync primitive, requires kernel support) WINEFSYNC=1 %command% # Enable Esync WINEESYNC=1 %command%
Tip

The flagship feature of Ubuntu 26.04 (Linux 7.0 kernel) is NTSYNC — a kernel implementation of Windows synchronization primitives that is more efficient than Esync/Fsync and can noticeably improve Proton game performance. Recent Proton / GE-Proton versions detect and prefer NTSYNC automatically, so you usually do not need to set any environment variable. See Gaming on Ubuntu 26.04.

With a solid understanding of Wine and Proton basics, you can run the vast majority of Windows games on Ubuntu 26.04.

Last updated on