Linux on the Desktop, Part Four: Quirks, Bugs, and Workarounds

Bottom Line; Up Front

Linux has improved a lot in the last 10 years. It is more polished, and has better hardware support, but there are still small problems that aren’t commonly seen with macOS or Windows.

Quirks

I think among the defining characteristics of Linux desktops are the quirks one encounters during regular use. I define something as a quirk when there is an obvious, undesired behavior. It may or may not be consistent, but there is often a workaround or alternative. Here are a few quirks I regularly deal with on my Linux desktop.

Software Management

Pop!_Shop

Pop!_OS uses the Pop!_Shop[1], a fork of Elementary AppCenter [2], as its graphical software management tool. Its performance left something to be desired on Pop!_OS 21.10, but with the release of 22.04 it is much better. That is, until I change my theme to the Gnome default Adwaita. Certain icons are missing and the install/uninstall buttons do not render properly in both light and dark modes, although the text is more legible in dark mode. I could just keep the default Pop!_OS theme, and it looks nice, but I prefer Adwaita, so I decided to try Gnome Software[3].

Gnome Software

Like most other Gnome applications, Gnome Software is simple and clean. At first glance I thought it didn’t have a search feature, then I noticed the magnifying glass icon in the left corner of the title bar. It didn’t come with Flatpak support out-of-the-box, and included the Snap Store instead. This is probably an artifact of Pop!_OS being derived from Ubuntu. The different app stores are plugins, so I removed the Snap plugin and installed Flatpak support to have feature parity with the Pop!_Shop. Cosmetically it looked better, but then I noticed something that was absent from the Pop!_Shop. Nearly every time there were updates to system packages it wanted to reboot[4]. I’ve always been of the mind that reboots on Linux are for new kernels or hardware, not for routine updates, even for system packages. It turns out this is a deliberate design choice with solid reasoning behind it. It prompts the user to reboot, putting the system into a known-good state and applying updates offline in an environment where no other changes are taking place. Here’s where Linux gets it right and Apple is totally wrong: Linux doesn’t force your hand. If you don’t want to reboot to update you can still do so through other means. There is no nagging to do it right away, or defer updating only to have the update system nag you about it an hour, or day, later. The intent is for Gnome Software to work all the time regardless of the user’s technical acumen and from my experience it does. I don’t like rebooting to update, unless it’s to boot into a new kernel, but I can probably learn to live with it. In the meantime, I keep Pop!_Shop handy or use apt.

Console Applications

Something neither Gnome Software nor Pop!_Shop handle are console application and library installations. Unless they’re a dependency for a graphical application, you simply can’t install them with either tool. I think I found an explanation[5], at least as far as Gnome Software is concerned. It’s another design choice from the Gnome team I’m assuming Elementary OS made a similar choice, but I haven’t found any information to confirm it. I could install the synaptic[6] package manage and have a graphical front end for apt, but it doesn’t support Flatpak, so I use the terminal when I want to install console applications or add optional libraries. Updates are a different story. Both Gnome Software and the Pop!_Shop update everything: Flatpak and apt, graphical and console.

Gnome Shell Restart Causes Application Windows to Swap Displays

I use two external displays, and generally certain applications are always on the left display and others always on the right. If I restart Gnome Shell, they always swap displays. Add an NVIDIA bug[7] where the workaround is to restart Gnome Shell, and another quirk is introduced. Restarting Gnome Shell a second time puts everything back where I want it. It’s annoying, but hopefully it will no longer be necessary once the updated NVIDIA driver is released.

Application Window Positions Not Saved

