How to Run Non-Steam Games on Linux With Lutris and Bottles (2026)?

Linux gaming has come a long way, but most games and applications are still built for Windows. The good news is you do not need a dual boot or a virtual machine to play your favorite titles. With the right compatibility tools, you can run thousands of Windows games and productivity apps directly on your Linux desktop.

Two of the most popular tools for this job are Lutris and Bottles. Both sit on top of the Wine compatibility layer and give you a graphical interface to manage your Windows software without touching the command line. Lutris excels at managing game libraries from multiple stores like GOG, Epic, and Battle.net, while Bottles makes it simple to run a single EXE file in an isolated environment.

In this guide, I will walk you through everything you need to know about how to run non-Steam games and Windows apps on Linux with Lutris and Bottles. I have spent months testing both tools across different distributions, and I will share the exact setup steps, troubleshooting fixes, and performance tweaks that actually work.

What Is Wine and How Does It Run Windows Programs on Linux?

Wine is a compatibility layer that translates Windows API calls into POSIX-compliant system calls that Linux understands. It is not an emulator — the name literally stands for “Wine Is Not an Emulator.” Instead of simulating hardware, Wine intercepts Windows system calls on the fly and redirects them to their Linux equivalents, which means programs run at near-native speed.

When you install a Windows program through Wine, it creates a Wine prefix — a folder that mimics a Windows C: drive with its own registry, Program Files, and user directories. Each prefix is isolated, so what happens in one prefix does not affect another. This isolation is the foundation of how both Lutris and Bottles work.

Under the hood, modern Wine gaming relies on two additional translation layers: DXVK, which converts DirectX 9, 10, and 11 calls to Vulkan, and VKD3D, which does the same for DirectX 12. These projects are why games that once ran poorly now perform nearly as well as they do on Windows.

Wine itself is completely legal. It is an open-source reimplementation of the Windows API, built from scratch by the community without using any Microsoft code. You are free to install and use it on any Linux system.

Lutris vs Bottles: Which Should You Use?

Choosing between Lutris and Bottles comes down to what you are trying to run. Both tools use Wine under the hood, but they take very different approaches to managing it.

Use Lutris when you want a unified game library that pulls titles from GOG, Epic Games Store, Battle.net, EA, Ubisoft Connect, and even emulators. Lutris has a massive community-maintained database of install scripts that handle dependencies, patches, and configuration automatically. If a game has a complicated install procedure, Lutris likely has a script that does the heavy lifting for you.

Use Bottles when you have a standalone EXE or MSI file and just want it to work. Bottles creates isolated environments called bottles, each with its own Wine version and configuration. Forum users on r/linux_gaming consistently report that Bottles is more stable than Lutris with fewer prefix corruption issues, especially for single applications outside of launchers.

Here is a quick breakdown to help you decide:

  • Lutris — Best for game launchers, multi-store libraries, community install scripts, and retro emulation.
  • Bottles — Best for individual EXE files, Windows productivity apps, and users who want a clean, modern interface.
  • Steam Proton — Best for Steam games, since it is built in and requires almost no configuration.
  • Heroic Games Launcher — A solid alternative for Epic, GOG, and Amazon Games integration if you find Lutris too complex.

There is no rule saying you must pick just one. Many Linux gamers run Steam with Proton for their Steam library, Lutris for Battle.net and Epic, and Bottles for the occasional standalone Windows utility. They coexist without conflicts.

Prerequisites: Prepare Your Linux System

Before installing Lutris or Bottles, you need to make sure your system has the right graphics drivers and libraries. Skipping this step is the number one cause of poor performance and crashes.

Install the Right Graphics Driver

Your GPU driver determines whether games run smoothly or stutter constantly. On AMD systems, the open-source Mesa driver built into your kernel is already the best option — just make sure you are running a recent version. On NVIDIA, you need the proprietary driver, not the open-source Nouveau driver, for acceptable gaming performance.

