The BEST Solutions for Running Windows Apps in Linux
One of the biggest difficulties of switching over to Linux is getting used to a completely different ecosystem for applications and trying to switch away from many proprietary applications that are Windows only. Ideally, we should try and convince new users to learn how to use open-source software instead of proprietary software, there are some cases where that is simply not an option.
The solution to getting these Windows applications onto our Linux system is the Wine compatibility layer, which essentially converts all the Windows libraries and system calls over to open-source alternatives. This is what Steam’s Proton is built off and it is what allows so many Windows games to have full Steam Deck compatibility. The main problem with Wine is that it can be a huge pain to setup and configure. There are several applications that aim to solve this problem but most of them aren’t great.
The oldest solution to this is Winetricks, a simple Wine system config tool built around Zenity, which if you don’t know is a tool for generating dialogs from a bash script. Because of this, the UI is a bunch of dialogs that connect to scripts or commands to configure wine. This is a very hacky system and is just not a good user experience.
PlayOnLinux was another popular tool for running Windows games on Linux but the version everybody actually uses hasn’t been maintained for a long time and has a ton of graphical bugs and glitches that make it extremely hard to use. Just try opening it on any dark theme.
It does have a newer version with a full redesign, and it promotes the Flatpak of it on its GitHub repo that is relatively active, but this Flatpak is 2 years out of date and rittled with bugs. This can however still be a good option if you compile it from source.
Q4wine is another popular tool for this job, but again it has a very confusing user interface in my opinion that I don’t want to spend the time trying to figure out, and the lead developer is Ukrainian and has halted development because of the ongoing conflict in that region.
CrossOver is another solution, it has a clean user interface, and it has loads of specific patches for certain apps making many of them easy to install. In addition, they have a database like ProtonDB with all the applications they support with ratings. However, CrossOver is a paid app and currently costs $60 for a year of updates, and $500 for a lifetime license. This however, does support the development of Wine and Proton, so it’s not just a company profiting from the hard work of Wine.
Finally, you can a wide variety of games working on Linux thanks to Steam and Lutris. Lutris is extremely popular and makes it very easy to run a game by leveraging and combining existing emulators, engine re-implementations and compatibility layers. It gives you a central interface to launch all your games and the client can connect with existing services like Humble Bundle, GOG and Steam to make your game libraries easily available.
From here we will talk about my favorite solution for managing Wine and that’s Bottles. This has a good looking and easy to figure out UI thanks to it being a GNOME app, and it gives you many options for configuring Wine. On launch you can create your first “bottle”, which is an isolated Wine instance which can be useful if you are multiple apps need different versions of a dependency.
Once in a bottle you have many options including preferences, dependencies, programs, versioning, installers, and task manager. Details & Usage is where you can run executable files such as program installers as well as do basic program management like adding a program into your applications launcher, adding it to Steam, or uninstalling it. You can also access tools within the bottle like CMD, Regedit, and other built in Wine tools.
There are other tabs built into Bottles for managing your bottles including “Preferences” which allows you to customize certain Wine and system settings for your bottle, “Dependencies” which allow you to install dependencies that may be required by a certain application, and “Installers” which lets you easily install some applications you may want such as Ableton Live, Battle.net, FL Studio, GOG Galaxy, and Origin.
There are also some built-in tools such as a “Task Manager” for managing processes inside of a bottle similar to Windows Task Manager, and “Versioning” which allows you to take snapshots of your Wine bottle and restore to earlier snapshots. These snapshots can be useful if you are trying to test out a patch or change to your bottle that may break it.
Finally, if we leave the Bottle and head over to app preferences, you can do things like setup different Wine runners such as installing different Wine forks and installing a specific pre-release or older version of a runner. This can be useful if you are trying to run a picky app that only works on a type of Wine runner. It also lets you install different DLL Components such as different versions of DXVK.
Finally, my personal favorite feature of this application is the fact that you can export your bottles. I was able to use this to help my non-technical friend get FL Studio running on Linux. I just created a new bottle, installed FL Studio through it, added his license key to it for him, and setup some plugins he uses. Then, I was able to send him a .tar.gz file with all the FL Studio configurations he needed and he was able to install it with a few clicks through Bottles. This is great considering that Bottles is available as a Flatpak, so this can work across any Linux distros without needing to worry about dependency issues resulting from distro repositories shipping a different version of Wine.
Steam and Lutris are likely better options if you are a complete Wine noob and you just need to get a few games running, however for those who know what they are doing when it comes to Wine, Bottles is a great option. This completely removes the reason that tools like Winetricks even exist and makes this a great thing to try if you are trying to run a game or app that you just can’t get working.