Table of Contents
When I was much younger I used to run Linux on the desktop, and tinkered around with the popular distributions of the day. I used to daily drive various distros like Ubuntu, Fedora, Mint… it was a good time. My preferred desktop environment at the time was GNOME 2.
I eventually became a Mac OS X user in 2011 after getting my first MacBook. I’ve been a happy Mac guy for a long time now, but I’m a bit concerned about the direction Apple’s going with their software at this point.1
In reaction to these macOS changes, I’ve been thinking about running Linux on the desktop. However, I didn’t want to sacrifice my bootloader on my desktop, so I decided not to do it.
In the past, I’ve nuked a few BCD records this way, resulting in me breaking the Windows bootloader, which then meant I lost a bunch of time to trying to fix my existing setup. I wasn’t keen on repeating this experience.2
Steam Deck and a taste of KDE
I’ve written about my Steam Deck experience on two occasions. Since I purchased my unit in 2022, I’ve been confronted with desktop Linux on an ongoing basis. SteamOS, the Linux-based operating system on Valve’s hardware is based on Arch Linux, and ships with KDE.
Still, I purchased a Steam Deck because I wanted a gaming handheld that I would not have to tinker with. I didn’t want hardware that I could do software development on or experiment on. For that, I’ve exclusively used my desktop computer, or a Raspberry Pi (with RetroPie) in the past.
I’ve left my Steam Deck pretty much unmodified, with very little tweaks to the desktop mode. It exists solely as a gaming handheld with EmuDeck for emulation purposes, and Decky Loader for a few plug-ins.
Every device in my household has a singular purpose. My Steam Deck is for gaming. My gaming PC is for high-end gaming experiences. My Mac mini is for personal software development. My work laptop is for work.
(I keep these devices separated from each other intentionally, when in reality there could be some overlap if I wanted that.)
Since I wanted to keep my Steam Deck as-is, without extra software or Flatpaks on it intended for software development, I went looking for alternative hardware that I could buy to see if I could use Linux as an alternative to macOS. Preferably, some hardware that would not break the bank.
Yes, the notion sort of seems wild after having been a Mac user for over a decade at this point, but it is something I evaluate every now and then. I want to be able to migrate away from the platforms I’m bound to if needed.
Finding the perfect testing hardware
What’s better than a mini PC, then? Laptops tend to be pricey, but mini PCs can be very affordable. The Mac mini is actually a wonderful example: my M1 Mac mini has just been chugging along like a total champ for the last few years.
What if I got something even cheaper, but ran Linux on it, as an experiment? I’d been seeing some YouTube videos on the subject lately, too, with a recent video on the Beelink SER8 by Retro Game Corps. This particular mini PC was a bit too expensive, but there were some older models still available at great prices!
So, after doing some research, I ended up purchasing the Beelink SER5 with an AMD Ryzen 5 5560U – this little thing sports a hexacore processor, 16 GB of RAM and a 500 GB internal NVMe SSD. Not bad, for that price. Sure, a mini PC with components from a few years ago, but more than good enough for a PC intended purely for some experimentation.
So, this machine has become my “test” computer, that I use for all of my Linux needs. It is, in essence, effectively laptop hardware shoved in a mini PC form factor, with replaceable memory and storage, if needed. It has a bunch of ports, too!
The Beelink SER5 came in at a little over 300 EUR on Amazon, which is crazy cheap here in the EU (for a computer). I sure couldn’t build a mini PC myself for that price! It also came with Windows 11 Pro, which is usually a significant part of the cost.3
There are a few cheaper mini PC options available here in Europe, to be fair, but those are all Intel Celeron machines which are significantly slower, and not much cheaper.
Such a Celeron-based device would be good enough for browsing, sure, but not for software development. The good news is that I didn’t need an amazing integrated GPU for gaming, as I was not going to use this for gaming.
Instead, this hexacore CPU from a couple of years ago is a significant improvement, at a price sweet spot: not significantly more expensive than the Celeron mini’s that cost about 200 EUR. It’s not the fastest, but it is more than fast enough for a computer that isn’t my primary machine.
Deciding on a distribution and desktop environment
I knew that I wasn’t going to run Windows 11 on this particular device. Instead, I would be trying out a Linux distribution. I made a selection and settled upon picking one of these: Ubuntu, Fedora, openSUSE, Arch.
Even though I am rather familiar with Ubuntu on the server, I decided that I was going to be using Fedora on the desktop instead.
After doing some research, I found out that fractional scaling was best supported with the KDE desktop environment. This is relevant, because I use a 4K screen. Sure, I gave GNOME a brief shot, but I didn’t enjoy it much.
I was able to try various distributions by loading all of them on a single USB stick using Ventoy, which was incredibly helpful. This way, I could avoid needing to flash a single USB drive a bunch of times, and instead just load the various ISOs on there.
Trying Fedora Kinoite
One of the first things I learned about while doing my research was the concept of an atomic Linux installation.
Since I own a Steam Deck, I’m already familiar with this: SteamOS too, is actually an atomic install: the system partition is actually (mostly) read-only. Fedora Kinoite accomplishes a similar thing via rpm-ostree
.4
If you want to read more about how this works, you can find learn more here.
Due to the nature of the software you can install on one such atomic installation, you are somewhat limited to installing only software via Flatpak, which has various downsides.
Note: I would like to note that while it is possible to layer software on top of an atomic distro, you do have to reboot every time, which is a hassle.
In particular, Flatpaks are somewhat isolated from the rest of the system. Since I wanted to do some software development, I would have to use containers to make this work… which I wanted to avoid, at least in part.
Going non-atomic instead (for now)
After trying Kinoite and enjoying it, I wanted to see what the regular KDE installation was like. I could do away with using containers, and just install php
and have it available in my terminal without any issues.
Eventually, I may switch back to an atomic distro, but for now I’ve settled on the regular KDE installation that I can manipulate with dnf
, which is Fedora’s excellent built-in package manager. It’s old-school in a way I rather enjoy.
I ended up bumping into a few issues with file permissions and SELinux, so I eventually settled upon using Podman (which can use Docker compose files).
I also set up RPM Fusion so I have access to a variety of software that doesn’t ship with Fedora by default because its license is not compatible with the main repository.5 Also, I’m happy to report that the folks at 1Password ship a Linux app now that their front-end is Electron-based, so… at least we’ve got that now.
So, what is desktop Linux like these days?
In short: it’s not bad, but it’s not all roses and sunshine, either. Let’s cover a couple of topics. Let’s start with a bunch of annoyances, and then take a look at general use cases for desktop Linux.
Fractional scaling and Wayland
In particular, age old issues like fractional scaling that have been solved on macOS for over a decade now, are still an issue on Linux. That’s to say, I hear many of these issues are fixed or helped by the adoption of Wayland, which is a successor to X11, the window server that used to be the default on many Linux distributions.
Wayland is a communication protocol that defines how applications interact with a display server on a computer. Think of it as the language that software uses to talk to your screen. It’s designed to replace the older X11 protocol, which has been the standard for decades.
To be fair, I am not exactly well-read on this particular topic, but as someone who has a 4K display that he works on, KDE ended being the only option that I was able to correctly scale to 140-150% for my monitor.
Flatpaks and software updates
Software bundled using Flatpak tends to work on all Linux distributions (which is very helpful for us developer folk), and is, as such, often updated more frequently. So if you are looking for up-to-date software, you will likely end up using these.
There are two major benefits: these apps manage (bundle) their own dependencies, so things won’t break as easily, and they also run in a sandboxed fashion, which is a security advantage. You can manage these using System Settings on KDE to configure what various Flatpaks are allowed to do or access.
This sandboxing can have some downsides, but these are very situational, of course.
Here’s two examples where it was a hassle for me:
- 1Password wasn’t able to connect with the browser add-on correctly.
- PhpStorm needed a workaround to be able to run scripts and had difficulties running various developer tools.
Because of this, you may want to adopt custom repositories for certain applications which won’t work well when sandboxed or would otherwise benefit from a non-sandboxed approach. There are usually workarounds, but I don’t like workarounds.
For entertainment
There are also various media center distributions that center around Kodi (previously known as XBMC), which you can use with a dumb TV or monitor to replicate smart TV functionality.
- What will work: Turning your mini PC into a smart TV-like experience.
- What won’t work: Some DRM-protected playback on streaming sites at full quality.
For video games
When it comes to gaming, there are various distributions like Bazzite and SteamOS that are dedicated to making games easy to run on Linux.
Gaming on Linux is really nice, and older games will, at times, run even better on Linux than they do on Windows, ironically.
For more on that, please take a look at reviews of the Steam Deck, or read one of my blog posts. I also recommend checking out Lutris which has also become a lot easier to use in the last two years.
- What will work: Plenty of games on Steam. Older games.
- What won’t work: Games with anti-cheat, some of the latest titles with DRM.
For software development
It depends on what you want to do. Now, obviously, I won’t be able to maintain PHP Monitor (my native macOS app, which I build with Xcode) on Linux.6
Whenever you build native applications with the platforms’ own tools, you will still need access the original operating system and hardware: whether it’s Xcode on the Mac or Visual Studio (the big one, not Code) on Windows.
If you are interested in doing web development or sysadmin tasks, running a Linux distro seems feasible.
- What will work: Web development. System administration. Cross-platform software development. You can also use a VM, I suppose.
- What won’t work: Software development that requires Windows or macOS specifically; although you might have some success with Wine.
Conclusion (so far)
As far as I can tell, Linux on the desktop is about as polished as it has ever been, which is to be expected. Overall, desktop Linux environments appear to have matured over the years.
Additionally, attempts by players like Valve to make Linux more interesting as a platform for video games has also led to various DE improvements over the last two years, which is good to see.
When it comes to the hardware: I’ve only had this little box for a couple of weeks now. I have plans to write a follow-up post on this particular subject.
What can I say? So far, I rather like using Linux on this low-power, minimalist computer. It was a fairly cheap purchase, and I might be able to get a lot of mileage out of it, if I use it wisely.
Between the practices of tightened notarization and checking binaries before launching them, I wish Apple wasn’t so pushy about their operating system. I don’t consider notarization a bad thing, but it should be an optional, supplemental thing that you can turn off if you know what you are doing. Additionally, checking apps at runtime via their OCSP service even led to Macs freezing at one point. Here’s a good write-up on how macOS checks apps at launch. ↩
Due to the nature of booting multiple operating systems on a single system drive (or even multiple boot drives), it is possible for the Windows’ Boot Configuration Data (BCD) to become invalid. Each possible installation registered to the Windows bootloader is referred to as a BCD record or entry. It’s been my experience that systems that boot via UEFI via an EFI System Partition, are easy to break. ↩
Had this shipped with Linux, it could have been even cheaper, potentially! ↩
I’ve tinkered around on my Steam Deck before, but I didn’t want to turn it into a development workstation. ↩
For example, VirtualBox is unavailable by default, as are some video players and codecs. I needed to run
sudo dnf install libavcodec-freeworld --allowerasing
to install codecs for VLC. ↩The good news is that Swift is becoming easier to write for other operating systems, so perhaps this will change in the future. For now, though, PHP Monitor depends on a lot of macOS frameworks. ↩