Most distributions let you switch drivers from their software center or driver manager. On Ubuntu and Pop!_OS, the “Additional Drivers” tab handles this. On Fedora, enable the RPM Fusion repository and install the akmod-nvidia package. On Arch-based distributions, install the nvidia package from the official repositories.

Enable Vulkan Support

Vulkan is the graphics API that DXVK and VKD3D translate DirectX calls into. Without it, your games will fall back to slow OpenGL translation or fail entirely. On AMD and Intel systems with Mesa, Vulkan support is included automatically. On NVIDIA, the proprietary driver ships with Vulkan support built in.

Verify Vulkan is working by installing the vulkan-tools package and running vulkaninfo | grep "deviceName" in a terminal. If you see your GPU listed, you are good to go.

Install 32-Bit Libraries

Many Windows games, especially older ones, are 32-bit applications. Your 64-bit Linux system needs the i386 architecture enabled and specific 32-bit libraries installed for these to run. On Debian and Ubuntu, run sudo dpkg --add-architecture i386 followed by sudo apt update. Then install the 32-bit Mesa or NVIDIA libraries.

On Fedora, the package names end in .i686. On Arch, enable the multilib repository in /etc/pacman.conf and install lib32-mesa or lib32-nvidia-utils.

Check vm.max_map_count

Some games, particularly titles like Star Citizen and Counter-Strike 2, require a higher virtual memory map count than the Linux default. Check your current value with cat /proc/sys/vm/max_map_count. If it is below 262144, raise it temporarily with sudo sysctl -w vm.max_map_count=262144.

To make the change permanent, add vm.max_map_count=262144 to /etc/sysctl.conf or create a file in /etc/sysctl.d/. Some games will simply refuse to launch without this adjustment.

How to Install and Use Lutris for Non-Steam Games

Lutris is available as a native package or a Flatpak. The Flatpak version is more isolated but sometimes needs extra permission configuration. The native package integrates better with your system, so I recommend it unless your distribution only supports Flatpak.

Step 1: Install Lutris

On Ubuntu and Debian, add the official Lutris PPA and install it:

sudo add-apt-repository ppa:lutris-team/lutris
sudo apt update
sudo apt install lutris

On Fedora, install with sudo dnf install lutris. On Arch, run sudo pacman -S lutris. For the Flatpak version, use flatpak install flathub net.lutris.Lutris.

Step 2: Connect Your Game Stores

Launch Lutris and click the plus icon next to your preferred store in the left sidebar. Sign in to your GOG, Epic, or Battle.net account through the built-in browser window. Lutris will import your library and display all available titles.

You can connect multiple stores at the same time. This is what makes Lutris so powerful for managing non-Steam games — every storefront in one place.

Step 3: Install a Game from the Catalog

Click any game in your connected library, then click Install. Lutris will download a community install script that handles everything: downloading the game files, creating the Wine prefix, installing dependencies, and applying configuration tweaks. You will see each step in a progress window.

For games not in a connected store, use the Lutris website search at lutris.net/games to find community install scripts. Click Install on the website, and Lutris will open and begin the process automatically.

Step 4: Install a Game Manually

If no install script exists, you can set up the game yourself. Click the plus icon at the top of Lutris, select “Add locally installed game,” and switch to the Wine tab. Choose a Wine version (Lutris downloads runners like wine-ge automatically), set the prefix location, and point the executable to your game’s EXE file.

Save the configuration and Lutris will create a launcher entry for you. This manual approach gives you full control but requires more trial and error to get right.

Step 5: Configure Launch Options

Right-click any game and select Configure to access advanced settings. Here you can change the Wine runner, enable DXVK or VKD3D, set environment variables, and add command-line arguments. If a game stutters, try switching to a different Wine-GE version or enabling FSR upscaling.

How to Install and Use Bottles for Windows Apps

Bottles is distributed primarily as a Flatpak, which means it runs in a sandboxed environment. This sandboxing is great for security but can cause file access issues if you do not configure permissions correctly.

