GNOME Linux — A Complete Disaster?

fulalas
15 min readFeb 2, 2022

--

“GNOME’s […] excuse for not doing something is not it’s too complicated to do, but it would confuse users. The whole we know best thing is a disease.” — Linus Torvalds

It is common to hear in the Linux community that GNOME is currently the best you can get if you want the so-called modern desktop environment. Released in 1999, this GTK open source desktop environment [1] has become one of the most popular ones, being the default in many distributions, including Ubuntu, Fedora, Debian, SUSE, Pop!_OS, Red Hat and many others. In 2011 it was updated to version 3, bringing significant changes to the user experience and creating so much dissatisfaction that it gave birth to forks, such as Cinnamon, Unity and MATE. But why is such a popular desktop environment also the most controversial one?

GNOME is a free product made by GNOME Foundation, which is a non-profit company founded in 2000 by companies such as IBM, Sun Microsystems, Compaq and Red Hat. On its advisory board there are many big players, like Google, Canonical, Debian, SUSE and System76. Its annual income has been around 1 million dollars since 2018 [2]. Red Hat estimated that 70% of the code committed for GNOME comes from paid participants who work for other companies [3]. So essentially this is not a bunch of volunteer geeks who like to code in the night just for fun, but rather a company with direct and indirect employees, managers, directors, deadlines and a product that is anything but new. It is important to remember all that when analyzing GNOME.

GNOME looks clean because there is no official support for desktop files nor application tray icons

The main goals of GNOME are to be simple, clean, elegant, consistent and open to be modified by third-party extensions. This seems very appealing, especially considering that on Linux the user experience is usually confusing and inconsistent — sometimes too bloated. Here are some of GNOME’s key advantages:

  • Decent boot time
  • Animations are neat and smooth (if the machine can handle)
  • UI is clean, elegant and consistent most of the time
  • Can be modified by extensions
  • File manager has undo
  • Settings application is simple but powerful
  • Depending on the resolution, scale simply works and no reboot is required

But its minimalism does not come without flaws:

  • No desktop files support
  • No application tray icons support
  • Render performance may suck depending on the machine
  • Many tasks require more steps than other desktop environments
  • Even on top hardware it is not snappy as LXDE, LXQt or Xfce
  • Depends on many libraries
  • Coupled to dubious libraries, such as WebKit2GTK, Tracker, Gjs, GDM, LibGWeather, systemd and gnome-online-accounts
  • JavaScript is all over the place, affecting performance and requiring a dedicated engine [4]

GNOME’s lack of features makes most users feel obligated to install third-party extensions to have a decent experience — even though the more extensions installed the slower the overall performance. So, for instance, because there is no desktop icon support and the Dash panel does not show when the user is doing anything except when in Activities Overview (which, by the way, blocks alt+tab), it makes Desktop Icons and Dash-to-dock extensions installed by default on many distros, including Ubuntu, Pop!_OS and Manjaro — although both extensions are unofficial and have serious limitations. This is like saying: here’s your car, it works and you can go from point A to B, but if it gets dark you’ll need to attach headlights (not included), and if it rains you’ll have to install wipers (also not included).

Activities Overview is this odd screen that shows right after boot — the only way to see the Dash panel

On its webpage GNOME states it has a powerful search feature that helps you access all your work from one place, however this centralized search does not work with the contains concept, so typing, for instance, fox will not show any result even if Firefox is installed. Fixing this would probably require changing one line of code, so it is probably not a bug but rather a design choice.

This is all driven by the motto of Havoc Pennington, a former GNOME developer, who believes that it is better to make software behave correctly by default than to add a UI preference to get the desired behavior [5]. The arrogance of GNOME developers reached a point where they decided that the correct behavior of their software should be blocking any application from being executed from Files, the file manager [6]. Luckily they stepped back from that. Another example, also in Files, is the fact that it shows files size in KB/MB/GB instead of KiB/MiB/GiB, confusing users for no good reason, making GNOME the only desktop environment that does not even allow this to be changed. And why did GNOME decide to set font hinting to grayscale by default instead of subpixel since the latter is more suitable for LCD screens than the former?

GNOME’s file manager shows file size in MB, but its webpage does not agree

