Trying desktop Linux in 2023 - Part 1

I really want it to be good

I’ve mainly been a Windows user since… well since I migrated away from MS DOS. Most of my time using computers has been spent in front of Windows 3.11, 98 SE, XP, 7 and 10 with some regrettable detours into other people’s Vista installations. For university I had a MacBook Pro but even then I still had Windows on my desktop PC at home. Currently I have a personal desktop PC, a personal Framework laptop and a work laptop, all running Windows 10,

With all that being said, I’m not a hardcore fanboy who wouldn’t use anything else. I have been experimenting with Linux since the 2000s, have bootstrapped Gentoo on old Pentium 3 laptops and once challenged myself to get something usable out of a Pentium MMX laptop with 16 MB RAM. I have several servers and headless Raspberry Pis that run Linux (mostly Ubuntu) and I wouldn’t want it any other way. On my Windows machines, I use WSL quite extensively because it’s a way better command line experience than what Microsoft’s own tools could ever offer. So it probably comes to no surprise that the occasional frustrations with Windows make me think of the grass is greener on the other side and if I should give Linux on the desktop another try.

This post is meant to summarize my experiences with one such attempt. Please don’t see this as a definitive guide to decide if you should use Linux on the desktop. I will get things wrong. I will miss obvious solutions. Everything you read here is just an opinion, nothing more. If you read this and you know better, I’d be happy to hear what you have to say.

My needs and test environment

For now, this just an experiment to see if I like Linux desktops in 2023. I probably won’t ditch my Windows systems any time soon even if this goes well. I’ll just put something on a spare external SSD, hook it up to my laptop and use it for a few days for my daily non-work stuff. On the more mundane end this includes checking emails, browsing the web, chatting on Discord (yes, yes, I know. I can’t help that most of my contacts aren’t on Matrix), watching YouTube videos and writing this post. If I find the time, I’d also like to work on some of my software projects which means setting up proper development environments for web, C++ and C#. I would also love to do some photo editing but neither Photoshop nor Affinity Photo are available on Linux and familiarizing myself with Gimp, Krita or darktable would probably exceed the scope of this experiment.

On the hardware side, I’m running my regular daily driver, a 12th gen Framework 13 with an Intel Core i7-1260P, integrated graphics and 32 GB of DDR4 RAM. Running the system on a SATA M.2 SSD in an external USB 3.1 case might affect performance a tiny bit but I don’t have any spare NVMe SSDs on hand and I don’t want to wipe my existing system for this experiment.

So many choices

Coming from Windows and macOS, my first hurdle was the overwhelming volume of different distributions and desktop environments. As I said before, my past experiences are mainly with Debian- and Ubuntu-based distributions, at least in recent years. Desktop-wise I remember tinkering with Gnome, Mate and Xfce while not really liking either of them. For this attempt I spent a bit of time looking around, hoping to find some solid recommendations. Instead, what I found were either very opinionated “Here’s what I use and everything else sucks” posts on social media or long lists of Linux distributions that list the top features of each without explaining the differences in depth.

I see myself as an experienced user. I have a degree in computer science, have worked as a software engineer for over a decade and have never shied away from trying something new and this still hits me with choice overload. I would imagine that a less technologically inclined user would already have given up at this point. Even if they were motivated to find something that fits their needs, they have no way of knowing what the jungle of Manjaro, Ubuntu, Pop, Mint, Fedora, Debian, openSUSE, Solus, Arch, Gentoo, Slackware and about a dozen more means for them. They will either pick one at random, let a well-meaning family member set them up with whatever that person is familiar with (regardless of different needs) or just go back to a simpler place where there is just one Windows and one macOS.

In the end I decided to go a bit outside my comfort zone and pick something that’s not based on Debian or Ubuntu. I won’t pretend I had any strong reasons for this, I just wanted to use this occasion to dip my toes into a different ecosystem. From the long list of options, EndeavourOS stood out to me. Based on Arch, suitable even for weaker hardware and with nine different desktop environments to choose from I was in for a lightweight system that hopefully lets me customize it just the way I want it. I could have chosen a proper Arch installation but judging from my previous experiences that would probably have taken way more time than I would be willing to invest.

For the second choice - a desktop environment - I again decided to try something new and landed on Budgie. It looks clean is supposed to be customizable and doesn’t feel to different from what I know from Windows 10.

The setup experience

Setting up EndeavourOS is about as simple as it gets. Download the ISO, use Balena Etcher to write it to a USB stick, reboot, find out that secure boot is enabled, reboot again, disable secure boot, and eventually you’re greeted by a minimalistic Linux desktop and a graphical installer. I didn’t take any screenshots but the choices you have to make are not too different from installing Windows or macOS. You pick where to install the system, optionally tweak the partition layout, configure your language, layout and location, set up your first user account, all the normal things. The only big exception is that it asks you to pick one or more desktop environments to install.

A nice touch that I’d like to for all operating systems is that in typical Linux fashion the installer is already a fully functioning system. If something goes wrong, you can just open a browser and look for a solution. You have access to a command line and to all existing drives so you can theoretically use the installer to repair an existing installation. Or you can just try if you like the distribution without writing a single byte to your SSD.

