Why did Ubuntu remove the eggplant color from its color palette? Why did the main developer of the Budgie project decide to abandon GTK and move to ELF for future versions of the desktop? The answer is a library called libadwaita.
It is not the first time that technical decisions (often based on non-technical reasons) have generated strong discussions in free software projects and open source and it won't be the last either. The difference in this case is that the changes that occur as a result of those decisions are visible to ordinary users.
What is libadwaita, the library of discord, and what is it for?
Let's start by defining some concepts:
A library is a computer program that performs a function or provides components for a specific task., for example, displaying a message in a popup window. Libraries are used by program writers who need to implement that specific function to save coding time. Also, since most libraries are installed independently, they can be called by other programs saving disk space.
GTK is a set of widget libraries used for building user interfaces. It is used by GNOME, Mate, Cinnamon among others. As well as app makers for those desktops.
Adwaita the name of the GNOME desktop environment design language and its default theme. Until 2021, the Adwaita theme was included as part of the GTK Widget Toolkit. As of that year, it was decided to move the components to a new library called Libadwaita that should implement the GNOME human interface directives.
Apparently the intentions were good According to Adrien Plazas, GTK software engineer and creator of applications for GNOME:
This would allow GTK to grow independently of GNOME, at a rate that suits your needs. You could reduce your focus on more generic widgets and your core machinery, simplifying your theme support in the process to make it more flexible. This, in turn, would give other GTK users a level playing field: from GTK's point of view, GNOME, Elementary, and Inkscape would be no different, and that hypothetical GNOME library would fill the same role as Elementary's Granite.
The introduction of that library shouldn't make GTK less useful on other platforms, or make GTK applications harder to build (or uglier). It should just be another library that you can choose to link with if you want your app to fit nicely into GNOME.
But, we already know what the road to hell is paved with.
The problem is that if you install an app that has Libadwaita as a dependency, you will have to use it with the Adwaita default theme, no option to switch to a different theme. The end result is if you use a GTK4 based desktop your theme preferences will be ignored.
According to Joshua Strobl, responsible for the Budgie desktop:
…when a System76 engineer proposed some improvements to libadwaita's color change API, which is their alternative to theming that is specific to changing the color of various elements of GNOME applications and is application specific (not application specific). system-wide), these improvements were rejected on the grounds that some of the GNOME developers did not like the views expressed by the engineer on social media.
The proposed solution enabled developers to make their applications compatible with a number of themes. However, from GNOME they argue that third-party themes reduce the quality of applications.
GNOME 42 released its beta version last week.to. Among its new features is the increase in applications ported to GTK4 and libadwaita, an integrated screen capture function (photo and video), and the new Appearance panel with support for light and dark styles.
The first major distributions to bring GNOME 42 will be Fedora 36 (April 19) and Ubuntu 22.04 (April 21)