A similar dubious decision was made on how Files sorts files: it seems to rely on LC_COLLATE system variable, which means that depending on the distro the files may be sorted using case sensitive (e.g. Virtualbox might appear before firefox). One may wonder whether it is just a stupid default, but actually there is no official way to change that.

Also in Files, there is no difference between type-search and file search, and by default it is always recursive — the dialog sometimes requires the user to hit the back navigation button twice to close it. What about thumbnails in list view only showing when zoom is set to at least 150%? Oh, and out of the box do not expect to find a way to open as root or create a new file.

Default zoom in list view does not deserve thumbnails

It is clear that GNOME tries to mimic Apple UI in many ways: the Dash, switches and Panel all look very similar. Activities Overview and Applications List are some sort of split of Apple Mission Control [7]. It also follows this new trend of big, flat and monochromatic UI elements, as seen even on different platforms, like Microsoft Windows.

Microsoft Outlook running on Windows — this boring UI trend is omnipresent

Even disregarding these issues, GNOME’s concept of minimalism does not seem to hold. For instance, requiring a full browser engine (i.e. WebKit2GTK) to use a desktop environment is anything but minimalist. Why does it come with support to third-party online accounts in the first place? Not to mention the Panel, which takes space for basically nothing, except informing date/time in the center and one button at each corner — do not try to edit or move it because it is simply impossible.

Any similarity between GNOME and Apple UI is not just a coincidence

From the maintainers’ perspective there is absolutely no minimalism. Building GNOME from scratch is a tough journey that requires deep knowledge about how its moving parts work and, especially, heaps of patience and free time. Just to build WebKit2GTK can take one hour and more than 16 GB of RAM, while Xfce on the same machine can be fully built in 5 minutes, requiring less than 500 MB of RAM. Apart from that, in order to provide an optimized user experience, GNOME requires the removal of lots of unnecessary services and libraries, otherwise it would be as heavy as KDE.

Building GNOME Display Manager can be a nightmare

And good luck trying to figure out why some features do not work, since there is no feedback whatsoever (even in the terminal), like, for instance, touchpad gestures, keyboard layout, extensions management, power mode, Videos application, among others.

Videos (aka as Totem) is not going to help you understand why it refuses to run

Dconf is yet another standard created to increase entropy that in some ways resembles Windows Registry: not only does it get bigger over time and blocks the possibility to ship packages with personalized settings, but it requires an additional application (dconf editor) to view/change most of the system settings. And this concept is not even consistent: some settings can be fully restored from dconf while others cannot, like modal dialogs setting, number of workspaces and default applications. Also, some parts of GNOME require GTK 3 and others require GTK 4. Mess with any schema file or dependency and you may end up with this lovely screen that says nothing about what is actually happening (who cares if extensions are disabled if the desktop does not load in the first place?):

Fragile. Please handle with care

GNOME claims to be intuitive and easy to use, but it is hard to believe that changing many well-established concepts would result in such experience. Here are some examples of counter-intuitive features:

  • By default there are no minimize and maximize buttons
  • After minimizing a window it vanishes and, if the animation is clunky or disabled, there is no feedback as to where it can be found
  • Network, audio and power icons on the Panel seem 3 different things until the user clicks on them and finds out they are a one-button thing
  • By default all modal dialogs are attached to their main window in such a way that it is impossible to see what is behind them
  • When clicking on the date/time item on the taskbar the popup also shows the audio player widget
  • There is no native UI application to download and install extensions
  • Runner (alt+F2) is modal for no good reason and lacks suggestions and auto-complete
  • By default in all major desktop environments it is possible to move/resize windows holding alt key and left/right clicking anywhere, but not in GNOME
  • It is hard to distinguish between foreground and background windows
  • Depending on the resolution the display scale option may not appear
  • Again, there is no official way to put files on the desktop
Sure hidding the audio player widget under date/time looks the most logical decision

