The continued (and usually justified) distaste for Windows 10 has given more momentum than ever to Linux as a desktop platform. Most Linux-based operating systems are free to use, have a consistent interface, and don't break with every update—what's not to like?
While Linux can run much of the same software that Windows can, including all major web browsers and many productivity tools, gaming has always been a rough point for the platform. Major games natively written for Linux are still few in number, but Windows compatibility layers like Wine and various emulators have been filling in the gaps.
Thankfully, Linux gaming has improved quite a bit in the past year. Steam Play allows you to play Windows games effortlessly through Steam, without fiddling with configuration files or installers yourself (most of the time, anyway). Meanwhile, tools like Lutris have made it easier than ever to play games through the Wine compatibility layer.
In this guide, we'll show you the best ways to play Windows-only games on your favorite Linux distribution—whether it be Ubuntu, Debian, Arch, Fedora, or something else.
For years, the 'Wine' compatibility layer has made it possible to play Windows games on Linux. For the past three or so years, Valve has been working with Wine developers to improve game compatibility, and the result is Proton. Proton, also called 'Steam Play,' is a modified build of Wine developed by Valve—and it's built right into Steam for Linux. That's right, the dark days of installing Steam inside of Wine to play Windows-only Steam games are over.
Steam Play is an incredibly impressive compatibility layer, and it makes running Windows games in Linux easier than ever. It can translate Windows DirectX calls to Vulkan API calls, resulting in better compatibility and performance than ever before, and it works perfectly with external controllers and Steam Overlay.
To get started with Steam Play, install Steam for Linux if you haven't already. This process varies a bit depending on what Linux distribution you're running.
Installing Steam on Debian, Ubuntu, Linux Mint, Pop_OS, and most other Debian-based distros
Go to the Steam download page and click the big download button. You should get a .deb file. Double-click on the file, and a package manager will open asking you if you want to install the application. Once the process is complete, Steam should be available in your app launcher, and you can open it and log in.
Installing Steam on Elementary OS
While Elementary OS is based on Debian/Ubuntu, newer versions of Elementary don't automatically have the application required to open .deb files. So first, you need to install 'Eddy' from the AppCenter. Once Eddy is installed, go to the Steam download page, click the big download button, and open the .deb file it gives you. After all that is done, Steam should be available in your app launcher. Try opening it and logging in.
Installing Steam on Fedora, Arch, and most other distros
If you're using a distribution that isn't based on Ubuntu/Debian, you'll have to install Steam from the unofficial Flatpak. Flatpak is a way of packaging applications to work on a wide variety of Linux distributions.
First, some minor setup may be required depending on the exact distribution you're using. The official Flatpak website has super easy instructions for getting everything set up.
Once that's done (and you've rebooted your PC, if it said to in the instructions), we need to make sure the Flathub repository is set up. Run this command in the Terminal:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Then install Steam with this command:
flatpak install flathub com.valvesoftware.Steam
After that's done, Steam should appear in your app launcher. Open it and log in.
Enabling Steam Play for all games
Valve currently tests games before officially certifying them for Steam Play. However, there is a setting in Steam that gives you the option of running non-certified games in Steam Play. While many titles work just fine, keep in mind that some games (especially newer ones, or some that use certain DRM methods) might have issues or won't work at all. The worst that can happen is the game not running—you don't have to worry about corrupting other games or breaking Steam.
To get started, click the Steam menu at the top-left of the main Steam window, and select 'Settings' from the dropdown. Then click 'Steam Play' on the left side, make sure the the box that says 'Enable Steam Play for supported titles' is checked, and check the box for 'Enable Steam Play for all other titles.'
After that's done, click OK. Steam might want to restart to apply your changes. With all that done, go to your Steam library, click the dropdown menu next to the search bar, and make sure 'Games' is selected. Now you can see all your Steam games—including those for Windows—and install them with just one click. The helpful "runs on this computer via Steam Play" message will let you know which games will be installed using the compatibility layer.
If you want to check if a certain game will run in Steam Play before you download it, check out ProtonDB. It's a community-maintained database that can probably tell you if a certain game works or not, complete with helpful instructions and tips for getting troublesome games to run.
Steam Play is a fantastic piece of software, and it makes playing popular Windows games in Linux far easier than it ever was before... as long as the game is available in Steam. For games found on other storefronts and launchers, another tool might be able to help you out.
Lutris describes itself as an "open source gaming platform for Linux." It's a front-end for programs like Wine, RetroArch, and DOSBox—you pick the game you want to play, and everything required to get it working is downloaded and set up for you. It supports games like League of Legends, Skyrim, Warframe, Overwatch, and more. It can even detect and add any Linux-native games you might already have installed and add them to the launcher.
Lutris has detailed installation instructions on its website, so we won't re-invent the wheel here. On most distributions, it only takes a command or two to get everything installed.
How to use Lutris
To get started with Lutris, just open it from your app launcher, click the search button, type in a game, and click the 'Search Lutris.net' button. You'll get a list of games you can install, and double-clicking on it will display the ways you can install it. For example, The Witcher 2 can be downloaded from GOG for Linux, GOG for Windows, Steam for Linux, and Steam for Windows.
Also, Lutris supports more than just Windows games. It offers multiple "runners" for playing games from different platforms, including RetroArch (retro games), DOSBox (DOS games), MAME, ScumVM (LucasArts titles), Snes9x (SNES games), and ZDoom (DOOM-based titles).
If you're feeling adventurous, you can install games manually using whichever runner you want. Lutis has no shortage of options and configuration settings.
Steam Play has made it easier than ever to run your entire Steam catalog on Linux, and Lutris is a significant improvement over the script-based game installers of old (anyone remember PlayOnLinux?). With these two tools, you can enjoy thousands of games that will likely never have an official Linux port.
Of course, there are still more ways to run Windows games on Linux. You can install VirtualBox and run a Windows virtual machine, though you're likely to run into performance problems with newer games. If you're feeling adventurous, you could try setting up a VM with support for GPU passthrough.
CrossOver by CodeWeavers is another popular way to run Windows software on Linux, and many of its developers helped Valve develop Steam Play. However, CrossOver is more oriented towards business use, so it doesn't have as many supported games as Lutris.