Revisiting Linux on the desktop
It's been over a decade since I last used Linux on the desktop! Time really
flies when it's not spent on tweaking your desktop environment and cursing
Nvidia's shoddy drivers. However, I figured I was long overdue for trying Linux
on the desktop again. Especially seeing as I'm a long-time Linux user on other
fronts, such as my personal servers, and it being a significant part of my
Why now though? I have an old gaming machine that I wanted to breathe some life into. The machine used to run Windows 10 and was booted at most a few times a year. With Microsoft seeming hell-bent on deprecating perfectly fine hardware by requiring TPM 2.0 in Windows 11, I figured I might as well switch to Linux.
To top it off I was greeted by a dialog instructing me "you must sign into your Microsoft account again" when I booted Windows one last time, although I had never signed into anything. It was an obvious sign to purge this abomination of an OS once and for all!
Choosing a distribution
So how does this go again? It's been so long. Which distribution do I choose? Which desktop environment?
On my trusty personal server I've been running Debian since 2015. Debian would probably work perfectly fine for my desktop too, but it's a boring choice.
The last desktop distribution I remember using was Xubuntu with the XFCE environment, circa 2013. My impression is that Ubuntu and its derivatives seem to have lost their way long ago, with numerous privacy concerns and lack of innovation. Besides, if I wanted Debian unstable I would simply run that.
I did have a few requirements in mind though:
- I wanted an immutable OS with low maintenance and safe upgrades
- I wanted to try KDE again. Not having used it since the 3.x days
Eventually I landed on Fedora Kinoite which comes with the KDE desktop environment (there's also Fedora Silverblue, which comes with GNOME). Kinoite is an immutable OS with reliable upgrades, with most applications being isolated in containers or Flatpaks.
The last time I ran Fedora it was called Core 2, so it's definitely been a while.
The OS itself is immutable and upgrades are managed through rpm-ostree - a
hybrid image/package system. In simplified terms
rpm-ostree maintains two
snapshots of the root filesystem. Whenever a upgrade is performed,
creates a new snapshot which you can then boot into. If anything breaks you can
simply roll back to the previous snapshot. Since everything is immutable, there
is no room for package conflicts or other broken states.
However, it's still possible to install additional packages by layering them on top of the immutable snapshot. This new snapshot will still be immutable though. Layering additional packages is often required in practice, e.g. to install non-free drivers. In my case I ended up layering the following set of packages:
$ rpm-ostree status -b State: idle BootedDeployment: ● fedora:fedora/37/x86_64/kinoite Version: 37.20230302.0 (2023-03-02T02:27:19Z)f BaseCommit: f14852827a340d0b159239b6455606cd308f7e5e133ef78a75335fbe0e07dc7b GPGSignature: Valid signature by ACB5EE4E831C74BB7C168D27F55AD3FB5323552A LayeredPackages: akmod-nvidia akmod-wl cronie emacs fzf htop mosh mozilla-openh264 restic ripgrep stow syncthing trash-cli xorg-x11-drv-nvidia zsh zsh-syntax-highlighting LocalPackages: rpmfusion-free-release-37-1.noarch rpmfusion-nonfree-release-37-1.noarch
This adds the non-free drivers required by my hardware, H264 video support in Firefox, a decent shell and the one true editor.
Most of my hardware worked out of the box, with the exception of my Wi-Fi
adapter which required a non-free driver (provided by the
nouveau driver was too unstable for me, causing the desktop to freeze
at random, so I went with the non-free driver (provided by the
Bluetooth audio just worked out of the box. Color me impressed!
But if everything is immutable, how do I install applications?
Desktop applications are available through Discover - KDE's software center. These applications are installed as Flatpaks, thus isolating them from the base system. I recommend enabling the FlatHub repository, which provides a larger library of software, including non-free software such as Spotify and Steam.
For development tools, Fedora Kinoite comes with Toolbox which is a simplified front-end for interacting with containers. As with Flatpak, putting tools inside a Toolbox keep them isolated from the base system.
HiDPI and fractional scaling
I use a 27" 4K monitor, and I prefer scaling the desktop to 1.5. This is called fractional scaling and its implementation in KDE/Wayland is far from perfect.
In most cases it works well for applications that installed natively. However, it does not always work well for applications installed through Flatpak. There's probably several reasons for this, such as the high variation in UI frameworks.
I had to apply some tweaks to the following applications for them to scale properly:
~/.local/share/applications. Then edit the file and add
--force-device-scale-factor=1.5 to the
VLC must be told the scale factor as well for some reason. Maybe it will be fixed in the next major version? If it's ever released.
Scale factor can be set with:
sudo flatpak override
I've been running Fedora Kinote for a month now, and I'm really enjoying my resurrected desktop. The only major issue I've had is getting all applications to do fractional scaling properly.
The fact that most Steam games work fine in Linux now was a nice surprise.
Upgrades have been a breeze! It seems obvious to me that this way of managing OS packages is the future for Fedora and eventually Red Hat. It's infinitely better than DNF directly mutating a rickety RPM database.