Making it my own

The first thing to do in any desktop operating system is obviously to install the stuff you need and tweak a few settings. The former was relatively easy. While I couldn’t find a GUI frontend for the package manager and pacman -h is not very helpful when you’re not familiar with its terminology, a quick google search did help. Turns out pacman -S installs and pacman -Ss searches for available packages. I wouldn’t have expected “sync” to mean “install” but fine.

By the way, the EndeavourOS team answers the question why pamac - apparently the most popular pacman GUI - isn’t included with a condescending “you need to learn how to cook properly before we give you a microwave” analogy. I’d be fine with them saying that they only want to ship the bare minimum and many users don’t need it and would rather install their stuff through the command line but on the other hand, EndeavourOS includes tons of things that I will most certainly never use: two different screenshot tools where one would suffice, three different terminals, avahi SSH and VNC browsers as well as their favorite compare and merge tool. Oh and Gedit which I promptly uninstalled. I would have expected a self-proclaimed “terminal-centric” distribution to force me to use vim. Or emacs. But no, a package manager frontend that helps new users install the things they need is where they draw the line.

Why would anyone want to adjust graphics settings?

Now, the settings are where I was rudely reminded why I had always felt that Linux desktops are in an eternal beta state. My laptop has a native resolution of 2256x1504 pixels in a 13.5“ screen. This means that at 100% scaling everything is tiny but at 200% it’s huge. Fractional scaling which has been available in Windows since Vista in 2007 is still considered highly experimental and doesn’t seem to be available from the “Budgie Control Center” or “Budgie Desktop Settings”. Another google search later I came up with xrandr --output eDP-1 --scale 1.5x1.5 which kind of works. Putting that into an .xprofile as a forum post suggested caused problems though. The desktop was rendered at 100% in the top left corner of the screen and without a task bar. All I could do was force myself into a TTY session with Ctrl+Alt+F2, revert the change and restart the X-Server. If I didn’t know how to do that, I would have had no chance of getting my system back into a usable state. So far I haven’t found a reliable solution and just run the command every time I reboot.

One very annoying thing that I noticed is that scrolling in most applications as well as loading a website in both Firefox and Vivaldi causes weird tearing-like artifacts. While I’m not 100% that this is because I’m missing the proper drivers or configuration for my integrated Intel Xe Graphics I decided that it’s worth checking. The arch wiki has its own section about tearing with Intel graphics which is a nice surprise. It asked me to edit /etc/X11/xorg.conf.d/20-intel.conf which doesn’t exist on my system so I had to create it and guess which of the two different Intel drivers is the correct one. After that change it kind of feels better but still not perfect so I’m not sure if it even did anything at all or if I’m just imagining it.

Edit: Nope, problem still persists and is especially visible when watching videos.

All in all it all feels like the kernel modules, the X-Server, window manager, desktop environment and applications all fight each other and I as the user am expected to understand who is responsible for what and which of multiple config files I have to manually tweak to get everything to behave.

Other annoyances

There are other things that still feel weird. Going over all of them in detail would make this already long post even longer so I’ll just summarize.

  • I can adjust the cursor speed of my touchpad but not the scroll speed.
  • Fonts that I installed through pacman (such as ttf-roboto) don’t show up as possible default fonts in the “Budgie Desktop Settings” application.
  • Font rendering overall looks very different from what I’m used to in Windows which isn’t a huge problem but makes even familiar applications and websites just a tiny bit off.
  • The automatic display brightness setting that’s enabled by default is pretty jarring.
  • Several applications such as guake don’t automatically recognize that the system is set to dark mode.
  • There is no fingerprint sensor support and getting it to work seems complicated and significantly different between distributions so I won’t even try
  • Even though my scaling approach works for most applications, some just can’t handle it and open fixed-size windows with the wrong dimensions so half the content is missing

Conclusion, for now

I’m not even a day into my experiment and this post is already way longer than what I had planned so I’ll draw the line for now and come back with a second post in a few days.

So far, I would say that my system does everything I need it to do but it does none of it particularly well. I’m used to having to configure quite a few things to make them work the way and I have learned to live with Windows 10 separating important settings between the old control center and the new system settings. And still, this is even more annoying. Even basic settings like UI scaling which pretty much everyone on a modern laptop needs are hidden in obscure places and every article I can find points in a different direction. Many features have multiple different implementations that require a specific combination of kernel modules, background services and frontends and I have no way of knowing which one will work well with the rest of my setup without spending hours digging through semi-relevant forum threads.

What surprisingly wasn’t a big pain point was the unfamiliar Arch ecosystem. EndeavourOS spared me from going through the manual installation steps and even those don’t look much different from what I did years ago with Gentoo. I still have to learn the more subtle differences between pacman and yay but all in all, that’s manageable with a few google searches.

I’ll give this a few more days to see where it leads me but I guess in the end I’ll be happy to return to my Windows 10 system.

Edit: Just to be clear, my problem isn’t “it’s different” or “it takes more effort to get running” but the fact that everything involves multiple different components, none of which were made for easy interoperability with each other and I can’t even properly google my problems because everyone uses a different mix of components so entirely different solutions may apply.