Step 1: Install Bottles via Flatpak

Open a terminal and run:

flatpak install flathub com.usebottles.bottles

Some distributions also offer Bottles as a native package. On Arch, you can install it from the AUR. The Flatpak version is the officially recommended one, so I suggest sticking with that.

Step 2: Create a Bottle

Launch Bottles and click the plus button to create a new bottle. You will be asked to choose an environment type:

  • Application — Optimized for productivity software like Microsoft Office or older utilities.
  • Gaming — Pre-configured with DXVK, VKD3D, and game-friendly settings.
  • Custom — A blank slate where you choose every component yourself.

Name your bottle and pick the Wine runner version. Bottles uses its own forked runners called Caffe and Soda, which are tuned for different use cases. For most games, the default Soda runner works well.

Step 3: Install an Application

Inside your new bottle, click “Run executable” and select your EXE or MSI file. Bottles will run the installer inside the bottle’s isolated environment. Once installed, the application appears in the bottle’s program list.

You can also browse the Bottles catalog for community-tested installers. Each entry includes a compatibility rating from Bronze to Platinum, so you know what to expect before you start.

Step 4: Fix Flatpak File Access Issues

Because Bottles runs in a Flatpak sandbox, it cannot access files outside its own directory by default. This is the most common complaint I see in forum discussions. If your game needs to read files from an external drive or your home directory, you need to grant permission.

Install Flatseal, a graphical permission manager, with flatpak install flathub com.github.tchx84.Flatseal. Open Flatseal, select Bottles from the application list, and scroll to the Filesystem section. Toggle “All system files” or add specific paths under “Other files.”

Alternatively, use the command line: flatpak override --user --filesystem=/path/to/folder com.usebottles.bottles. This is essential for games stored on secondary drives.

Step 5: Add a Program to Your Desktop Menu

Bottles can create desktop shortcuts automatically. In the program list within your bottle, click the three-dot menu next to an application and select “Add to desktop.” A launcher will appear in your application menu, and you can optionally add it to Steam as a non-Steam game for Big Picture mode support.

How to Run Non-Steam Games and Windows Apps on Linux With Lutris and Bottles Together

One of the best things about these tools is that they complement each other perfectly. You do not have to choose. Here is how I combine them in my own setup.

I use Steam with Proton for everything in my Steam library, Lutris for games tied to launchers like Battle.net and Epic, and Bottles for standalone Windows utilities and the occasional indie game distributed as a raw EXE. Each tool manages its own prefixes, so there are no conflicts between them.

To add any Lutris or Bottles game to Steam as a non-Steam shortcut, open Steam, go to Games, then “Add a Non-Steam Game to My Library.” Both Lutris and Bottles register their games as system applications, so they will appear in the list. This gives you Steam Overlay, controller support, and Big Picture mode for everything.

Troubleshooting Common Problems

Even with everything set up correctly, you will occasionally hit issues. Here are the most common problems and the fixes that actually work.

Lutris Prefix Corruption

Lutris prefixes can become corrupted, especially after a runner update or an interrupted installation. Symptoms include games that previously worked suddenly crashing on launch. The fastest fix is to delete the prefix and reinstall the game. Right-click the game, select Configure, go to the Game options tab, and note the prefix path. Delete that folder, then reinstall.

To prevent corruption, avoid forcefully closing Lutris while a game is running, and do not switch runner versions mid-session. Always let the runner finish downloading before launching anything.

Missing Wine Dependencies

Many Windows programs depend on Visual C++ runtimes, .NET Framework, or DirectX redistributables that are not included with Wine by default. In Lutris, install Winetricks from the Runners menu and use it to add missing components. In Bottles, the Dependencies tab inside each bottle lets you install common runtimes with a single click.

If you see errors mentioning missing DLL files, this is almost always the cause. Check the game’s ProtonDB or Wine AppDB page for specific dependency recommendations.