Applications List deserves a special category of flaws and annoyances:

  • How items are sorted is a mystery and there is no simple way to set it to be alphabetic — sometimes it is even possible to see the items changing position without any input
  • When adding an application to the Dash bookmark it is actually moving it out of the Applications List, which can be very confusing given how docks and quick launchers usually work. Also, when there is more than one page, the remaining items do not shift left
  • If the user adds two or more applications to the Dash bookmark in a row and then remove the first one, it is not going back to its original position in the Applications List grid
  • The only way to ungroup applications is moving out one by one
  • When moving out an application from a group, the popup closes and, if there is not enough space on the current application page, the focus goes to the next page
  • There is no way to select multiple applications
  • If there is more than one instance of an application running, it is not clear what will happen when clicking on the application icon on the Dash or in the Applications List

Same for Files:

  • Does not save the view setting per folder, however the same cannot be said about column settings (when in list view)
  • Does not show the status bar until a file/folder is selected, and it might block part of the folder content
  • File transfer has no pause/resume, and the current speed label takes a long time to show up
  • Grey out color for cut files is very hard to notice
  • File content search relies on indexing service and does not work with non-text file extensions
  • There is no way to see/select the current path unless using the shortcut (ctrl+l)
  • In many file managers F4 key launches the terminal, but not in Files
  • Because it is not clear whether Files session is running as root or not, the column Owner showing Me does not help
  • The user can open (via runner or global shortcut) as many instances of any application they want in a row, but the same does not apply to Files
When using the minimal recommended resolution this is the crap you get — do not expect tooltips

GNOME also claims to be efficient. How can a desktop environment be efficient if it is slow? Even when opening its native applications! The total time from starting Files until it is ready to be used is above 500 ms, and that is after caching. In the same scenario LXDE is more than 5 times faster. And the list goes on:

  • Animations get clunky if GNOME does not like certain combinations of GPU and drivers, even if they are not older than 5 years [8]
  • To navigate from one folder to another Files takes more time than all major desktop environment’s file manager
  • After installing a small application it takes around 5 seconds until it can be found in the Applications List, while in other desktop environments this is instantaneous
  • Terminal render performance is just average — slower than QTerminal and much slower than Alacritty
  • Although GNOME has fewer features, its memory consumption is higher than Cinnamon, LXDE, LXQt, MATE and Xfce
  • When a new image is added for the desktop background it gets duplicated in ~/.local/share/backgrounds.

No matter what you do or how light or heavy your usage is [in GNOME], there’s always a delay between action and realization. Application windows lag opening and closing. Things are perceptibly slow. The more things you do, the worse it becomes. (Dedoimedo)

It is as if GNOME were a fancy 3D game with high polygon count, advanced AI, complex physics, ray-tracing, volumetric lights, large scale maps, etc, while in fact it just needs to handle a bunch of simple 2D windows and a few services in the background. Of course, by being slower it means it needs more computer resources, requiring more power and leading to less battery life on mobile devices.

On average GNOME consumes 82% more power than MATE (source)

Maybe GNOME claims it is efficient from the usability perspective only. Actually, on GNOME’s principles webpage they say that every application should minimize the number of steps required to perform a task and that if something can be done automatically, the application should do it [9]. But here are some examples to the contrary:

  • There are no default keyboard shortcuts to open System Monitor, Files, Terminal or minimize all windows
  • After downloading a file via browser and clicking to open it, Files will not get focused, instead a popup message will appear saying the window is ready, requiring additional click
  • The amount of clicks to connect to a wifi network is outrageous — the available networks list does not even support double click
  • Sound widget on the taskbar does not have a device selection option and it is not possible to just mute/unmute keeping the volume setting
  • Because there is no support for quick launch shortcuts, opening an application requires at least one more step
  • Menus are hidden under the 3 dots button, requiring an additional click
  • Basically all major GNOME updates break compatibility with third-party extensions
  • To see which applications are open the user has to switch to Activities Overview
  • Files hides non-portable storage units under Other Locations, requiring an additional step
GNOME’s sadistic desire to play hide-and-seek — i.e. non-portable storage units hidden in Other Locations

