I Love Linux and I Don't Hate Windows

Why I switched to Linux and why I still use Windows

Let me preface this by saying that I dislike a great many things about Windows 10 (and Microsoft in general), but I still use it fairly frequently. Why? We'll get back to that. First, let me explain why I switched to Linux (and Arch Linux in particular; "btw I use Arch").



When choosing an operating system, I take into consideration a couple of factors. The first of these is, "how easy is it to do what I want?" This is a fairly broad question, but for me, it really comes down to 3 things:



  1. Is it easy to customize?


  1. Is there a centralized place to get software?


  1. Is it easy to install software from outside this centralized location?



When I say "ease of customization," I mean that I want to be able to install e.g. a floating window manager, a tiling window manager, and a full desktop environment as easily as possible. Then, I want to be able to modify the configurations of these environments just as easily. I've settled on using Sway, a tiling Wayland compositor1 and, thanks to the XDG Base Directory Specification, I just drop my configuration into ~/.config/sway/config. This is the easy kind of configuration. In Windows, there is the hard kind: the configuration of a piece of software is found in %APPDATA%, %LOCALAPPDATA%, Documents, or really any place of their choosing. One of the pain points of experimenting with software on Windows is that it drops files everywhere, and it is not always obvious where these files are. Admittedly, some Linux software does the same, though much less frequently.



As far as I'm aware, all popular Linux distributions come with some built-in way to download and/or install software. In the case of Arch Linux, we have pacman. Many of the popular packages are in the extra or community repositories, but sometimes you need to utilize the Arch Build System2, or build them from source. pacman and the ABS satisfy my requirements for a centralized place to acquire software and an easy way to install software from outside that centralized location. In general, there are also distribution-agnostic tools like make and friends that make it easy to install from source without needing a whole development environment, whereas in Windows, Visual Studio is almost essential for any source-based software installation.



Something else I consider is, "how accessible are games?" I enjoy video games quite a bit, so being unable to play them would be a major loss. On Linux: we have many talented developers working on tools like Wine and Proton, among others. Wine is "a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, & BSD,"3 and Proton is a "[c]ompatibility tool for Steam Play based on Wine and additional components."4 Many games that don't use external anti-cheat software run fairly well using Proton. In fact, there's a website dedicated to informing others about how well a game runs using Proton: protondb.com.



However, there is another route that one can take: GPU passthrough. This is basically glorified dualbooting in my use case -- I only use one GPU -- but I find it fascinating. Additionally, the Arch Linux wiki has an entire page dedicated to setting it up5, which makes it much easier to get up and running. Essentially, it works by giving a virtual machine control over some of your hardware, while your system is still running. One downside is that the wiki page was not made with single-GPU setups in mind, which meant I had to do some hacky stuff to get it working properly. Despite that, it works very well, with almost baremetal performance.



The main reason I set up passthrough (aside from wanting to play games that didn't perform well with Wine or Proton) was in order to easily return to my Linux system without going through POST. I have a fairly old motherboard that takes upwards of 15 seconds to POST, according to systemd-analyze. Instead, I just shutdown the VM and I'm back in a matter of seconds, notwithstanding Windows updates being shoved down my throat. I also have complete access to my Linux host while the VM is up, through SSH on WSL. This isn't necessarily as important, but there have been occasions where I needed to grab a file from Linux while in Windows, and shutting down would have been more of a hassle than it was worth.



Back to the original question: why do I still use Windows? The main reason is that many of the larger game companies still do not support or target the Linux ecosystem. Some indie devs have taken the hint, such as the people behind Slay the Spire, RimWorld, and Stardew Valley, to name a few. Even Valve has made most, if not all, of its own catalog work on Linux. However, larger companies such as Blizzard/Activision, EA, and Ubisoft are obstinately sticking to Windows and ignoring Linux. Many would advocate that I "vote with my wallet" by not purchasing games that don't play nice with Linux, and while I agree with the sentiment, my entertainment is more important that principle. However, I do make it a point to purchase games that I am interested in when they support Linux natively.



1

https://github.com/swaywm/sway/


2

https://wiki.archlinux.org/index.php/Arch_Build_System


3

https://www.winehq.org/about


4

https://github.com/ValveSoftware/Proton


5

https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF






Thank you for toughing through my ramblings! I hope you got something out of it.



Special thanks to Drew DeVault for challenging me to do this, as well as for providing feedback on my rough draft. I suggest you take a peek at the specifics, if you're interested: https://drewdevault.com/make-a-blog



There is more to come, stay tuned!