It’s a bit funny, around 3 years ago I started this blog, sharing my experience with switching to Linux. Back then I thought Linux was still great, despite the issues I encountered. To be clear, I still do think so now. Its amazing you can do so much with a free (in both senses of the word) operating system. But in the time since I started using Linux, my opinion on software has shifted considerably. There was a point in the past few years where I considered that free (as in freedom) software was the only viable choice and that everything else was pointless because it encroached on user freedoms. And while I still hold on to a similar opinion, that free software is often better because its user respecting, I’ve come to an even more important conclusion: computers are tools, and a tool that can’t do what you need it to do is useless.
Thats why I’ve switched back to Windows. For the longest time, Linux was meeting almost all of my needs. For the few things that didn’t work, I either lived without them or would dual boot Windows to take care of whatever minor task. The issue now is, the way I use my computer now is completely different than it was a few years ago. I regularly use programs that are Windows only and aren’t compatible with WINE or Proton. And for some of the ones are do have Linux versions, they didn’t have the features I needed on the Linux builds. So my Windows partition became more relevant, and often times the task of just having to stop everything and reboot was enough to prevent me from doing the work I needed to do in Windows. That’s not to mention the countless things that just didn’t work at all on Linux that I should have been able to do (cough cough printing cough).
So I’ve been on Windows for a bit now, and its nice being able to work without issue. That doesn’t mean I like Windows, I still have several problems with it. First and foremost, Microsoft loves forcing unnecessary stuff onto user. Retail versions of Windows, 11 more so than 10, are horrible about this. Luckily, the LTSC version gets to avoid most of that crap, and even more luckily its easy to get your hands on a copy for “evaluation”. Better yet, the LTSC version gets that long term support, so its still good to use even after Microsoft sunsets the retail version of Windows 10 in October this year.
Another grievance I have with Windows is software distribution. Its horrendous. Linux does it right, with a central repository for all the software you want for your distribution. If thats lacking, sources like Flathub offer a comprehensive alternative. Windows has the Microsoft Store, which not only requires an account, but isn’t even present on LTSC versions, making it a no go. That leaves you with googling and running random exes from online, which is an easy way to get malware on your computer. And I know projects like Chocolatey exist, but they aren’t nearly as comprehensive as any built in package manager for Linux and ultimately target the enterprise sector instead of actual end users.
And on the topic of software, the options are horrendous on Windows. Frankly, all the defaults suck. Default photo and video viewer can’t view modern formats. Notepad can’t properly read different text encoding. Explorer is horribly slow at every thing it does. Properly extracting files from other locales is a nightmare. And all of this would be a relatively minor thing if the tools I used on Linux had Windows builds, but no, most of them don’t. So I go searching for alternatives and basically find a bunch of ads for paid software. Whatever, just append “open source” and “reddit” to my query to get decent results. And to be fair, there are good alternatives out there that meet (most of) my criteria, its just baffling to me that the defaults suck so much. Its also a little frustrating to see that a lot of the alternatives stick to Windows design philosophies, which makes sense given who they’re targeting; it just irks me a bit because I’m much more used to the paradigms most Linux software follows.
Windows itself is also hilarious incompetent. I’m using to using a tiling window manager, but going back to a floating one wasn’t a huge deal. What is a huge deal is how inconsistent window snapping is in Windows. Whenever I snap a window to take up a portion of the screen, there is about a 25% chance it will prompt me to pick another window to fill up the rest of the screen. This is the behavior I want, why doesn’t it do it 100% of the time? Thats not to mention that sometimes when I try to snap something where my monitors meet, it doesn’t always work. And sure, Windows has keyboard shortcuts to manage this, and those work much better for managing the position of windows, but its horribly cumbersome to switch between active windows and move them around. I really have been taking the work my tiling window manager did for granted.
But I think the worst thing Windows does is not have a robust way to control it programmatically. I know every new Linux user is intimidated by the command line, especially when the GUI lacks whatever they need to do and they’re forced to use it, but I didn’t know how much more beneficial it was to have that as an option. Let me tell you my issue: I play a game that can only be played on a portrait display. One of my monitors is on an arm that easily lets me rotate it, so its not a huge issue. The actual issue is rotating it in software. On Linux it was simple, my window manager had a command to accomplish this, so I modified the launch script for the game to run that on every launch and exit so I didn’t have to worry about it at all. So I come to Windows and start setting things back up, including my little automation. But how do I rotate the screen on Windows? A quick google says to do it via settings. No good, I want to automate it. Further googling presses me on to keyboard shortcuts. That doesn’t work, both because it doesn’t meet my needs and because it doesn’t actually work. Even further googling leads me to this script, something that actually meets my needs. And its funny, because I took the time to read it and its the worst thing I’ve seen. Or well, the code is actually rather nice, its just that one shouldn’t have to go to such lengths to interact with their system. Windows doesn’t expose any API to interact with basic configuration via code, so you end up having to write stuff that calls on the bare metal DLLs to accomplish anything. Its absolutely horrid, and thats not to mention that PowerShell is abysmal when compared to Bash, so doing any sort of small scripting in an easy fashion is out of the question.
Frankly, all of this is minor nitpicks. I can do the work I need to do on Windows no problem, and even more so I don’t need to deal with unexpected downtime because something broke (LTSC avoids random forced Windows updates!). I’m just frustrated I have to trade off between the major things working or having some quality of life while using my operating system.