Skip to content

The Rice of Babel: The Absurdity of Linux Theming

Table of Contents

ATTENTION: This article's objective is not attacking any group or individual. Don't shoot the messenger, my current role is highlighting the fundamental problems I noticed with Linux theming and I will provide some theoretical ideal solutions to fix this themeing salad. Keep in mind that I am just a user, I don't have the skills to implement what I will be talking about here.

Introduction

Are you familiar with the ancient story of The Tower of Babel? If not, please go watch The Tower of Babel (But Biblically Accurate).
Either a tale of an angry God, striking down on mankind's attempts at surpassing God and nature, or a story about humans seeking unity and harmony to praise God, all symbolized by that old Tower. It is our choice if we want to become divided and miserable or united and strong, we just have to do the right choice.

Now, how does this relate to applying funny colors to your Linux machines and posting it on r/unixporn?
Exactly. As soon as you read the title of the article and my mention of Unixporn, your brain most likely imagined a fancy minimal window manager setup running on some old but robust Thinkpad, something difficult that only expert nerds do, right? Hmm, not quite.

"Ricing" your Linux is useful. Not only does it make your computer feel more personal and aligned with who you are, it can also be helpful, due to accessibility reasons. Not all screens are made equal, some colder/hotter color palletes might look completely different depending on where you are looking and at what time of day. Control over color is so important that some graphic design programs force their interface to use certain shades of gray, to prevent you form subconsciously affecting your work, as our eyes and brain are victims from our biology, due to chromatic adaptation and the Von Kries coefficient law, making the brain automatically white balance colors.
Having control over the colors of your system (and not just the accent color) is something fundamental for comfortable use.
In my case, I recently adopted the Tokyo Night colorscheme in VSCodium because I needed a pallete that highlighted HTML links in a different color in comparison to the quotation marks, as it's easy for me to miss the correct location to put the cursor in, leading to me removing the quotation marks very often...
I am an example of someone who uses theming as an accessibility feature. You see why people obsess so much over this?

Well, have you wondered why Linux theming has such a prominent stereotype?
If you tried to initiate yourself in the arcane arts of theming, you probably know the answer to this question, it is hard and infuriating, without any good argument to justify it's difficulty.
My duty in this article is laying out the absurdity for the world to see, so we can all finally agree that we need to transform The Rice of Babel from it's current form, the tyranny of confusion and disagreement, to taking computing to the next level of harmony and joy. We are surprisingly close to turning this hope into reality.
The Rice of Babel we dream of is in our reach. I have been able to craft this dream into reality before, let me show you. Dream with me:

The Rice of Babel ~ Light Mode:
The Rice of Babel ~ Dark Mode:

That is what The Rice of Babel means to me. In those pictures you see multiple different toolkits and programs that support some form of theming together, in harmony, specifically: XFCE (with XFWM decorations), XFCE4 Terminal Color Scheme, GTK 2/3/4, GTK Libadwaita, QT 5, QT 6 and Electron Toolkit.
It's also able to switch dynamically between the light and dark variants and it's able to theme programs under Flatpak correctly.
Now, achieving this took an unreasonable amount of research and effort for what is just changing a few colors. Before entering into the absurd details, let's compare that setup with what Ubuntu 25.04 has to offer by default, as one of the leading Linux distributions, they should give you a comfortable and accesible visual experience on par, if not superior, to my tinkering.

Ubuntu 25.04 ~ Light Mode:
Ubuntu 25.04 ~ Dark Mode:

Now, look closely. See the mismatch? Ubuntu's main theme is Yaru, it uses orange and sometimes purple accents. Neither VLC or Kate follow the style properly. These graphical mismatches only get worse the more you explore around the system and the more you research how Linux's available toolkits work.
Why does Ubuntu, the arguably most popular Linux distribution, fail so catastrophically at theming? Why is my hacked attempt more consistent? What is happening here?
The Rice of Babel's curse is starting to unfold. Ubuntu is not the exception, but the norm. Very few Linux distributions give you a good, somewhat consistent, visual experience out of the box. Only KDE based distros, Linux Mint, and some truly niche exceptions give you (mostly) all around good results. The rest of them have some sort of obvious flaw that will either flash bang you in the middle of the night with a light theme or make your eyes slightly cringe every time you try to use the computer.
It is now time to explore the theming capabilities of the toolkits, so we can truly grasp the dreams that we are missing out on.

Toolkit Exploration
GTK 2/3/4 & Libadwaita

