A month ago, I discovered that the Proton module in Steam attempts to ensure the best compatibility it can with the Windows games I got, and allow me to play some on my Debian 10.

Yesterday, I've installed Notepad++, a well known Windows editor, on my Debian using a snap command.

I do not know the arcana of the snap nor I know how Proton works. I think that they rely together on an underlying Wine installation on my system. I don't know where, I don't have to manage it myself (and this is convenient).

But do I think true ? How compatibility is ensured with Windows from beyond the scene ?


Proton is part of Steam Play. Which is Steam's framework for providing compatibility layers to run games it distributes but aren't natively supported on Linux. Read more about it here on its GitHub page. Proton serves as the default compatibility layer for Steam Play and is based on/is an extension of wine. Effectively it is Steam's version of wine specifically configured and combined with additional tools, like a DirectX to Vulcan graphics API translator. DirectX is a Windows and Xbox (the reason it is called Xbox. It is a "DirectX"-Box) only graphics API. Vulcan is a modern graphics API known for its cross-platform capabilities. By bundling these tools and scripts together, Steam Play is helping make a seamless gaming experience on Linux for traditional PC gamers moving from Windows to Linux.

Wine is a compatibility layer making translations from Windows API calls into POSIX calls on-the-fly to allow for near-native performance of Windows binaries and executables on *nix-like Operating Systems. Read more about wine here on its main site.

For the most part wine configurations are system-wide, meaning once you configure wine all other programs launched using it on your system will typically share the same configurations. This might not always work as some programs need to be setup in wine in slightly different parameters to work. You can use things like wine-tricks and wine-bottles and programs like PlayOnLinux, Lutris, and Crossover make managing this easier. Steam's Proton is another one of these abstraction-layers built ontop of wine to make managing different Windows programs easier.

Your Notepad++ snap is a portable "container-like" binary. Snaps come bundled with all the necessary libraries and configurations it needs to run. A snap of a Windows program very likely comes with its own version of Wine configured specifically for running it. That is the benefit of solutions like snaps and flatpaks is that they are portable and pre-configured chroots that should be able to run on any Operating System with a similar version of snap/flatpak. Much like a docker container. A disadvantage of these snaps is that you are doubling up on disk space if you already have some of the libraries on your system. Read more about snaps here.

Personally I prefer to only purchase games from GOG that have a native Linux version or can be run in DOSBox. However, some older non-DOS games I have can only work via wine. On Windows I find Notepad++ to be my favorite text editor but on Linux I like to stick to using Linux native programs such as Geany, Notepadqq, Leafpad/Mousepad, and Gedit. In many cases I just use nano or vi for my text editing needs.

Wine is very complicated to get right and it is kind of a grey area when things go wrong. If your Windows program running on Linux is having issues is it a problem with the program itself, wine, or your Linux system? There are a lot of moving parts when trying to solve these types of issues. I suggest if you require Windows programs you may need to run Windows in a Virtual Machine or dual-boot to get the best (and in many cases easier) experience.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.