An attempt to submit to Silverblue

On 1 April I installed Fedora Silverblue 34 on my new Thinkpad P14S (I might write about the laptop later). It's been a bit of an adventure, so I thought I should document my experience now that Fedora 34 has been officially released.

The rationale

My ageing desktop runs Fedora Workstation. It has been my main operating system for about five years, and I have no real complaints about it. I occasionally look at what the lizards at openSUSE are up to but so far I haven't found enough reason to jump ship.

The appeal of Silverblue is that it's rather futuristic. I have been keeping an eye on Silverblue ever since I explored it in 2018. I like the concept of an immutable operating system. It took me a while to warm to it, but I now got to the stage where I feel running a LAMP stack, PostgreSQL databases and Python applications on Fedora Workstation is a bit dirty. It works, but separating the base operating system and applications just makes sense. Why wouldn't you do it?

The 'About' page in GNOME's settings. It shows I'm running the Silverblue pre-release and that the laptop is very beefy. Also, the wallpaper is just gorgeous.
My first screenshot. Click to embiggen.

My aim was to go all in. I wanted to avoid installing packages via rpm-ostree and slowly migrate my work environment to Podman containers. I was hoping to be comfortably spinning up containers left, right and centre within a couple of weeks. As a spoiler alert; that hasn't happened. But, I'm still running Silverblue.

Fedora 34

The beta release has been perfectly stable and I got only a handful of updates in the last couple of weeks. That may be because I was actually on Rawhide when I first installed Fedora 34 – I rebased to Fedora 34 only a couple of days ago.

As always, you get a vanilla GNOME desktop. Some people find the default GNOME desktop deeply troubling (this Fedora 33 review on YouTube is a good example). I personally prefer vanilla GNOME. I don't use GNOME extensions and the default Adwaita theme looks fine to me. That said, it is odd that there are no theme-related settings in the Settings application. Even Tweaks isn't installed, and it isn't available as a flatpak either. To change theme-related settings you can use gsettings (run gsettings list-recursively org.gnome.desktop.interface to view the most relevant settings).

New GNOME releases are never that exciting to me. The desktop environment slowly improves over time, which is good. The main thing I dislike about GNOME 40 on Silverblue is that the Alt-F2 quick launcher is even more useless than it is on Fedora Workstation. On a "normal" Fedora install you can open, say, Gedit by opening the launcher and typing "gedit". On Silverblue, you need to enter "flatpak run org.gnome.Gedit" instead. The workaround is to create shortcuts for common applications (i.e. Ctrl-Alt-G to open Gedit).

As for the new horizontal workspace layout, I genuinely don't understand why some people are upset about this. And, with my new hardware set-up I even like the fact that workspaces are only switched on the primary display. The laptop is my primary display and I got two external monitors. I can have a couple of workspaces on my laptop and quickly switch from one to the other, but nothing is moved on the external monitors. This works surprisingly well for me, and it's perfect for RDP sessions running on external monitors.

The new activities overview in GNOME 40.
The new activities overview. Workspaces are now displayed horizontally. It's fine.

The new swipe gestures for switching between workspaces are great as well. It is a pity that the gestures only work under Wayland. As an RDP victim I need to run an Xorg session a couple of days per week, and I genuinely miss being able to switch workspaces by swiping the trackpad. For me, this is the first time Wayland has a tangible benefit over Xorg. The reason for using Wayland always seems to be that Xorg apparently is and old piece of crap. But then everything does always work with Xorg, and you get nice tools such as wmctrl. There's now something that works on Wayland only.

Fedora is of course interesting for what's happening under the hood. Many interesting new technologies first appear in (and are actively developed by) Fedora. Podman and Silverblue are examples of that. There aren't many major new features in Silverblue 34. The main highlights appear to be PipeWire and systemd-oomd (which is now enabled by default). Both don't really excite me. For me personally, the main change is that Silverblue 34 uses a single Btrfs filesystem with two subvolumes: one for root and another for home. Btrfs was introduced in Fedora 33, but I hadn't used it on Silverblue.

And everything is of course new and shiny. Apart from GNOME 40 you get the 5.11 kernel, systemd 248 and Bash 5.1. Most pre-installed applications are bang up to date as well, although GNOME Terminal is still at version 3.38.1.

Flatpaks

Speaking of pre-installed applications, there are very few of them. The main ones are Firefox, Files, Gedit and GNOME terminal. Not all the pre-installed applications are flatpaks: Files, GNOME Terminal and Firefox are all part of the base operating system.

Other applications can be installed from the Fedora registry. The repo only includes free (as in non-proprietary) flatpaks, so you probably want to add the Flathub repo. I only really use a dozen or so graphical applications, and everything I want/need is available as a flatpak. They mostly work very well but there are two applications I've had issues with. The first is Authenticator. I'm not yet sure why, but it consistently eats a huge number of CPU cycles. The second is GNOME Web, which crashed on me yesterday and now won't open any more. Deleting the cache thankfully solved that issue.