GTK and the GNOME project (the group of people in charge of developing GTK) have a complicated relationship with toolkit theming.
The original method to theme GTK 3 was broken in the GTK 3.20 release, because it was easy to make GTK programs crash due to the unstable nature of the methods used. You can read more about that on this Reddit thread.
Aside those clashes, GTK 3 and GTK 4 without Libadwaita are perfectly themeable by both users and developers.

The clashes between GTK/GNOME and theming don't stop there. A bit before the release of GTK 4, many developers who use the GTK toolkit released an open letter, Please don't theme our apps. The goal of this text was to highlight the problems with unconscious theme developers breaking programs in a multitude of ways. Unfortunately for them, this ended up causing more harm than good in the long run, as this has been cited as proof that "ohh that pesky GNOME doesn't like users and theming!". It got to the point that parodies were made to make fun of this initiative.

This clearly lead to a change in the mindset of the GTK developers, enough was enough, theming had to get regulated. To achieve this, GNOME created the Libadwaita library, an addition to GTK 4. The objective of Libadwaita is making it easy to develop programs that look consistent and are easy to access across all types of screens, for example, by making it easy to use Libadwaita programs on screens with small resolutions like the ones on mobile devices.
However, this created chaos, as once again, GNOME broke the theming methods developers and users were using, with the same excuse, to make theming better and more reliable by doing things like allowing runtime recoloring of programs.
Users were expecting GNOME to use the power of Libadwaita to provide first party, stable theming for all, just like how the KDE desktop does. Four years later and all we got from GNOME's side were hard coded accent colors in Libadwaita 1.6 and some CSS goodies in a GTK update.
To this day, even with the good things that the library provides, theming GTK4/Libadwaita is still challenging, it took users and developers outside of the core GTK/GNOME team a lot of effort to crack open the box of Libadwaita theming.

To give a few examples, KDE only bothers to set up the accent color of Libadwaita programs by using the XDG Portal, alongside window decorations that mimic KDE's.
Side by side, this is how the programs differ. In the following images, you can clearly see that the colors used on the KDE and GTK4/Libadwaita programs are different, not even the purple used is the same purple as the KDE purple (the one that should dominate here, as these pictures were taken on a KDE environment).

It gets even more annoying if you try to utilize KDE's built in mechanisms for theming applications, the more you play around with KDE's tools, the more alien Libadwaita programs will look.

Another side effect of Libadwaita's methods for theming applications is that it forces developers to break GTK even harder than with the GTK 3.20 method. Third party theme developers are forced to override the user's configuration files to apply the theme they made. Take a look at the Colloid GTK Theme's --help message:

Install specify gtk-4.0 theme into config folder ($HOME/.config/gtk-4.0) for all gtk4 apps use this theme. Default ColorSchemes theme will follow the system style (light/dark mode switch), all ColorSchemes versions not support this!

The lack of an accessible standard that can allow users and developers to theme an already packaged program, caused multiple developers to create their own ways of breaking Libadwaita. For example, various Theme Developers, COSMIC and Cinnamon have their own ways of breaking Libadwaita to achieve the same thing, with varying levels of success.
For example, Linux Mint 22.2's method of theming Libadwaita looks quite nice, as long as you are using one of the official Mint themes.

But, if you try to use any other GTK theme, even ones that have support for hacking Libadwaita, like in the case of VinceLiuice's themes, it won't work properly. Mint's efforts unfortunately don't extend to cover third party themes.
However, Linux Mint recently forked Libadwaita to provide users and developers with a version that has classic theme support, called LibAdapta.

These engineering decisions that GTK/GNOME made, only create fragmentation and it can make programs that alter Libadwaita in the intended way, appear all broken and ugly, punishing those who follow the rules for theming it properly.
This is the negative side of The Rice of Babel, such a shame, because correctly themed Libadwaita looks nice. Thankfully, a rebirth of the now defunct Gradience has occurred! This new program, Rewaita, promises to respect the styling of Libadwaita programs that theme themselves, while also allowing users to control how their programs look. It's also yet another way to break Libadwaita... GTK/GNOME can't catch a break...
Oh well, here is a showcase of how GNOME Text Editor, one of the programs that ships with built in themes, looks. Another glimpse at the dream.

QT 5/6

