Why I use Linux
The switch to Linux
I’ve been using Linux as my primary OS at home now for well over a year. It’s been 452 days to be more precise. What caused me to ditch Windows? It wasn’t because of some deep-seated hatred of Microsoft or Windows. I still use Windows in my work life. I’m a .NET developer, so I have a lot of exposure to Microsoft technologies.
The short answer is that it started as an experiment. I’ve always been a fan of Linux, but have mostly stuck to Windows as my main operating system simply because it ran the games I played and the software I used. But then things started to shift. Valve came out with the Steam Deck and was helping to advance gaming in Linux through Proton. Microsoft even started having a friendlier stance towards Linux. Some of my favorite tools now worked in Linux. I could even use dotnet to develop C# apps in Linux. All of the anchors that kept me tied to Windows were gradually being cut loose. I felt like I might finally be able to use the OS that I really wanted to be using for my everyday usage.
My first instinct was to just start using Ubuntu, which was the distro I have used in all my server setups for the past 10 years or so. Then I talked to a friend of mine. He was also thinking of switching to Linux, but he was considering an Arch-based system. After a bit of research and testing some distros out in a VM, I decided to do the same. I eventually settled on Endeavor OS. I’ve played around with a number of desktop environments, but have currently been using Xfce and like how lightweight it is.
452 days later, I’m still glad I made the switch. Since I started this experiment, I’ve only booted into my Windows partition a handful of times, and the times I did it was usually to move things around a bit in prep for handing partitions or drives over to Linux.
Why Linux?
I’ve always enjoyed using alternative operating systems, all the way back to the OS/2 Warp days. I’ve used multiple flavors of Linux over the years. It has more security features and makes certain things much easier than Windows. I love that I can do pretty much anything I want from the command line.
One of the big drivers of this switch was probably the ease of setting up dedicated servers for games. Most games that offer a dedicated server have one that runs on Linux. Frankly, running a dedicated server on Windows sucks. Often times you have to jump through hoops to be able to run the server and not have to keep the terminal window around, and trying to set it up as a background service usually requires additional software. In Linux, if you want to start up a quick server in the background without setting it as a service, you can just start up a Screen or Tmux instance, start the server, then disconnect from the Screen/Tmux instance and let it run in the background. If you need to go back to that terminal, you connect to it again whenever you want.
Of course, if you are really going to run a dedicated server, you should probably setup an actual service for it. This lets you do things like resume the server on a reboot and shutdown gracefully. Unlike Windows, that sort of stuff is built into Linux through things like systemd.
I also like to easily be able to use a separate user to run my dedicated servers in. These users have no sudo privileges so even if there ends up being some security hole in the server, there isn’t a lot that will be compromised outside of the user space of that user. You can also do this in Windows, but it isn’t nearly as easy to do from the command line.
Outside of games, Linux is also great for other server-based stuff. I can easily spin up a web app or docker container and host it on my Linux machine. I can even generate SSL certs and have them automatically updated with certbot. I’ve also got a number of scheduled tasks that run periodically. For instance, I have a couple of Python apps that do things like scrape the most recent Xkcd comic and post it to a Discord server. While you can also do these things in Windows it always feels more complicated than it needs to be.
At the time I made the switch, I had a VM running Ubuntu Server on a TrueNAS box I had built from old PC parts. I could have just done most of this there, but when it came to game servers, I knew the performance of the VM was nowhere near what I could achieve if I hosted them on my main rig. For a bit I setup a VM in Windows for better performance, but then I started to think that if I just ran Linux I wouldn’t have to set aside a certain amount of RAM and CPU cores for the VM to use. It’d just have access to all of it.
How is compatibility and performance of games?
Gaming on Linux has been going surprisingly well. Steam games mostly just work. I run into the occasional issue where I might have to configure Steam to use a different version of Proton, but I haven’t run into anything that was too much of a headache. When games are running, they seem to perform just as well as they do running under Windows. Performance has not been an issue for me.
I should note that I don’t play a lot of competitive PvP games anymore. Games like Battlefield 6 just won’t run because of how they implemented their kernel-level anti-cheat. There are games with kernel level anti-cheat that do work in Linux, but only because the game developer allows the exception. Kernel-level anti-cheat in Linux really doesn’t run at the kernel-level because of how things are running through a Wine/Proton emulator. Some games (like BF6) just don’t allow that, and are therefore unplayable in Linux.
Games that are distributed through the Microsoft store are also unplayable in Linux due to the way they work. So PC Game pass games are not available to me unless they have a streaming option. I can use Greenlight to stream those, or connect to my XBox and stream games from there.
Other than Steam games, I’ve also gotten games like World of Warcraft to work. I don’t really play much WoW anymore, but I tried it out for a bit just to prove it could be done. It worked great. I’ve also been able to play some games from my Epic games library using the Heroic Games Launcher. So I have a bunch of options for playing games in Linux.
The one thing I have not yet got to work properly is streaming Steam VR games to my Oculus headset. I’ve tried a couple different times, but usually give up after a bit. It’s been a while since my last attempt, though, so maybe I should give it another go. Although, Valve has their new VR headsets coming out that may tempt me depending on the price point.
What about non-game software?
For non-game stuff, I’ve found that a lot of the stuff I ran in Windows either has a Linux version, runs in Wine, or has a suitable native Linux replacement. I use VS Code for a lot of my programming and they have a Linux version of it that works great.
We use MS Teams at work and I have to use the Progressive Web App (PWA) version of that, but it has most of the same features as the desktop version. The one feature I miss is being able to popout shared screens into a separate window.
When I am working from home, I am able to use Remmina to connect to my work laptops through RDP. It took me a little bit of initial setup, but I’ve got it working great now, including clipboard sharing.
Office has web-based versions of their apps, but for personal stuff I was mostly just using Excel. I’ve started using Google Sheets instead. There are desktop apps like LibreOffice, but Sheets does all I really need and there is one less thing I need to install on the PC.
I also have my OneDrive files hooked up using onedriver for cloud storage. Sometimes it seems to lose connection, but for the most part it works pretty much just like One Drive in Windows. I have also started to use SyncThing for syncing files between devices including my phone. It’s not exactly the same as cloud storage, but it’s a great option if I just want to share files between devices and don’t necessarily need them backed into the cloud somewhere.
Conclusion
The move to Linux has been great for me. I love all the options I have for customizing my desktop environment, and can do pretty much everything I need to be able to do. Now when I work on Windows for work related stuff, I find myself missing stuff in Linux. Even just little things like the way the edges of windows can snap together when you are moving them around. I don’t see ever going back to Windows for my main home PC. I am at the point where I am not even sure I need to dual boot Windows. My Linux install may be getting another dedicated drive sometime in the near future.