I don’t think this ever worked on Linux without an external utility. I found a bug report that says it’s not a function of Gnome Shell to remember window positions; it’s left to the application[8]. Long ago, back when Sawfish[[9]](https://en.wikipedia.org/wiki/Sawfish_(window_manager) was the Gnome window manager, I used devilspie[10] to place windows where I wanted them. It’s now a dead project. There is a successor I could use, Devilspie2[11], but it isn’t clear to me if it will work with Wayland[12]. I don’t use Wayland today. It will eventually replace X11, but I would like to avoid repeating work a third time, even if it might be a few years way. For now, I’ll just use keyboard shortcuts with the Awesome Tiles[13] Gnome extension to manage window placement and tiling.

Suspend On Gnome Logout with Lid Closed

This is an example of me not being up-to-date on things like systemd. When I first set up my laptop I noticed it would suspend when I logged out of Gnome. Remember, I use two external displays with the lid on the laptop closed. I don’t log out very often, but when I do, I don’t want the laptop going to sleep right away. The solution was pretty easy. I found a StackExchange post[14] that clearly described what I needed to do. So this really isn’t a quirk, but a user education problem. I list it here only because it felt like a quirk until I did some research. This is a good example of when one should read the documentation before pointing fingers. I still have a display-related quirk with reboots, however.

External Displays Blank During Reboot

I think when I was on Pop!_OS 21.10 I could reboot with the lid closed and both external displays would show the boot screen. I reboot so infrequently that I honestly don’t remember. Since upgrading to 22.04 I can reboot with the lid closed, but I don’t see the prompt to enter the disk encryption passphrase. It isn’t a big deal, I just flip the lid up for reboots, but I would like to get away from that. I’m willing to bet I need to poke around some documentation here, too.

Mouse Resolution Changes

The last quirk I’ll mention relates to my mouse. I have a Logitech G502 SE HERO Gaming Mouse[15] and I use piper[16] with libratbag[17] to manage its configuration. Most of the time everything just works, but once in a while the mouse resolution suddenly changes; usually when gaming. It’s easy to fix; I can either open piper and change the resolution there, or use one of the mouse buttons. Since upgrading to Pop!_OS 22.04 it seems to happen less frequently, so it might have been caused by a bug. I might dig into it some day to find out, but right now it’s pretty low on the priority list.

Why Don’t I Just File Bug Reports?

I don’t file bug reports very often simply because it isn’t always clear if I need to research more or the problem I’m facing is an actual software defect. Having worked in customer support for over 25 years, I appreciate due diligence before reporting defects. Eventually I would like to dig into these quirks, and if they are bugs, file bug reports.

Bugs

These are genuine bugs discovered by others with links to the bug report. Since most Linux software is developed by volunteers timelines for fixing bugs varies.

Pixelated Graphics When Resuming From Suspend

When I resume from suspend certain text and tray icons in the Gnome top bar are pixelated. In this case a (small) picture is worth 1000 words:

Sometimes everything in the top bar is pixelated

I’ve read reports of others having similar problems[18]. The problem seems to be related to the NVIDIA graphics driver, and it looks like a fix is in the works. Right now the workaround is to restart Gnome Shell which is annoying, but I usually only do it twice a day.

libcanberra Warnings From Applications Installed Using Flatpak

I rarely see this, so it’s almost not worth mentioning, but I found many bug reports, and they all stem from the same problem. A bug filed against the Flatpak project explains it best[19]. Basically an environment variable is telling all GTK applications to load a particular module. The module is installed, but it isn’t included in the runtime for a Flatpak application, so a warning is raised. I don’t remember why I dug into this one, but I did learn quite a bit about Flatpak in the process. It’s only a warning, so it shouldn’t affect system stability, even if the bug never gets resolved.

Workarounds

I don’t know if “workarounds” is the correct title for this section. I wouldn’t consider anything in this section essential. All of these changes were driven by user preference, and aren’t unique to Pop!_OS.

Flatpak

Video Codecs

Most of my desktop applications are installed using Flatpak, including my web browser of choice, Firefox. I noticed videos on services like Odysee weren’t playing as well as they would on YouTube. Audio and video were in sync, it just seemed like the frame rate was lower on Odysee. I needed to install additional video codecs. A single command fixed the problem:

flatpak install org.freedesktop.Platform.ffmpeg-full

Most distributions won’t install this package by default due to licensing on the included audio and video codecs. Some codecs can’t be freely distributed, or require accepting a proprietary license before use. Linux is a platform about free as in freedom, and not necessarily free as in beer, although in most cases that holds true as well. Sometimes that means compromising between the freedom to distribute or modify software and accessing needed or wanted functionality. I use my laptop as a tool, and if I want to get what I perceive to be the most use out of it, I can’t be dogmatic about software licensing terms.

Themes

When I first had this laptop I used a script to change between light and dark themes based on time of day. I noticed some of my applications didn’t change themes, then I realized they were installed using Flatpak. I had to install org.gtk.Gtk3theme.Adwaita-dark and org.kde.KStyle.Adwaita to enable dark themes for these applications. This isn’t really a workaround, it just isn’t the default. I was relatively new and uninformed about Flatpak at the time, so I was a little puzzled when the theme didn’t change as I expected.

Pipewire

I’m relatively new to pipewire[20]. It replaced pulseaudio[21] in version 22.04 of Pop!_OS, and during the upgrade I lost access to the AirPlay receivers on my network. On 21.10 I used a utility called paprefs[22] to toggle discovery of AirPlay receivers on and off. paprefs has pulseaudio as a dependency which conflicts with pipewire, so I lost the use of the tool. I had to search the web and dig into the documentation to figure out what needed to be done. It was an easy change to make, but I have to restart pipewire each time I want to toggle it on or off, so the convenience is gone. pipewire is relatively new, so I expect it will improve with time and GUI tools will catch up.

journald Logging

System logging was a big nuisance when I first switched back to Linux. I come from the days when it was common to use syslog-ng or rsyslog as the system logger. In the last 10 years journald has taken over as the default logger on many distributions, and it wasn’t a change I was fond of. In fact, it was one of the changes that drove me away from Linux 10 years ago.

About a month after I “moved in” to my new laptop I noticed some log files were hundreds of megabytes, or even gigabytes, in size. I wasn’t too concerned since I have a 1 TB SSD, and log rotation is set up out of the box, but it seemed odd. I soon learned that journald was to blame. It seems the default log level is debug. That means everything is logged. Some applications like albert are particularly noisy when debug logging is enabled. That meant my logs were filling up with nonsense of no use to me. An application developer might appreciate the extra verbosity, but I find it unnecessary. It was another easy fix after understanding the problem: I set the log level to info and restarted journald. I still don’t understand why debug is the default.

Fonts

Font rendering improved substantially in the 10 years I was away from the Linux desktop, but the open source fonts intended to replace commercial fonts still seem to lack in appearance, at least to my eyes. I probably shouldn’t blame the fonts. It probably has more to do with how forum software like vBulletin or Invision Power Board is styled. With open source fonts the text on forums using either package is often hard to read and overall looks bad. Installing the core fonts from Microsoft fixes the problem every time. These days installing the MS Core Fonts is a little more involved[23], but worth the effort in my opinion. This is another area where I think I could benefit from diving deeper to understand what’s going on.

info pages

On most Unix and Unix-like systems, man pages are the default source of documentation. The GNU Project, however, has a fetish for what they term info pages. They’re usually well-written, but proficiency with emacs is assumed. I’m not the only one to have this experience, and someone took the initiative to create an alternate tool, pinfo[24]. I use a command alias to make it the default info page reader:

alias info="pinfo $@"

Now I don’t find myself cursing the developers (as much) for not including man pages with their software.

Wrapping Up

Linux improved a lot in the 10 years I was daily driving macOS. It still has rough edges, but everything is more polished. I think gaming improved the most. I couldn’t just install my games on Linux in 2012. Installing wine was easy enough, but each WINE_PREFIX had to be managed manually, and to be completely honest I never went that far. I used one prefix for everything, but when something broke, it sometimes took hours of troubleshooting spread across several days to return things to normal. My luck has been much better so far. A game will sometimes crash, but that’s the worst of it. I haven’t had to blow out an installation and re-install…yet.

Audio and video improved, too, but not as much as gaming. The buffering problems in pulseaudio are gone, replaced by buffering problems with pipewire. Buffering problems that were quickly fixed by reading excellent documentation and creating a user configuration. System76 is actively collecting feedback from the community[25] to fine tune their pipewire configuration, so future releases are less likely to have this problem out-of-the-box.

I started the outline for this post a few days after I unboxed my new laptop. My intent was to document as many problems as I could with the hope of either finding workarounds, which I could write about, or gather enough data for useful bug reports. It’s quite pleasing to publish this post knowing the problems that aren’t my fault, or were already solved by someone else, are minimally disruptive, and at least one has a fix coming in a future driver release. That’s a testament to the quality of work put forth in the last 10 years by the thousands of developers in the global open source community. Windows and macOS dominate the desktop market, but Linux is becoming a viable alternative, and for me, it’s the only alternative.

External Links

  1. Pop!_Shop
  2. AppCenter
  3. Gnome Software
  4. GNOME Software Center wants me to restart to install updates
  5. My application isn’t showing in the GNOME Software Center!
  6. Corrupted graphics upon resume (Gnome 41, X.org, 495.44 driver)
  7. Position of gnome-system-monitor is not remembered on screen when under Wayland
  8. Sawfish (window manager)
  9. Devil’s Pie
  10. Devilspie2
  11. Wayland
  12. Awesome Tiles
  13. GNOME: disable sleep on lid close
  14. G502 HERO>
  15. Piper
  16. libratbag
  17. Graphical glitches in Gnome Shell after Suspend
  18. Annoying output only when starting Octave via flatpak (GtK-Message: Failed to load module “canberra-gtk-module”)
  19. Pipewire
  20. PulseAudio
  21. PulseAudio Preferences 1.2
  22. How to install the package ttf-mscorefonts-installer
  23. pinfo
  24. Audio Crackling? Report Sound Card Details Here