Linux Adventures

Published Jun 15, 2024

#dev#tech#linux
img
img

Table of contents

Why leave Windows?

I have been using Windows since XP although I was pretty young when using XP. The first version of Windows I remember using extensively was Windows 7 and I remember it being a good experience. Windows 7 was a solid OS. It was fast, it look modern at the time and it was user friendly. It kept many of the things that made XP work so well but streamlined a lot of the daily use-case stuff. But after 7 is sort of where the trouble began for me and many other people. If you were around for it, then you know that Windows 8 was not at all well received by pretty much anyone. The misdirected focus on a touch friendly interface was a turn off for pretty much the entirety of Windows’ power users and most of the other changes felt unnecessary as well. And from there the journey continued to be a rocky one. Some stuff worked out well. Most people did consider 8.1 a much improved version of Windows 8 and following that we had Windows 10, which was also pretty well received. But especially with Windows 10, one trend became more noticeable. Microsoft seemed be unable to actually escape its own past. The number of legacy options grew larger and with it the number of doubled functionality. We had two different settings menus because Microsoft was well aware, that their new implementation of the settings wasn’t nearly complete enough to actually replace the Control Panel. So things started feeling a bit off. These problems reached a peak with Windows 11. So much of the interface was now cluttered with these jarring transitions from the new design of Windows back to all the legacy apps and functionality that they had to leave in. It took many updates for the OS to become more usable. Arguably it took a good amount for it to become usable at all. But those are more so general things that every Windows user has lamented about at least once or twice in their lifetime. Let’s talk about some of the problems I had and why I finally decided to make the switch in 2024.

I will actually start with a positive! I personally always liked the general design language Microsoft decided to go with for Windows 11. I actually liked the rounded corners, the increase of transparent elements, the sort of glass like styling of things. However, I’ve had my share of issues as well and just annoyances. I have been using WSL (WSL 2 to be precise) on my Windows machine for years and I always found it to be a great addition. It made so many of the development tasks so much easier. The Linux terminal is just superior to CMD or PowerShell in my opinion. Microsoft seems to agree because as time went on, they put in a lot of effort to make PowerShell behave more like a Linux style terminal but putting in many default aliases such as ls for Get-ChildItem and so on. But as I was using WSL more and more and especially after actually running full Linux distros on my Laptop for a few years, I felt more and more that it was time that I made the switch on my Desktop PC as well. Through the exposure I’d gotten with using Distros like Ubuntu, Mint and Arch natively on my Laptop and a lot of the things I’d learned about the Linux Command Line, I’ve felt ready to actually switch for a long time. The final nail in the coffin was actually an issue I started having on Windows with memory usage. For some reason, my Windows decided to just randomly start eating up all my memory. My system has 32GB of memory but that didn’t stop Windows from grabbing as much as 12GB immediately after start-up and with not many applications open at all. After about 6h of usage, the memory usage would jump to above 95% and would often peak at 100% at which point I would of course start having issues. When a OS runs out of memory, it begins a process called paging where it starts unloading parts of the data stored in RAM to other, more slower, storage like your hard drive. Even a fast NVMe drive isn’t fast enough to make that process smooth enough to not cause stuttering. So, with that issue and all the annoyance it caused me, I was faced with a choice. I either could re-install Windows to hopefully fix the problem, or I could use the chance to just switch to Linux as I had planned to do anyway. The choice was clear.

The switch to Linux

Even before actually making the switch, I’d pretty much decided on the distro and DE (Desktop Environment) that I was gonna use. I’d seen some videos about the new KDE Plasma 6 and I really liked what I saw. I mean, look at this and tell me it doesn’t look really appealing.

img
img

As a distro I knew that I wanted to use Arch (btw). I’m aware that other distros like Debian run more stable but I just really like the convenience of having access to new software as it comes out and also the Arch User Repository (AUR) and I’m not that afraid of breaking my OS to be honest. I have long since made sure to keep my important data on a separate medium (which currently is a NAS) and make sure that, in the event of some catastrophic failure, I would not lose anything that actually important. Additionally, Arch has shipped with a nice install-script for a while now which makes the experience of installing it a lot smoother in my opinion. It even lets you chose your DE and KDE Plasma 6 is one of the options. So I went right ahead with that. If you wanna see the install script in action, here’s a video that goes over it by DistroTube. It even lets you chose your graphics drivers (we’ll talk more about that later, believe you me.)

The first hurdle

After going through the install, everything was actually working really well right away. I logged into Plasma 6 on Wayland (I’ll probably go more into what Wayland is later on) and I had my functioning DE. So far so good! I played around a bit and installed some basic software like Neovim and what have you. This time I actually made sure to take good notes of all the things I was doing, so that I could repeat the steps later if needed but also, so that I could undo the steps in case something breaks. So everything was perfect then right? Not quite. After rebooting for the first time and trying to log back into my DE, I was immediately greeted with a black screen. Oh boy — I thought, and quickly fell back onto X11, which luckily does come as an alternative with most DEs that ship with Wayland now. So after only one reboot, it seemed I’d already permanently broken my entire desktop environment. Great start!