Then comes UI consistency, one of the things GNOME seems to be most proud of. To be fair, it is not bad, especially when compared to most Linux desktop environments. But GNOME is kind of cheating by removing so many features so in the end there is not much left to take control of. Here are a few examples of inconsistencies:

  • Once in Other Locations, the user has to single click to navigate to a given device even if Files action is set to double click
  • Even if Files is set to icon view, Other Locations will still be shown in list view
  • Other Locations blocks most context menu entries
  • Terminal is the only native application that has presets for its window size
  • Network settings seems to be the only dialog with an Apply button
  • Some drop-down menus do not allow the user to press up/down keys to change their values (e.g. display orientation and scale)
  • To open a new instance in Files the shortcut is ctrl+n, but to do the same in Terminal the shortcut is ctrl+shift+n
  • Document Viewer, Files, Text Editor, Videos, etc, have different names if you want to change their advanced settings in dconf editor
  • In Files, right clicking on a file/subfolder shows a big and odd padding after Properties
  • Terminal has menus when executed as root
  • When right clicking on an application entry on the taskbar, Dash or Applications List, the context menu might not show this New Window option (e.g. Archive Manager, Image Viewer), and even when it shows up it does not mean it is always going to work (e.g. Audacious, GParted)

In the image below it is possible to see that some of the native applications do not have a title, like Files (bottom right) and System Monitor (top right), others have a normal title, like Terminal preferences (top left) and Extensions (center), while others have two titles, like Settings (bottom left). The Terminal preferences window seems especially problematic: it cannot be resized and it has two items on the left panel (Global and Profiles) that seem to be clickable but they are not. By the way, these spikes in the CPU usage seen in System Monitor were a result of native applications being opened/resized/moved and nothing else.

GNOME UI consistency is not quite there yet

The scope of this article does not include an in-depth analysis of GNOME’s additional applications, but a superficial test shows that:

  • Image Viewer takes some time to apply anti-aliasing after an image is loaded/resized
  • Text Editor cannot cope with source code files bigger than 100 KB
  • System Monitor is so heavy that it contaminates CPU usage graph
  • Music refuses to load files that are not stored inside ~/Music folder
  • Videos fails to correctly downmix 6-channel AAC tracks to stereo
  • GNOME’s lack of tooltips makes some things subject to trial and error, like this v-check button in Videos:
Only a fortune teller can tell what this v-check button does

So why is GNOME one of the most popular desktop environments on Linux? First, there are big companies behind it. Second, it has been adopted as the default by many major distros and most people do not bother to change it. Third, the average user is easily seduced by trendy UI, especially if it has nice animations, even though they do not improve productivity and after a few days most people do not notice them anymore. Fourth, as much as its UI is not entirely consistent, GNOME is still ahead of most of its competitors in this regard. Fifth, people like novelty and they are led to believe that new means better, ignoring that essentially what we do on a desktop computer has not changed in recent decades. Sixth, GNOME’s 6-month release cycle is pretty aggressive and a way to stay relevant in the market [10]. Seventh, because software in general is getting slower over the years, not being snappy is the new normal so people just accept it — KDE, which is the main competitor of GNOME, is also laggy in many cases.

This leads to the initial question: why is GNOME supposedly the best you can get if you want a modern desktop environment on Linux? Well, if modern means following a visual trend, then yes, GNOME is modern. But why should we accept that modern means limited in basically all other regards? As seen in this article, vanilla GNOME is not fast, it is not efficient, it is not decently customizable, it does not introduce any revolutionary concept that makes users more productive and in many ways it is not even intuitive, ignoring its own rules.

Is there a solution? Well, GNOME’s team is aware of the performance issue, but it is really hard to believe there is a fix for this problematic ecosystem built upon JavaScript [11]. Also, the lack of basic features seems to be a design decision that will hardly change. So unfortunately there is little hope that GNOME will become good anytime soon. But as an unpretentious exercise, the curious reader can ignore all other differences and try just for one day LXDE (or even LXQt) as a performance reference and Xfce as a customizable reference. You might be surprised.

GNOME version 41 was used during the writing of this article and all main tests were conducted on an Intel i3 10105f running at 4.2 GHz (set to performance governor) paired with 16 GB RAM, Samsung 980 1 TB NVMe and Nvidia GTX 1650 Super using proprietary driver. Fresh install x64 distros tested: Manjaro 21.2.0, Pop!_OS 21.10, Ubuntu 21.10 and Porteus nightly (kernel 5.14.16), which is being maintained by a small group of developers, including me, so I had the chance to try many things, including vanilla GNOME.

Discussion:
Hacker News
Linux Questions

--

--