If your immutable Linux desktop uses Flatpak, I’m going to have a bad time

The openSUSE project recently announced the second release candidate (RC2) of its Aeon Desktop, formerly known as MicroOS Desktop GNOME. Aside from the new coat of naming paint, Aeon breaks ground in a few other ways by dabbling with technologies not found in other openSUSE releases. The goal for Aeon is to provide automated system updates using snapshots that can be applied atomically, removing the burden of system maintenance for “lazy developers” who want to focus on their work rather than desktop administration. System-tinkerers need not apply.

The idea behind Aeon, as with other immutable (or image-based) Linux distributions, is to provide the core of the distribution as a read-only image or filesystem that is updated atomically and can be rolled back if needed. Google’s ChromeOS was the first popular Linux-based desktop operating system to follow this model. Since the release of ChromeOS a number of interesting immutable implementations have cropped up, such as Fedora Silverblue, Project Bluefin (covered here in December 2023), openSUSE’s MicroOS (covered here in March 2023), and Ubuntu Core.

↫ Joe Brockmeier at LWN

With the amount of attention immutable Linux desktops are getting, and how much work and experimentation that’s going into them, I’m getting the feeling that sooner or later all of the major, popular desktop Linux distributions will be going this route. Depending on implementation details, I actually like the concept of a defined base system that’s just an image that can be replaced easily using btrfs snapshots or something like that, while all the user’s files and customisations are kept elsewhere. It makes intuitive sense.

Where the current crop of immutable Linux desktops fall flat for me is their reliance on (usually) Flatpak. You know how there’s people who hate systemd and/or Wayland just a little too much, to the point it gets a little weird and worrying? That’s me whenever I have to deal with Flatpaks. Every experience I have with Flatpaks is riddled with trouble for me.

Even though I’m a KDE user, I’m currently testing out the latest GNOME release on my workstation (the one that I used to conclude Windows is simply not ready for the desktop), using Fedora of course, and on GNOME I use the Mastodon application Tuba. While I mostly write in English, I do occasionally write in Dutch, too, and would love for the spell check feature to work in my native tongue, too, instead of just in English. However, despite having all possible Dutch dictionaries installed – hunspell, aspell – and despite those dictionaries being picked up everywhere else in GNOME, Tuba only showed me a long list of variants of English.

After digging around to find out why this was happening, it took me far longer than I care to publicly admit to realise that since the latest version of Tuba is only really available as a Flatpak on Fedora, my problem probably had something to do with that – and it turns out I was right: Flatpak applications do not use the system-wide installed spellcheck dictionaries like normal applications do.

This eventually led me to this article by Daniel Aleksandersen, where he details what you need to do in order to add spellcheck dictionaries to Flatpak applications. You need to run the following commands:

$ flatpak config languages --set "en;nl;"
$ sudo flatpak update

The list of languages uses two-letter codes only, and the first language listed will serve as the display language for Flatpak applications, while the rest will be fallback languages – which happens to include downloading and installing the Flatpak-specific copies of the spellcheck libraries. Sadly, this method is not particularly granular. Since it only accepts the two-letter codes, you can’t, say, only install “nl-nl”; you’ll be getting “nl-be” as well. In the case of a widely spoken language like English, this means a massive list of 18 different varieties of English. The resulting menus are… Not elegant.

This is just an example, but using Flatpak, you’ll run into all kinds of issues like this, that then have to be solved by hacks or obscure terminal commands – not exactly the user-friendly image Flatpak is trying to convey to the world. This particular issue might not matter to the probably overwhelming English-speaking majority of Flatpak developers, but for anyone who has to deal with multiple languages on a daily basis – which is a massive number of people, probably well over 50% of computer users1 – having to mess around with obscure terminal commands hidden in blog posts just to be able to use the languages they use every day is terrible design on a multitude of levels, and will outright make Flatpak applications unusable for large numbers of people.

Whenever I run into these Flatpak problems, it makes it clear to me that Flatpak is designed not by users, for users – but by developers, for developers. I can totally understand and see why Flatpak is appealing to developers, but as a user, they bring me nothing but grief, issues, and weird bugs that all seem to stem from being made to make developers’ lives easier, instead of users’.

If immutable Linux distributions are really hellbent on using Flatpak as the the means of application installation – and it seams like they are – it will mean a massive regression in functionality, usability, and discoverability for users, and as long as Flatpak remains as broken and badly designed as it is, I really see no reason to recommend an immutable Linux desktop to anyone but the really curious among us.

  1. Even in a country like the United States, which we think of as an English-speaking country, there are currently 42 million Spanish-speaking people, who most likely also have to use English on a daily basis. The way multilingual features are treated as afterthoughts by the tech industry – even the open source one – is baffling. ↩︎


  1. 2024-06-28 9:12 pm
  2. 2024-06-29 12:58 am
  3. 2024-06-29 3:08 am
    • 2024-06-29 3:53 am
      • 2024-06-30 9:17 am
        • 2024-06-30 9:40 pm
        • 2024-06-30 9:43 pm
    • 2024-06-29 8:30 am
  4. 2024-06-29 8:41 am
  5. 2024-06-29 11:06 am
    • 2024-06-29 11:57 pm
    • 2024-06-30 7:50 am
      • 2024-06-30 9:59 pm
  6. 2024-06-29 12:15 pm
    • 2024-06-29 12:16 pm
      • 2024-06-29 3:20 pm
        • 2024-06-29 3:52 pm
          • 2024-06-29 4:19 pm
          • 2024-06-29 9:30 pm
    • 2024-06-29 5:13 pm
      • 2024-06-29 9:33 pm
  7. 2024-06-29 3:03 pm
    • 2024-06-29 3:29 pm
      • 2024-06-29 3:33 pm
    • 2024-06-29 3:31 pm
      • 2024-06-29 4:30 pm
        • 2024-06-29 4:55 pm
        • 2024-06-29 5:10 pm
  8. 2024-06-29 8:31 pm
  9. 2024-06-29 10:24 pm
    • 2024-07-03 2:45 pm
  10. 2024-06-30 7:47 am
  11. 2024-06-30 1:20 pm
  12. 2024-07-01 2:52 am
    • 2024-07-01 11:15 am
  13. 2024-07-02 9:15 am