Up until the Great Crash I was I'm still using GNOME Web as my default browser. I've always had a soft spot for Epiphany, but my love for the browser has never really been answered. On Silverblue I like the browser slighly better than Firefox. It integrates perfectly with GNOME, and the two-finger swipe gestures to go back and forward to previously viewed pages are really nice on a laptop. It's also better at playing videos than Firefox, which I think is because the GNOME Web flatpak includes some proprietary codecs. For me, the only real downside of GNOME Web is that the ad blocker is pretty bad (compared with uBlock Origin).

GNOME Web is a very pretty browser. It doesn't always work, but it sure has the looks.
A mysterious GNOME Web backtrace with an obligatory terminal window.

Other than that there are some minor Flatpak annoyances. In a previous post I mentioned that Evolution's calendar doesn't integrate with the notifications area (which is seen as a feature). I ran into a couple of other sandbox-related issues. For instance, in Files I changed the sort order (so that directories are sorted before files) and I added a handful of bookmarks. Most file browsers ignore both. Gedit's file browser, for instance, uses the default sort order and the bookmarks are nowhere to be seen.

Similarly, I was unable to view an archived website in GNOME web. All internal links were changed to something starting with /run/ and didn't resolve. I could view the site in Firefox just fine. I guess it's the price you have to pay for sandboxed applications.

Terminal applications

Getting terminal applications was a bigger challenge. Fedora 34 uses Nano as the default text editor and ships with a minimal version of Vim. I wanted the huge/enhanced version, but I also wanted to avoid installing packages via rpm-ostree. I settled on the Neovim flatpak. That works fine – I aliased both vi and vim to flatpak run io.neovim.nvim and now got a proper command-line text editor.

I tried Toolbox for other applications. Some worked, while others didn't. One of the applications I couldn't get to run was pass, which meant I had to switch to a different password manager. Luckily, xfreerdp and wlfreerdp work fine, but the latter is still of limited use. I open servers I connect to on two external monitors, but wlfreerdp can't see external monitors. Wayland also still doesn't understand Ctrl-Tab in an RDP session, so for RDP I need to use xfreerdp on Xorg.

Podman

Giving myself a few weeks to get fully up to speed with containers and Podman was rather optimistic. I got this Pelican blog and a couple of PostgreSQL databases I use running in containers, but I still need to get me head round LAMP stacks. Ironically, for the first time in about a year I got some website jobs this month, and so I had to fire up my old desktop PC. On the desktop I had started doing web development in a Centos VM (using KVM), but I can't do that on Silverblue (unless I install KVM via rpm-ostree). GNOME Boxes isn't an alternative either, as it doesn't let you SSH from the host to the VM.

This is another downside of using flatpaks, and a rather limiting one at that. I understand why I can't SSH to Boxes, and I realise the alternative is Podman. Still, it does mean that basic things you can do in any other distros don't work in Silverblue. It's very much a straight-jacket.

Life without codecs

The default Silverblue install includes some GStreamer multimedia codecs but not enough to get proper video playback. YouTube mostly works, but you can forget about video streams. I didn't run into any issues with audio streams.

I haven't missed the usual proprietary codecs. In fact, I quite enjoyed not having them. I've spent less time on YouTube and more time listening to radio stations. I'm finding it more enjoyable and it makes me more productive. At some point I will have to install the forbidden fruits, as I'll need to be able to do video calls for work. But if I didn't need them for my work I could easily live without them.

Semi-final thoughts

Installing Silverblue was like starting with a clean slate: an immutable operating system with applications as flatpaks and a container-based development environment. Everything was going to be clean, tidy and organised. Silverblue does deliver that but it's also limiting. There's no vim-enhanced and sandboxed applications don't always work as you'd expect.

There are workarounds, but they are awkward. Toolbox is nice but having to run commands such as xfreerdp or whois in a container is a bit daft. Similarly, using rpm-ostree to layer images defeats the purpose of Silverblue. I think immutable operating systems such as Silverblue would work better with codecs in the base system and with snaps rather than flatpaks (as command-line application can be "snapped"). Perhaps Ubuntu should have a go at a Silverblue-like operating system.

And then there are the container-based workflows for developers… I'm still learning about Podman and so far I'm not overly enthusiastic. I don't buy the argument that setting up, say, a LAMP stack is easier using containers. Of course, that's partly because it's a new way of doing stuff. Moving from MAMP (yes, I once was a Mac user) to a proper LAMP stack was equally frustrating at first. I'll give it some more time.

That said, I have installed AlmaLinux in Boxes and I'm quite enjoying it. I have run Centos on the desktop in the past and got on with it very well. Over time you get to know the distro very well and it just works. It becomes like that comfy jumper. But then it also gets a little too stale over time. I would be looking at those nice swipe gestures in GNOME 40 and feel sad. So, for now I'll keep with the programme.