I teased it earlier so let’s talk a little about Wayland vs. X11. I’m not gonna go into much detail because I genuinely only have surface level knowledge myself. You can find much more information about it online if you are interested. The gist is that they are both Display Servers Protocols. They are ways for the programs running on your computer to interface with the OS. Sending and receiving user input and displaying video and even playing audio. The rabbit hole runs deep! The important part here is that X11 (or X Window System Version 11) has not been updated since 1984 and is considered abandonware. It still works fine but it will never have modern features such as HDR support because HDR simply didn’t exist when it was last updated. Wayland on the other hand is in active development as X11’s successor. Wayland has been the cause of much suffering to many Linux users. I do feel like in the last few years, Wayland support has gotten a lot better but there are still issues. In 2024, one can definitely daily drive Wayland though. So, to summarize: X11 old, Wayland new!

Back to my issue. It turns out I just needed to RTFM (Read the friendly manual). Wayland just does not work out of the box without some slight changes on Nvidia Graphics cards. I’ll spare you the details but the procedure is rather simple and only involves setting some environment variables. You can read about said details here though if you care to. With those changes in place, my Wayland DE was working once more.

Pleasant surprises

One of my biggest worries about moving to Linux was actually about the lack of support for some of the hardware I use on a daily basis. And the main piece of hardware I’m talking about is my GoXLR Mini. The GoXLR has its weaknesses but I’ve always loved mine and it’s always worked really well for me! I’m not someone that produces music or has like a whole voice over recording setup. I just stream and I want to have a way to plug in my XLR microphone. And the GoXLR is perfect for that. It registers as many separate audio input and output devices and then allows for routing of those devices. Sadly Helicon decided to discontinue the device but they are still making software and firmware updates for it. However there is no official Linux support for the device and there never will be. In the past, I had looked into the solutions created by the community, mainly this project called goxlr-on-linux but I had no success with it when I tried it a number of years ago.

I’m not quite sure what changed but upon booting into my DE, I noticed that the devices of the GoXLR were just being recognised by pipewire audio! So that was already a good start. Not only that, I also found out about a project called goxlr-utility. An open-source Project wich aims to be a feature complete replacement for the official software and let me tell you it is! I was able to load up all my saved profiles from the 1st party app. It’s fantastic and even provides some improvements over the 1st party version. For example: it comes with a fully featured CLI which makes it super easy to integrate with other software and it makes it scriptable. With it, I had all the functionality I had on Windows for my GoXLR and I couldn’t be happier. If you too are held back by a fear of lacking hardware and driver support, I can tell you that things aren’t bad at all in the Linux world when it comes to those things!

Setting up a Windows WM

One of the last pieces in the puzzle was getting a Windows Virtual Machine running. For some things, I still needed access to a Windows environment. Luckily the process was easy. I decided to go with QEMU over VirtualBox for added performance. I followed this guide to get everything running. Do note that you might have to reboot afterwards for all the changes to stick. After that setup I installed Virt Manager as a front-end and set up my Windows 10 machine. I decided to go with Windows 10 because I didn’t really need any of what Windows 11 brought to the table and not having to deal with Secure Boot was also a bonus. I followed some of the steps Chris Titus Tech outlines in his video about it. To connect to the actual WM I did find that the most convenient way for me personally was actually using RDP with a program called Remmina. After setting up the basic settings needed for remote desktop connections on Windows 10, I was able to immediately connect using Remmina. The big advantage of RDP in my opinion is that the resolution dynamically changes to whatever window size you have it running at. It’s perfect for multitasking. I don’t really want to be confined to full screen when I’m using my VM.

With this setup I can launch my VM in Virt Manager with one button press.

img
img

And then simply connect to it with Remmina.

img
img

Works like a charm!

Window- and screen-sharing on Wayland

This is a whole rabbit whole on its own but I just want to mention that I have been unable to make screen sharing work on Wayland properly. Sometimes it works, sometimes it doesn’t. Going through some strange steps like actually closing the Desktop Portal app (which is the app that ensures screen sharing working at all under Wayland) and then starting a screen sharing session usually works. However, I cannot get screen sharing to work inside the discord app. It only works in the browser version for me and there I’m limited to 720p wich is less than desirable. Further more, I have been completely unable to make display or window capture work in OBS. I’ve tried many things, read many articles online but without success. Currently, I have decided to stick to X11 due to those reasons. My current setup works smoothly both on X11 and Wayland and there seems to be no issue with switching either. In fairness, it’s not Wayland that we have to blame here. The issue is that Wayland is more strict with what it allows other applications to see and access. That isn’t a bad thing and increases security and the chance of one app spying on another. Screen sharing can work on Wayland, it is just that native support for Wayland is still a far cry from the norm so most apps actually work via a sort of emulation layer to X11. As Wayland becomes the standard and we see more support, hopefully all these issues will just go away but for now, they are real issues and it is what’s keeping me from switching to Wayland permanently.

Final thoughts

Overall I do not regret the switch to Linux at all. I’m having a lot of fun again, tinkering with my computer and trying to learn new things and make it more my own. Just recently I finally learned about GNU Stow and how it can help me with my dotfiles. I’ve been learning much more about Bash scripting too. Overall, I’m really happy in the Linux world and I feel no need to go back. For the ultimate Emergency I actually kept my entire Windows install on my 2TB SSD, ready to fall back to if need be. But so far, this need has not arisen a single time and I don’t see that changing. To anyone that’s considering moving over to Linux, what with the recent news of Copilot Recall and other more than questionable decisions that Microsoft is making, I highly recommend people give it a try. I am even half way into convincing my mom to switch to Linux and give it a try. An experiment that I’m actually very interested in!

Yves' Playground © 2024 GitHub page with source code here.