Use Steam for anything you own on Steam, Heroic for Epic and GOG libraries, Lutris for stores and games that need a custom installer script, and Bottles for Windows applications that are not really games. You do not need all four, and most players are well served by Steam plus Heroic. What matters is that each game is managed by exactly one launcher, because two launchers fighting over the same Wine prefix is the most common source of mysterious breakage.
- Start with the question that decides everything: where did you buy the game?
- Steam: the baseline everything else is measured against
- Heroic: the open-source client for Epic and GOG
- Lutris: the one that knows how to install awkward games
- Bottles: environments rather than a game library
- A setup order that avoids most problems
- Common failure modes and fixes
- The practical recommendation
- Frequently Asked Questions
Start with the question that decides everything: where did you buy the game?
The launcher choice is mostly dictated by the store, not by taste. Every tool in this comparison is a front end for the same underlying technology: Wine, plus Valve’s Proton builds of Wine, translating Windows games to run on Linux. They differ in what they automate around it.
| Situation | Best launcher | Reason |
|---|---|---|
| Game bought on Steam | Steam | Proton is built in, per-game version selection, cloud saves, controller layer, and Steam Deck compatibility ratings |
| Game bought on Epic or GOG | Heroic | Logs into those stores directly, downloads and updates games, manages Wine or Proton per title |
| Game from a store with no Linux client, or a classic that needs a patch or custom setup | Lutris | Community installer scripts handle dependencies, registry tweaks, and runner choice |
| Standalone Windows program, launcher software, or a game you want in a fully separate environment | Bottles | Creates isolated, named Wine environments with a dependency installer |
| Non-Steam game you want on a controller-driven console-style screen | Add it to Steam as a non-Steam game | Keeps one front end, and Steam still handles the controller layout |
Steam: the baseline everything else is measured against
Steam’s compatibility layer is Proton, which you enable per game or globally in settings. Valve ships its own Proton versions plus an Experimental channel, and you can add community builds such as Proton-GE. The per-game “Properties” screen lets you force a specific version, and that is the first thing to try when a game crashes after an update: roll back to the previous Proton rather than waiting for a fix.
Two features set Steam apart. First, each game gets its own prefix, a self-contained Windows-style folder created under the library’s compatdata directory and named after the game’s app ID, so a broken tweak affects only that game. Second, launch options accept a %command% placeholder, which lets you add environment variables or wrappers around the game, for example setting PROTON_LOG=1 to write a log file into your home folder when diagnosing a crash.
Steam is less helpful with non-Steam stores. You can add other executables as non-Steam shortcuts and assign a Proton version to them, but Steam knows nothing about installing or updating those games.
Heroic: the open-source client for Epic and GOG
Heroic Games Launcher is an open-source client that signs in to your Epic and GOG accounts, shows your library, and downloads games on its own. For each installed game you choose a Wine or Proton build, and Heroic can download community runners such as Wine-GE or Proton-GE for you. Recent versions can also use the umu launcher, a project that lets non-Steam launchers run games inside Valve’s Steam Linux Runtime container the same way Steam does, which brings more consistent fixes to games outside Steam.
The practical advantages are simple: it is a native Linux application, it installs and patches games without opening a Windows launcher, and its per-game settings page exposes the options you actually need, including Wine version, prefix location, and environment variables. Cloud save sync support varies by store, so check a game’s settings before relying on it.
Lutris: the one that knows how to install awkward games
Lutris is a library manager built around “runners,” which are the engines that start a game: Wine, Proton-style builds, native Linux, and a long list of emulators. Its distinctive feature is installer scripts contributed by the community. A script can download the setup file, create a prefix, install the Visual C++ or .NET components the game expects, apply registry changes, and pick a suitable runner, all in one click.
That makes Lutris the strongest option for older games, for games bought outside the big stores, and for desktop launchers that have no Linux client. The tradeoff is variety: because installers are community-maintained, quality varies, and reading the script’s comments or a recent user note before running it is worthwhile. Lutris is also the place to run emulators alongside PC games if you want a single library.
Bottles: environments rather than a game library
Bottles organizes everything around “bottles,” each of which is a separate Wine environment. When you create one you pick a preset, with options such as Gaming and Application, and Bottles configures a sensible runner and graphics translation layers for that purpose. A built-in dependency installer adds common Windows components with a click.
Bottles earns its place when you need an isolated environment for a program that is not a game, such as a utility or a game launcher you do not want to mix with anything else. For ordinary gaming it adds a layer you rarely need, and its game-library features are less developed than Heroic’s or Lutris’s.
A setup order that avoids most problems
- Put your game library on a Linux filesystem such as ext4 or Btrfs. Proton prefixes rely on permissions and links that NTFS does not support reliably, and a library on an NTFS drive is a frequent cause of games that refuse to start.
- Install Steam first and enable Steam Play for all titles. This gives you a working Proton baseline and a way to test whether a failure is the game or the launcher.
- Add one community runner manager, then stop. Tools such as ProtonUp-Qt install Proton-GE into the right folders for Steam, Heroic, and Lutris. Keep only a few versions so you can roll back without clutter.
- Install Heroic only if you own Epic or GOG games. Install each of those games through Heroic rather than the Windows launcher, so there is one source of truth for its files.
- Use Lutris for the leftovers. Search its catalog before installing manually, since a script may already solve the dependency problems.
- Never point two launchers at the same install folder. A second launcher may repair, update, or relocate files in ways the first does not expect, and prefixes then drift out of sync.
Common failure modes and fixes
| Symptom | Typical cause | Fix |
|---|---|---|
| Game launches, shows a black window, then exits | Wrong Proton or Wine version, or a missing video codec for cutscenes | Try the previous Proton build, then a community build; check community reports for that specific game |
| Game worked yesterday, fails today | A runner or launcher update changed behavior | Pin the earlier runner version for that game |
| Flatpak launcher cannot see a second drive | Sandbox permissions block access outside the home folder | Grant the app access to the drive path, then re-add the library |
| Launcher login window renders blank | Embedded browser component failing under Wine | Use the native client (Heroic) or a Lutris script that applies the known workaround |
| Game plays but saves are missing | Different prefix than the one you originally used | Locate the original prefix and point the launcher at it, or copy the save folder over |
| Multiplayer game blocked at launch | Anti-cheat not enabled for Linux | No launcher can fix this; check the game’s anti-cheat status first |
The practical recommendation
For a typical library, install Steam and Heroic, add Proton-GE through a runner manager, and keep Lutris in reserve for the games neither can handle. Add Bottles only when you need a clean, separate Windows environment. If a game fails, change one variable at a time, starting with the Proton or Wine version, because that single choice explains most launch problems.
Frequently Asked Questions
Is Heroic better than Lutris?
They solve different problems. Heroic is simpler for Epic and GOG libraries because it logs in to those stores and manages downloads, while Lutris is stronger for older games and stores that need custom installer scripts. Many players install both and use each where it fits.
Do I need Proton-GE?
Not at first. Valve’s own Proton builds cover a large share of games, and Proton-GE is mainly useful when a particular game needs a fix that has not reached Valve’s release yet. Install it when a specific title needs it rather than by default.
Can I use Steam and Heroic together?
Yes, as long as each game lives in only one of them. You can even add a Heroic game to Steam as a non-Steam shortcut so it shows up in a controller-friendly interface, while Heroic continues to handle installing and updating it.
What is Bottles used for?
Bottles creates separate Wine environments, which is ideal for running a Windows program in isolation. It is not required for normal gaming, and most players never need it.
Why do games fail on an NTFS drive?
Proton prefixes depend on Linux-style permissions and symbolic links that NTFS does not provide reliably. Moving the library to ext4 or Btrfs removes a whole class of launch errors.