The QT toolkit is in theory a lot more theming friendly when compared to Libadwaita, as long as you are inside a desktop environment built on QT, like LXQT or KDE.
On KDE's case, you get a wide arrange of things to tweak and customize, for example, this is just what you can edit inside of a theme's specific color settings:
You can change everything in KDE. Just get ready to see a lot of bugs, like third party developers not properly testing their themes or the kind of thing you saw with Libadwaita programs earlier.
On LXQT's case, we can see QT's strong theming capabilities, as they allow you to select both a Qt Style and a Qt Palette. However, we can again see The Rice of Babel's curse at play here, if you open a QT program that doesn't feel in the mood, or a GTK program (even GTK 3 ones), the fancy theme you made will not work, it's QT exclusive and LXQT doesn't go the extra mile to help you out, unlike KDE, who offers a GTK 3 theme that uses most of the modifications you made to your QT theme.
Here are two examples showcasing the power of QT's theming inside LXQT.

Unfortunately, the theming power of the toolkit is locked if you happen to be outside a QT desktop environment, it is why the VLC on my Ubuntu screenshots back at the Introduction looks completely out of place. I never figured out how to access the settings that LXQT and KDE expose to you directly without the need of more programs (Libadwaita can get modified by only editing files).
But... Then how did I solve the problem on my setup? Well, I had to rely on a very useful tool called Kvantum, made by one of the LXQT devs!
Kvantum acts as an intermediary between QT's theming capabilities and the user, by allowing users and developers to create a theme on an .SVG file, that can get loaded onto any QT program. You only need to tell your system to load Kvantum onto QT with a Linux environment variable.
Here is how some of the default Kvantum themes look:

QT's power outside of QT desktops only grows larger if we start experimenting with qt5ct and qt6ct, as they enable us to configure things like fonts, icon themes and what QT Style to use. Unfortunately, both programs seem to be abandoned, use them at your own risk. It's sad to see fallen soldiers in the quest to turn The Rice of Babel into a reality.

COSMIC

COSMIC is the new desktop environment shaped kid (or vice versa?) on the block. We don't know what impact it will have on FOSS computing, but we can get a pretty good idea at the plans System76 has in mind by looking at the latest Alpha.
COSMIC introduces a new GUI for users and developers, LIBCOSMIC. This toolkit has been designed from the ground up to support modern features, like theming or scaling, in a supposedly no nonsense approach.
LIBCOSMIC programs can be customized by changing an easily accessible configuration file. We do have to keep in mind that currently, there is no comfortable way of theming COSMIC programs outside of COSMIC, there is no qt5ct for LIBCOSMIC yet, but it would be less of a problem thanks to the straightforward configuration files. However, if we take a look at how the toolkit works inside COSMIC, we will be pleasantly surprised.
Here are some of the themes that the Founder and CEO of System76, Carl Richell, made.

Living the life, don't you think? In case you want to see the creative process in action, he made a video showcasing it.
Let's dive deeper. COSMIC's theming is not limited to LIBCOSMIC programs, they also theme GTK 3/4 and Libadwaita programs out of the box.
In the following images, you can see COSMIC at work, theming GTK 3/4 and Libadwaita.

Unfortunately, COSMIC suffers the same problem as Ubuntu, QT programs will look out of place. At least, we know that System76 developers are interested in figuring out a way of theming QT, we have to stay hopeful.

The Rice of Babel

Did you notice the pattern? Did you notice that it is completely possible to theme every mayor GUI toolkit? Did you notice how easy and fun the solutions look when the developers help you out?
By this point, I really hope that you noticed what the problem is. The biggest pain point in Linux theming. This is why this article and this section is called The Rice of Babel.

There are multiple, completely avoidable and silly problems with how Linux theming is being done that are actively preventing users form having consistent and customizable experiences, regardless of what their desktop/window manager of choice is. The ideal example I created at the start of this article should be the standard and the norm, not the nerdy exception. Ah and I am not saying Gruvbox is the best color scheme, it's just an example!

The first problem is that the developers behind Linux's graphical toolikts, desktop environments & window managers, are not working together to ensure a satisfactory experience with theming and customization, regardless of what or where you are tweaking.
For example, COSMIC and every single GTK desktop out there don't provide you with any easy way of theming QT programs. Any old regular QT program will look just like the broken examples I showed you.
KDE is aware of this, but their solutions to fix this are lackluster. They don't properly empower users who want to use KDE or QT programs outside of their realm, instead, their fixes are unstable and prone to breaking under edge cases, like trying to theme KDE programs with Kvantum outside KDE or having the themes reload automatically based on the system's light/dark preference (hacked Libadwaita has this problem too, yet another accessibility problem!).
And in the case of Linux distributions shipping COSMIC or GTK desktops, most of them don't bother either to theme QT, being a combined distro/desktop failure. One of the few that does bother is Linux Mint, as they ship with a configured qt5ct out of the box, however, that trick makes some programs vulnerable to all kinds of visual bugs and inconsistencies. It's a tradeoff.
If these developers, who have all the necessary pieces to make this happen already on the table, came together to decide how to solve Linux theming, I wouldn't be writing this.
I wonder, is cooperation even needed?
KDE and COSMIC could create a program alike the old LXAppearance or nwg-look to control their toolkits outside of their turf. Just repeat that for every important component and it should be straightforward enough for most people to figure it out, just like how it works for a terminal theme. It would also enable distribution developers to theme their products easily.
Maybe some of the existing tools, like Kvantum or Rewaita, could collaborate in these cases, who knows.
Also, don't get me started on how messy things get if you try to theme Snap and Flatpak packages... Or QT programs inside a Flatpak, I will be honest, I didn't try theming a QT Snap but I imagine it's worse than waterboarding, take some notes [insert intelligence agency]!

