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 -yVerify the installation:
wine --versionBasic 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 panelWine 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 winebootInstalling 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 --guiWhat 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:
Installing via ProtonUp-Qt (Recommended)
# Install ProtonUp-Qt
flatpak install flathub net.davidotek.pupgui2 -y
# Launch
flatpak run net.davidotek.pupgui2In ProtonUp-Qt:
- Select the Steam installation directory
- Click Add version
- 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 -yUsing Lutris
Launch Lutris:
lutrisKey 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
- Visit https://lutris.net and search for a game
- Click the Install button
- Lutris will automatically open and execute the installation script
Or manually add a game:
- Click the + button
- Select a runner (Wine/Linux/Steam, etc.)
- 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.bottlesBottles 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 -yDXVK 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 dxvkVKD3D-Proton
VKD3D-Proton converts DirectX 12 to Vulkan:
# Install vkd3d-proton
winetricks vkd3dCommon Troubleshooting
Viewing Proton Logs
# Enable Proton logging
PROTON_LOG=1 %command%
# Log location
ls ~/steam-*.logUseful 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%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.