Flatpak Sandbox Blocking File Access

Bottles running as a Flatpak will silently fail to access files it cannot see. If a game cannot find its data files or a save folder is empty, use Flatseal to grant filesystem access as described in the Bottles section above. NTFS-formatted external drives require special handling because Wine does not handle NTFS permissions well — format external drives as ext4 or BTRFS if possible.

Anti-Cheat Blocking Multiplayer Games

Games using Easy Anti-Cheat or BattlEye may refuse to connect to multiplayer servers on Linux, even if the single-player mode works fine. Some developers have enabled Linux support for their anti-cheat (notably Valve’s own games and a growing list of others), but many have not. Check the anti-cheat status on ProtonDB before buying a multiplayer game for Linux.

There is currently no reliable workaround for blocked anti-cheat. If a game’s anti-cheat does not support Linux, you will need Windows for online play.

32-Bit Application Failures

If a 32-bit game or app fails to launch at all, you likely missed the 32-bit library installation step from the prerequisites section. Double-check that i386 architecture is enabled and that 32-bit graphics libraries are installed. Re-run dpkg --add-architecture i386 on Debian-based systems and install the lib32 packages on Arch.

Performance Tips for Better Frame Rates

Getting a game to run is only half the battle. These tweaks will help it run well.

Enable FSR (FidelityFX Super Resolution) in your game or through launch options to upscale lower resolutions for better performance. Both Lutris and Bottles support enabling FSR at the runner level. In Bottles, look for the toggle in the bottle’s gaming configuration.

Use the Gamescope compositor for games that have fullscreen or tearing issues. Gamescope creates an isolated rendering surface that bypasses desktop compositors entirely. It is available as a package on most distributions and can be enabled in Lutris launch options.

Keep your runners updated. Wine-GE and Bottles’ Soda runners receive regular updates with performance improvements and compatibility fixes. Check for updates monthly. I set a reminder to update my runners on the first of every month.

Monitor performance with the DXVK_HUD environment variable. Set DXVK_HUD=fps,frametimes in your launch options to see an overlay with real-time frame rate and frame timing data. This helps you measure whether a configuration change actually made a difference.

Frequently Asked Questions

How to run non-Steam Windows games on Linux?

Install Lutris or Bottles, both of which use Wine to run Windows executables. Lutris is best for games from launchers like GOG, Epic, and Battle.net. Bottles is best for standalone EXE files. Enable 32-bit libraries, install your GPU drivers with Vulkan support, then use the tool’s interface to create an environment and install your game.

How to run Windows apps on Linux with Wine?

Install Wine from your distribution’s package manager, then run a Windows program with the command wine program.exe. For isolation, use separate prefixes with WINEPREFIX environment variable. Bottles provides a graphical interface that makes this much easier for most users.

Is Wine on Linux legal?

Yes, Wine is completely legal. It is an open-source reimplementation of the Windows API built from scratch by the community without using any Microsoft source code. You are free to install, use, and distribute Wine on any system.

Why use Lutris over Steam?

Steam only manages Steam games with Proton. Lutris handles games from GOG, Epic, Battle.net, EA, Ubisoft, and emulators in one unified library with community install scripts. If your games are not on Steam, Lutris is the tool you need.

Conclusion

Learning how to run non-Steam games and Windows apps on Linux with Lutris and Bottles opens up thousands of titles that would otherwise be out of reach. Lutris handles your multi-store game libraries with community scripts, while Bottles makes standalone EXE files effortless in isolated environments.

Start by getting your graphics drivers, Vulkan support, and 32-bit libraries in order. Then install both tools, connect your accounts, and begin with games that have high ProtonDB ratings. Most problems you encounter will trace back to missing dependencies or Flatpak permissions, both of which are easy to fix once you know where to look.

Linux gaming has never been more accessible. With Wine, DXVK, and tools like Lutris and Bottles, the vast majority of Windows games and applications run well enough that you may never need Windows again.

Leave a Comment