The second problem is related to how hard theming the toolkits on their current state is. To understand why, you need to know how programs with proper theming are customized.
Programs like your terminal do all the heavy lifting for you, what you do is select the colors and transparency and the terminal knows what to do. Even simpler terminals without a GUI to configure them, like Ghostty, do these kinds of heavy lifting for the user.
For example, this is how the theme settings look inside Konsole's theme editor and how the colors you set look when displayed with fastfetch (the transparency is gone due to how KDE screenshots work).

Almost every single setup you see in r/unixporn works like this. What they do is use programs that have some form of an easy to use configuration file and then they glue them up together to form a coherent looking system.
Terminal? Set up the color scheme. Desktop bar? Set up the color scheme. Wallpaper? Pick one that follows the color scheme.
But as soon as you open any GTK, QT or LIBCOSMIC program in one of these lazier r/unixporn settings, the illusion breaks and the curse sets in. DHH unintentionally exemplified this on his Omarchy 2.0 video tour.
For most of the tour, he keeps selling you on how good Omarchy is, with a strong emphasis on theming and browser/terminal programs and how everything stays in sync when you click "switch". They even went the extra mile to create a Chromium fork, that just got merged into Chromium, so it can play along with the theme switching.
Looks good, right?

Looks good, until you open any usual GUI program.

You felt that, right? Your little ricer heart get crushed by the old GTK 3 Adwaita style... They didn't even bother to use adw-gtk3 to try and keep the GUIs using a consistent, modern looking universal default.
I think that 37signals knows about these problems, but it got so clusterfucky for them to solve that they stopped trying to make Omarchy 100% consistent, at least for version 2.
I even asked DHH directly on X/Twitter and he dodged the question by doubling down on the "just use Web/TUI" argument.

https://x.com/dhh/status/1960427297644929282

If forking Chromium is easier than applying colors to GUI toolkits that totally support it, then we are doing something very very wrong.

Conclusion

The Linux community need to decide what to do about The Rice of Babel before it continues dragging us down. Currently, it is acting like divine punishment from God. It is our duty to prove God a point, as we transform it from being a symbol of chaos, separation and oppression into a symbol of beauty, unity and prosperity.
This challenge is eagerly waiting for someone to solve it.
What will it take? What will happen? A DHH-like figure enforcing his will over others? An agreement between groups to create a standard? KDE and COSMIC working together without an even more stubborn GNOME? Small compartmentalized programs that do the business? The ricers taking it upon themselves to fix theming once and for all?
Whatever the case, we should try it out, things are already bad, nothing is lost from trying to solve this.
Let's... Just love ourselves a bit by giving us a nice thing, we deserve it.

If you have useful technical skills, ACT and use them to help solve this. If you have design skills, do the same. Whatever you have in your bag, use it.
If you feel that you are not ready for the challenge, you might ask yourself "what can I do about this?".
Well, for starters, spread the word and make sure this reaches as many people as possible!
Then, if you can, throw money at it, of course! Donate to groups like KDE, GNOME, LXQT or buy yourself a System76 device and include a message saying why you put your money on their wallets.
If it isn't clear, the most important part is that we work together to solve this and that we make our goal clear. We also must question ourselves, "do we want Linux to look all broken and inconsistent?".

Now, in my case, I already did my part by bringing this up into the spotlight, as i don't want Linux looking all ugly and broken. That is the most I can do right now, as the rest of the options I brought into the table are outside of my reach right now.
My most sincere wish is that Linux and open source keeps getting better, while keeping the bad things out, we are so close at making this a constant for Linux, let's keep up!

If you have any questions, suggestions, whatever, let me know!

I hope you liked my first article ever and that it was useful to you. Thanks for reading! Farewell!

Bye Bye!