João has been covering the tech world for over 7 years, with a heavy focus on laptops and the Windows ecosystem. I also love all things tech and videogames, especially Nintendo, which he's always happy to talk about.
Prior to joining XDA in 2021, he worked at Neowin: https://www.neowin.net/news/poster/jo%C3%A3o-carrasqueira/
It feels like more people than ever want to leave Windows behind and switch to Linux, but the biggest issue that has always plagued the platform is still a big hurdle. Many of the biggest Windows apps don't have Linux versions, and tools like Wine are still a requirement to make them work.
Steam addressed a big portion of this problem — that is, gaming — with its Proton compatibility layer, but what you may not realize is that it doesn't have to be just for games. You can use Steam to make all kinds of Windows apps run on Linux, and in many ways, it's a better option than Wine itself.
Proton is Wine, but better
Most of the time, at least
It's not exactly news at this point, but Valve's Proton layer is heavily based on Wine. The company took that open-source solution, built upon it, and then contributed many of those improvements back to Wine, which helps make the whole ecosystem better.
However, not every feature built into Proton makes its way back to the main Wine project, and if it does, it may take some time before that happens. Wine is a separate project with its own approval process for new submissions, so it's not necessarily in lockstep with whatever progress Valve makes at any given time.
As such, running your programs under Proton can still be beneficial over using a plain Wine installation. Technically, some regressions are also possible, but most of the time, you're working with a version of Wine that's been improved upon by a company that has a direct financial incentive to do a good job of it.
Steam can even replace Bottles
A more configurable experience
When you install Wine on Linux, that's just kind of what it is. Wine creates the Windows filesystem so it can closely replicate the original functionality of your apps, and every Windows app you install after that uses that same file system. It mostly works fine, but much like Proton itself, new versions of Wine can sometimes have regressions in specific software and cause things to break.
A well-known solution for this has been Bottles, which lets you create isolated, single-use environments for each Windows app, with different Wine versions and configuration options. But Steam can do that too, albeit to a lesser extent.
When you install a Windows application using Steam, the Windows filesystem is created all over again for that specific app, allowing it to function independently of other apps, and crucially, giving you the option to run it with more specific settings. You don't get all the setup options Bottles gives you if you want to get really deep into it, but Steam lets you choose the compatibility layer you want to use for that app, including various versions of Proton and the Steam Linux Runtime. If an app depends on other apps, you can technically also install additional software to the same Windows filesystem, which can replicate some of the features Bottles offers.
Setting up is easy
Steam handles the hard part
If you're wondering how this all even works, it's actually fairly easy. First, you'll naturally need Steam on your Linux PC, and from the Steam menu, you can select Games and then Add non-Steam game to my library. Assuming you've already downloaded the installer for the Windows program you want to use, simply select the executable for said installer.
In this window, you can use the Compatibility tab to choose the compatibility layer you want to use. Steam defaults to Proton Experimental, which should give you the latest fixes and improvements, but you can switch to the stable release or one of the many earlier releases, or even other forks of Proton that focus on specific improvements. If you don't know what to try first, Proton Experimental is probably a fine choice, but you can play around with it if you have issues. The internet may also be able to provide specific recommendations for each app.
From there, run the program through Steam and allow it to install. The more challenging part comes next, because Steam will keep pointing to the installer, not the actual app, so you have to find it yourself. Files for Windows apps in Steam are installed to this folder:
~/.local/share/Steam/steamapps/compatdata/
While you won't see any names here, you should be able to find your app by opening the most recent folder here, and then browse the structure to pfx/drive_c, and from there, check either Program Files or Program Files (x86) (or whatever the installation path would be) to find the executable for the actual app.
With that information, go back to Steam, right-click the program you installed, and select Properties. Under target, paste the full path to the executable file for the program you want. Under Start in, paste the path to the folder where the file is, essentially just removing the name of the executable itself from the path above. After that, starting the app in Steam should launch your Windows program normally going forward.
A benefit of this approach is that since app also creates its own Windows filesystem, the files never have a chance to interfere with each other or muddle up the Windows "installation". If you're done with a specific app, you can remove it from Steam and delete its respective folder to cleanly remove all of its Windows data without breaking any other Windows apps.
How well does it really work?
Don't expect miracles
As great as Steam is for this, it's important to remember it won't make miracles happen. Proton won't fix every single Windows app that doesn't work with Wine. My first experiments were me throwing curveballs at this setup with apps I usually know don't work. Clip Studio Paint installed but would crash upon launch, Obsbot Center seemed to work until I plugged in a webcam that would actually use it, at which point it crashed, and Microsoft 365 refused to install altogether. All of that is pretty much as expected with Wine, too.
However, simpler apps did work. Notepad++ was the best example, as it looked and run just about as perfectly as I could have hoped. I also tried installing the Vivaldi web browser (despite it having a Linux version), mostly because I wanted to see if it would be able to use my webcam, which it was. I was able to join a Discord call and use my camera, though I wasn't able to see anyone else on the call. Other users did say they were able to see me, though.
Otherwise, the experience can be a little hit or miss, but thankfully, having multiple compatibility options helps address that. For example, when using Proton, Vivaldi and OnlyOffice had an issue where the KDE window frame was trying to render around the Windows app and breaking the UI, but I could switch the compatibility to the Legacy Steam Runtime, and it worked just like Wine does. That flexibility can help some apps run better.
Finally, I tried Affinity and even the installer refused to launch. Interestingly, it does launch and install under Wine, though the app then fails to run anyway. The only way I've been able to get Affinity to work is through the dedicated Affinity on Linux project, which does a lot more setup to get things working. Even then, it's a finicky app.
Steam is a great way to manage Windows apps
Valve has already changed the way Windows games run on Linux with Proton, but it's great to see that Steam can do even more for all kinds of apps. It basically becomes its own Windows emulator with multiple compatibility options, and you can more easily manage the filesystem. It's not quite on the level of something like Bottles in terms of flexibility, but it still works very well and it's an app you're probably already used to launching anyway.





