04 May 2024

GNOME Is Not 'Mobile-First'

And like I said on my podcast, people think I only use KDE, but sometimes, I get so overwhemed with KDE that I need to fire up my GNOME virtual machine just to get a little bit of peace. Because it just… works. … GNOME just works. The moment you start installing extensions, you are introducing some instability into a stable OS, although there are some exceptions. … but GNOME is the macOS of Linux: if you use it the way it was intended to be used, it is going to be super stable. …

DarkXero, Tech Over Tea #164

Gnome 3 and Gnome Shell should be case studies in great interaction design2.

Instead of copying Windows or macOS (an affliction that affects other alternatives and is inexplicably seen as a feature in those communities), Gnome 3 has its own culture and consistencies. These clearly derive from a first-principles approach to design and are refreshing to behold.

Aral Balkan, Pop!OS 18.04: the state of the art in GNU/Linux on desktop

So I have been known to switch between desktop environments and window managers. … But there comes a time in every man's life when you just need to work right. You just need stability. I'm at the point now where I want stability, and I need something that I know I can just come here to my computer, do whatever it is that I need to do. … and honestly, I needed a Wayland session that would provide that for me, and that's how I ended up on GNOME. It has provided the stability that I need, and that's the thing that I need the most right now. I don't need all the flashy features of Plasma as much as they are cool. I just need the damn thing to work all the time.

Matt, Finally Growing Up

In my previous article I wrote about the reasons I think all the hate directed at the GNOME developers from distro maintainers and users is unjustified, and how the perception of GNOME, the way people are treating them, is distorted and unfair. But that blog post was primarily a response to the "moral" (or at least that what GNOME is doing is somehow inherently evil, or wrong, or abusive, or that downstreams or users are entitled to GNOME's obedience. There's a whole other world of GNOME-hating out there, though, that has more to do with its design. There's this belief, even somewhat reflected in Strobl's blog post1 about unrelated issues, that GNOME is simply badly designed, suboptimal for desktop work, or even inferior.

I don't believe this is true.

Myself and many other (especially disabled and neurodivergent) users find GNOME's design philosophy of opinionated minimalism to be to the point that, if GNOME didn't exist anymore, I would find it significantly less pleasant to use computers at all. Moreover, I don't think the proposition that GNOME is in any way

in fact, I think that position is generally born from ignorance, from a superficial understanding of the intended GNOME workflow. That workflow may not be for you, but there is real logic behind it. So, in the following blog post, I'm going to discuss and defend each of the major things people tend to complain about with GNOME:

  1. the lack of customizability
  2. the lack of "power user" features
  3. the idea that GNOME is somehow a "mobile-first" interface, somehow sub-optimal or unsuited for the desktop.

To be clear, I'm not going to argue that GNOME is the "best" desktop environment for the choices it makes. I'm just going to explain why the choices it makes really do work for some users, and are well-designed and well thought through, not simply made out of malice or incompetence or hubris, as many people like to claim. If the reasons I give here but don't belittle it or the users who use it simply because it isn't what you prefer, when it has its own strengths as well as drawbacks. As I've said in my previous blog post, the entire point of open source is to let all sorts of different projects, all with unique and different goals and visions and motivating design philosophies, flourish, so that we can all choose to use what works best for us. Not to have users force every project to be the same to satisfy the majority. Different people have different needs and I don't think it's every projects job to cover everyone's needs. Such a view would cause us to lose many unique and interesting things… like GNOME.

1. Lack of Customizability

Many view GNOME's customizability as abusive towards its users. After all, they say, isn't the entire point of Linux giving users control over their systems, so that they can customize it to their liking? The problem with this thinking is that it's myopic. It only sees the user choice available within the currently installed desktop environment, as if users don't get a choice between distributions that foreground different selections of desktop environments, and then different desktop environments within each distribution, and then have the chance to install, uninstall, and switch between desktop environments once they have their new distribution installed. It's a failure to zoom out a level and see that the existence of an opinionated project does not take away anyone else's choice in a healthy open source ecosystem where other competing projects exist, and new ones can be forked or started at any time if enough momentum gathers behind them. Users even, if they're crazy, have the option of forking and starting their own desktop environment or window manager! Thus, if a user wants a desktop environment that gives them a lot of choices, a lot of customizability, the existence of an option that doesn't give them what they want doesn't take anything away from them.

GNOME often draws comparisons to Apple macOS or Microsoft Windows, due to its opinionated design and less plentiful settings, but the source of the problem with those operating systems isn't their lack of it's the lack of modularity in their operating systems such that you can't replace the desktop environment if you want to, and the operating system level lock-in and network effects that apply to them. The lack of customizability is a problem because people are restricted to only use in other words, the problem is the coercion behind the decision, not the decision itself. In the free and open source software world, on the other hand, the implicit coercion is gone. No one is forced to use GNOME. There is a healthy marketplace of other options, and many distros that ship those other options by default. Applications work between them, and you can switch between them relatively easily (even more easily with image-based Linux distros!). You only want to beg Microsoft or Apple for a little customizability in their experiences because you can't simply choose a different experience. In a context like FOSS, however, instead of being an oppressive regime, opinionatedness is simply another choice in a diverse cast of choices, in the same way that if you had two burger joints across the street from each other, one that let you put any combination of toppings you wanted on your burger, and the other that only served a single kind of burger that they'd dialed in to their idea of perfection, the second burger store isn't taking away the choices or freedoms of the people that decided to patronize it, because they did in they simply chose the curated option instead.

Which brings me to the important point that, as a matter of fact, some people would rather use a desktop environment with opinionated, finely curated and quality-assured defaults, with minimal extraneous features, instead of one that is infinitely customizable and malleable, and so trying to change the former would actively be taking away choices from those people.

It is not enough for KDE proponents to simply answer that it is it isn't just GNOME's workflow that we like, but the fact that it is the one choice on GNOME that is the intended way to use it, whereas under KDE it is just one of a million different possible of other ways to use your desktop. That limitation is essentially the entire appeal of GNOME for us. That might seem strange to you, but when you look at the effect having too much customizability has on development as well as user experience, and the fact that too much customizability is often a band-aid for poor UX design in free software, it begins to make sense.

While KDE offers preference toggles for everything, each of which might be individually supported and bug tested, each preference available multiplies with every other to create a combinatorial explosion of possible total configurations, which makes it impossible to properly test or refine all or even most of the different ways users can use their system, leading to bugs, accidental conflicts between different settings, unsupported or awkward configurations, accidentally janky setups, and more. The total QA abilities of the project are at best split up between every single possible configuration, spread thin like too little butter on too much bread, or, as is probably the case, meaning that only a few common configurations, and mostly the most common one, are actually really tested and refined at all. Oh, they but that means someone has to stumble into that land mine first, and proactive design work and refinement is important.

In comparison, GNOME chooses to make a different tradeoff. Instead of a million options, it narrows the choices down significantly, choosing to pursue only one main workflow and configuration with ruthless focus and efficiency. In return, they get to keep their surface area small and their development efforts directed like a powerful laser beam at the one user experience pathway, meaning that they can carefully refine its design and debug it. In this way, they ensure that they can extensively test and perfect that one experience and make sure it is bug free, smooth, and refined. The drawback being, of course, if you want to fundamentally change that experience (instead of simply lightly modifying it) you're but again, that's the beauty of open source.

Think of it like programming languages. Some people want to use C++, with its immense list of crazy features like concepts and template metaprogramming and multiple inheritance and so on, and are willing to pay the price in how inscrutable and complex it can often make their code, and how the features can interact in so many insane ways that you can create problems for yourself, and some people would rather use Rust or even Go or Scheme, which restrict the feature set, and even what the programmer can do at all, in order to focus on a more curated experience.

This is not to mention the fact that, as someone who probably has ADHD as well as something like OCD, sane defaults and limited customization options in my desktop environment are a huge benefit to me. They help me stay focused and on track doing what I originally intended to do, as often happens whenever I go into any extensive settings menu to try to which I then almost always completely revert back to the default because with user customizations, it is never impossible to quite get everything to look professional and consistent.

And although this phenomena is more pronounced for me because of my specific circumstances, I think this generalizes: customizability is a budget, since it drains your time and energy possibly even if you don't actually use any of it. So endlessly spending time perfecting our customization of our "hand tools", the things we actually directly spend but spending time dealing with customization, or the fallout of customization, for things that aren't hand tools for us can often fail to be worth it, and opinionated defaults become important. My editor may although even there, the structure and sane defaults of Doom Emacs are a massive boon for me, I basically go with those defaults 100% of the time, with my customization almost entirely limited to because it is my tool of trade, but I don't want to spend that customizability budget on my desktop environment. I want my OS to get the hell out of my way. Even moreso now that I (perhaps permanently) suffer from a functional neurological disorder that makes processing sensory information more difficult and slower, meaning I'm constantly in danger of information or sensory overload, and which also limits the amount of time I can spend focusing each day before it becomes excruciatingly physically painful, which means that I both want a cleaner, simpler, more refreshing interface with more negative space so it's more visually restful, and it is even more important that I stay focused and on-task each day.

When it does come to customization, however, I haven't personally found GNOME all that bad. At least since GNOME 40 (barring the switch to ES6 modules in GNOME 45) GNOME Extensions seem to be more than stable and plentiful enough to give me all the customization I need for my desktop environment, and importantly I actually really appreciate the browser-like extension model, where instead of every feature and option anyone could every want being there cluttering up everything from the beginning, creating a dense overwhelming interface full of obscure features that will likely never be relevant to me and which will only contribute to information overload or distract me with endless opportunities to tweak things, as well as causing a combination explosion of bugs in the interaction between these features, the default experience is simple, clean, curated, and quality-assured, laser-focused on refining the specific workflow it is designed around instead of trying to be all things to all people, and if I need extra features or want to change aspects of the feature set, I can install little collections of other user's scripts to modify the behavior of my DE. You get a clean and consistent minimal core to compose your desired experience on top of.

In fact, honestly, in a lot of ways this extension model is even better for configurability than anything else, because far from using a restricted pre-existing plugin API, you actually have deep access to every aspect of GNOME's internals directly, because most of GNOME is written as extensions to with nothing mediating your access to everything, nothing in the way, while at the same time you can write everything in a super easy to use language (GJS, and soon perhaps TypeScript) that you can get started with very quickly. Yes, this comes at the cost of stability, because there's not a stable API, but the GNOME team has to deal with that too, so it isn't unfair, and it means that Extensions can be far more powerful and far reaching under GNOME than literally anything else in the entire desktop world without GNOME having to commit to either becoming a hyper module desktop environment construction kit or a massive behemoth with a million dials and knobs they have to maintain themselves in tree like KDE. It basically spreads the burden, so that people who care about a certain feature can maintain it themselves independently while GNOME can focus on delivering the vision and workflow they want that serves as the common core for everything else.

at least, not enough to build a whole separate desktop environment off of, but that they're designed for individual users to write, maintain, and use, as personal customizations, not to be rolled out as official products at a mass scale. And this paradigm honestly really works for me: GNOME doesn't really break extensions often at all in my experience, and I can tell that it's that and not the extension maintainers doing a lot of under the hood work to make it look like they keep working, because I basically never have to update extensions between minor versions of GNOME, and sometimes even major ones! And I've written an extension before, and the only time something major changed enough to break it, the change was pre-announced, well-justified, and there hasn't been any other changes since. GNOME Extensions makes GNOME almost infinitely flexible in a way no other desktop environment is, while everything stays feeling relatively well integrated, and yes, the cost is stability sometimes, but I've never had an issue with that.

I only really use three main extensions:

  • V-Shell to switch the orientation of my workspaces because I'm used to the vertical orientation from GNOME 3, and honestly think GNOME 3 got it right the first time (ironic that GNOME switched to horizontal ones to satisfy people that preferred the familiarity, given the accusations made at GNOME). I don't all the other insane levels of customizability this extension offers, though, I set it all as vanilla as possible besides workspace orientation.
  • Forge to get autotiling windows, until GNOME introduces their own take on automatic window tiling, which I'll probably switch to then, because autotiling is an absolute must for me, and it goes together with GNOME's default workflow very well. This is only even a non-official extension, by the way, because System76 refused to upstream their implementation or collaborate with GNOME on making an upstream version so they didn't GNOME absolutely does have plans for tiling in the future.
  • Search Light because I'm a former tiling window manager user and a rofi-like experience is more familiar, and because making the full transition to overview mode in GNOME is painful for me right now since I'm on NVIDIA Wayland and there are some serious frame rate issues between NVIDIA GPUs and Wayland compistors [[https://gitlab.gnome.org/GNOME/mutter/-/issues/3461#note_2101445][across I'll probably replace it with using vanilla overview eventually.

2. Lack of GUI Power User Features

What about the lack of power-user features?

I think this really comes down to two different ways of using the Linux desktop. If you're a Windows-style power user, where most of your "power user" behavior comes from making use of the advanced features of graphical interfaces, and so you want every UI in your desktop environment to be jam-packed with menus and buttons and features and settings and status bars and everything, GNOME won't be for you, but if you're a terminal-first power user like me, and whenever you need to do something more advanced than relocating one file you immediately pull out the terminal or Emacs and start hacking there instead, a lack of power-user features in the GUI is pretty much a pure positive for me:

I want my DE's built-in applications to be simple, quick, easy, intuitive ways of doing basic everyday tasks.

This is predominantly because I would never use GUI power user features in DE default apps even if they were there because the vast majority of graphical interfaces, even with lots of keyboard shortcuts, just inherently have a far lower bandwidth, and far less capacity to quickly express complex operations, then a command line, because they're not going to go as far as professional-grade software workstations like Blender or editors like Vim or Doom Emacs do and give you a full modal shortcut-based command language, it just simply isn't worth the effort, if most apps even have the resources to spare. So if I want to do something with more power I'll pull out the more powerful tool. Given this, not having all those "power user features" isn't something I miss at all. It's something I simply don't notice. If anything, my DE is mostly just a window into my terminal, my browser, and Emacs; I want it cleanly and coherently integrate all the basic services of my OS like Wireguard and Bluetooth and Wifi together in a consistent and easy to use manner and let me manage windows well and that's it. I'll only interact with its default apps when I want to come up for air briefly and easily and conveniently do basic "household chores" around my computer, in which case I want the simplest, most streamlined experience possible so I can get back to doing what I actually want to do. So the lack of these more advanced features simply makes my desktop feel a lot cleaner and more focused and generally easier to use. There isn't clutter everywhere causing distraction and information overload, the UIs are just clean and streamlined and focused on doing the basic tasks that would be most efficient when done via GUI as available and direct as possible, and directing you right to them, and for everything else you can use the terminal or a different application and the DE gets out of your way.

In general, even if I do need a more powerful GUI or application for something than what GNOME offers me for a certain task, my DE offering something more powerful wouldn't actually be that helpful: I can pretty much guarantee I've either already got my own preferred application that I'll just bring myself, or I'll want to research and choose something on my own for myself, so having something bundled with the DE is just going to end up an extraneous feature, an extra application I have installed that I never use. So, while I don't need double columns and all sorts of advanced features that would be better and faster to do with some judicious use of the shell, if I did want a more powerful file manager, I'd do my research and pick something like ranger or midnight commander or a graphical file manager. Being supplied with an overly-complex pile of spaghetti of an app by my DE is like being a gift "that's great :|" you say, trying to look grateful while putting the gift box aside.

3. Is GNOME's UI/UX Designed Exclusively For Mobile?

I really don't understand why people keep pushing this misconception. GNOME certainly doesn't have to be for everyone, but this canard is needlessly dismissive and based on a childishly superficial apprehension of GNOME. Just because there is a full screen menu, and the desktop is uncluttered by drifts of extranious UI trash, so you can just focus on your task and use the keyboard to control windows and navigate, that makes it "iOS like"?

At that point what does that even mean?

I'm not saying this workflow has to be for you, but GNOME's vision is actually a consistent, desktop class workflow of its own, if you actually try to use it on its own terms. GNOME isn't just trying to make a desktop that works on mobile primarily, that would make literally zero instead, they're simply focused on creating a highly fluid, streamlined workflow based around making maximal use of dynamic virtual workspaces, fuzzy searching, and keyboard shortcuts, that emphasizes focusing on the content of your applications, and the tasks you're doing inside them, and taking the emphasis off the window manager and desktop environment itself as much as possible. In service of making your applications the center of attention, and streamlining the user interface, they have removed many user interface elements, but they've only removed the ones that are made fundamentally redundant by the existence of virtual workspaces and fuzzy-searching, and no more. In essence, they're doing a first-principles redesign of the desktop experience: instead of just plastering more features onto the outdated Windows 95 desktop metaphor that was designed before or in ignorance of many of the features we have today, they're taking a step back and trying to restart from scratch, and then keeping what is absolutely necessary and helpful given the fact that we now have these more mordern features. The logic of behind each of their choices is excellent, in my opinion. Here are just three examples:

  • No need for a minimization button if you can simply banish a window to another virtual workspace with a simple key command or gesture if you don't currently want to see it
  • No need for a taskbar to manage minimized or occluded windows no windows are ever truly hidden, or inaccessible behind other windows, because minimization no longer exists and you can easily just jump into an overview mode and see a mosaic of all of your windows across all desktops, and fuzzy search through all of them from one single central place, instead of having to manually hunt around in your list of windows with your mouse like on Windows
  • No need for a dock or pinned application icons if an extremely powerful Spotlight-style fuzzy application launcher (with built in app menu search, calculator, web search, file search, definition finder, etc) and a dock, combined with a very useful expose and workspace overview conveniently arranged there for you in a single screen, is a single click or key tap or mouse flick away

GNOME's dynamic workspaces feature just enhances all of this, too: the fact that every time you put anything on a workspace, a new one is added after the last one, so you can just directionally arrow yourself out to a fresh workspace, or banish a window to the next workspace without having to keep track of what number you're on or explicitly create the which is something that I found annoying with i3 and

means that it's just that much easier to use workspaces without having to stop and thing, without a hitch in your workflow.

It seems to me people just assume that since GNOME doesn't have things they're used to from other desktops, they associate with "work", it's must be a "toy." And maybe the knee-jerk reaction to the new GNOME 3 interface was understandable at the time, given the Zeitgiest when it if you're in a time when you're seeing a lot of interfaces move towards being less usable in your eyes, in favor of chasing largely wishful thinking, you might well react strongly to the smallest sign of it in other places. However, I think this reaction was ultimately misguided at the time, and is even moreso now, more maintained by resentment that has long since reached the point of being self-sustaining than anything else. They aren't backed up by much real evidence.

The concessions to touch oriented devices in the design in GNOME 3 are mostly superficial, skin deep changes that are perfectly usable on the desktop, and also serve rather useful design functions, and have interesting advantages, on the desktop as well. For instance, if you're scrolling through your applications looking for one, you're not going to have your attention on anything else in the screen, so why does the menu need to take up a small amount of the screen, instead of taking up the whole screen and being able to show you more results?

Similarly, if we look at title bars, all GNOME did was essentially merge a move that necessitated larger title bars to maintain button sizes in line with those in the application window itself, which makes sense, since they now ARE application buttons, but in return unified a number of often stacked UI bars with overlapping purposes into a single cohesive entity, probably overall decreasing the amount of space taken up by the header area of many applications overall. In light of this change, moving menus into a hamburger also makes perfect sense: if every application now has an action bar, all the common menu bar actions will be covered there, arguably more discoverable and convenient than before, so being forced to make room for those action buttons by putting the rest of the menus behind a universally understood, common icon (adding at most one click, and likely actually being a wash, since hamburger menus in GNOME tend to be flatter), is a small price to pay, especially since, again, it also helps merge two bars into one, actually saving space. Even some KDE developers have admitted that, for certain levels of application (and I agree here, really big and complex applications should use a regular menu bar, or, preferably, an actual command palette).

In the end, then, 99.9% of the complaints people voice about GNOME, if you ever bring it up, will essentially boil down to the fact that its desktop paradigm and workflow don't work like Windows (or the Linux DEs that by default work a lot like Windows) and so this or that a feature they expected from Windows (like quick launch icons for apps, a taskbar, or a minimize button) wasn't there, so they couldn't use it like Windows, which makes it "literally unusable". Here is a representative example from a Fedora Project discussion comparing KDE and GNOME:

I didn't really understand what this Gnome thing was or what it did, but I decided to try it for at least a month. … I'm not an expert but I've been using computers since the early 1990s at work and at home, and that was the worst month I've ever had with a computer. I just didn't understand this Gnome thing. It wasn't intuitive like OS X and even Windows were. I couldn't figure out how to do things that used to be so easy for me to do. …*Gnome is maybe the worst software I've ever used and in my previous life as a corporate accountant, I used some really unusable software.*

What people like this are missing, though, is that 99.9% of the time the way you're supposed to achieve that same goal in GNOME is at least as smooth and efficient as the Windows version, probably far moreso once you get used to it, and they didn't need that feature at all because other more powerful features (that interact with the other features to create more power for you) lets you do effectively the same thing. In fact, this is borne out by the experiences of one of my friends who I convinced to switch to Fedora with completely vanilla GNOME. When asked, this is what he said:

After using windows for over 10 years, I've been able to switch to Gnome almost seamlessly. Once a month I notice that I'm using Gnome, apart from that I've been able to be immediately productive and just get on with things

I gave him exactly zero guidance on how to use it, but yet he figured it out quickly and easily, because he came to it with an open mind.

GNOME is essentially the Scheme of DEs: it gives you a small core set of powerful and always orthogonal features that combine into a sum much greater than its parts, which you can use to achieve whatever you want, you just need to do things a bit differently, because some of the (anti)features other DEs have but in return, the way it encourages you to do things give you the opportunity to tap into much greater power (or efficiency) than you would've otherwise had.

For instance, it's way faster and more convenient for me to just banish a window I would otherwise minimize to another desktop to get it out of my way, because then it's always visible somewhere, and because typically when I want to minimize a window it's because it has to do with a task that's different than the one I'm currently working on, and so I find that I tend to want to minimize and bring to the front groups of windows at a time and organize them by task, which is something virtual desktops are way better at, and*so replacing minimization with virtual desktops is just as convenient, but actively puts you on the on-ramp for a much more efficient workflow in the long run*.

Likewise it's way faster to just tap a quick keyboard shortcut and start typing in the name of the file, application, application submenu, or open application window that I want to jump to, instead of painstakingly dragging my mouse around to click on a taskbar or a start menu or a pinned application, or alt tapping in a circle to get to the window I want, so using the overview search function is basically like the experience that you would get with something like rofi or dmenu (or just opening a terminal and launching what you want from the command line) but more versatile, because once you're in it, you also have access to a way to comfortably browse your apps if you aren't sure what you have installed, and an extremely powerful command center like overview of all of your windows and workspaces in case you want to do window management. Thus, under GNOME, actions chain together in a powerful way.

Another example is the fact that the application launcher is fullscreen. A lot of people have pointed at this as the biggest example of why GNOME is mobile-first, but I think it's actually just an example of good design. Think about this: when you have the applications/start menu open on any other DE, including Windows, are you actually using the rest of the screen at all? You obviously can't click or type into any other part it would just close. And if you can't do any of those things, are you really going to be even looking at those other windows while the start menu is open? No, not really, we don't tend to read extensively from windows we can't interact with, especially not while the start menu is just sitting usually precisely because there really isn't anything else meaningfully you can do with any other window while it's open, so you just open it up, focus in on it, find the thing you need, and then close it again. So, at that point, the rest of the screen is just unused space when the start menu is open. You're not looking at it, you can't interact with it, and the start menu will be closed in a second anyway. It doesn't make sense to keep the start menu small, just a tiny part of the screen anymore, that's just inefficient. I think the main reason why the original Windows start menu wasn't fullscreened is that it could have indefinite nested menus that could also be indefinately tall, so it needed space off to the side and top to expand:

?u=https%3A%2F%2Fs1.eestatic.com%2F2017%2F08%2F25%2Factualidad%2Factualidad_241740051_129997762_648x486.jpg&f=1&nofb=1&ipt=18f984d4f51df56fbb211f6c9d35a9e8340e46d2411357a6ac349786b8fbb64c&ipo=images
Figure 1: The windows 95 start menu

But that isn't the case any more, now that we have fuzzy searching. So why keep that form factor? It seems more like tradition than anything. Why not make it fill the screen, then? And in return, we get a more distraction free experience, that's a lot more legible, because there isn't all this other stuff going on in our peripheral vision, and we can fit more applications too, so it's better for just exploring your app list. I don't personally prefer this design (I use Search Light, remember), but I don't think it's inherently mobile-first at all.

That's what GNOME designers mean when they say that adding more features can often make the user experience worse: if you have a much more focused, guided interface, with few extranious features, you can actually make sure that your features lock together in such a way that they guide the user, in attempting to do some task, towards doing the task in a way that puts them naturally adjacent to achieving the same end goal in a more efficient way.

GNOME also makes up for the simplicity and streamlined-ness of its graphical user interfaces by ensuring that not only can everything you can do with the mouse or gestures also be done with ergonomic key

but also that a great many extra features are available as key commands. For instance, many people have long complained that there is no way to go to a path in the GNOME file browser, but that simply isn't true: I've been doing it for years. All you need to do is Ctrl-L, just like in the browser, and you'll gain control of the location bar. Would it be better if some of these features were made clearer through the GUI, or maybe a command palette? Sure, but that's something GNOME is working on, and you do have to give GNOME credit for a very another thing that they wouldn't have done if it was truly a mobile-first desktop environment.

4. GNOME Is a Tiling Window Manager for DE Users

In a lot of ways, GNOME's design philosophy mirrors that of the tiling window managers which have become so popular lately: it is focused on taking a few core insightful features (virtual desktops, fuzzy searching) and completely redesigning the window management experience from scratch with those in mind, completely removing any and all extraneous features. Tiling window managers also don't need minimize buttons, task bars, and app launchers, because, like GNOME, they have virtual desktops and a way to show all windows at all times (in their case, tiling, instead of an overview), so they remove them, because they're distractions from the optimal workflow.

This similarity in philosophy to tiling window managers is actually why I love GNOME so much: when I started using Linux again eight years ago after a long sojourn on macOS, I started out using Arch Linux with i3. Eventually I got tired of having to assemble my desktop environment out of a bunch of tiny components, all configured in different ways and places, all with different design languages, none of which really integrated well with anything else, that often bugged out and didn't work, and that's when I tried GNOME out again, and realized I loved it. GNOME is my favorite desktop environment because it gives me the same keyboard focused, minimal-UI, workspace and fuzzy searching-centric workflow I would have in a tiling window manager, but it also "just works." It's nicely integrated out of the box, and comes with everything I need without having to mess with the config files.

Because in reality, I want to spend my time writing and programming, not configuring my desktop environment. Because honestly, leaving aside all the features that you just can't really emulate well in another window manager (like searching inside applications), I've tried to migrate back off GNOME several times, including trying to spend a couple months with several different window managers and DEs, trying to configure them to be how I want them, and even when I could on paper get 90% of the features I had under GNOME, besides the fact that it was always kind of the most important ones to me that were missing, it always took a ton of configuration and felt fragile and janky and poorly integrated.

And this, honestly, is why I'm so confused by the hate GNOME receives. No one seems upset with tiling window managers for having a highly focused, minimalist, unusual approach to window management, nor would anyone be mad at them for rejecting requests to, say, add minimize and maximize buttons, or title bars if they didn't already have them, yet somehow GNOME is evil, or mobile-first trash, for doing the same things.

5. Conclusion

The GNOME philosophy, it seems to me, can be summed up with three things:

  1. Focus
  2. Simplicity
  3. Fluidity

The key to understanding GNOME is that it wants to be a*minimalist* experience, so that you can focus on the task at hand instead of even having to be aware of the desktop environment at all. It has just the features and options you absolutely need to have a cohesive, smooth, well-integrated, complete desktop experience without having to tinker with anything or install anything, and no more. It has only the most minimal amount of UI elements possible on screen at a time, and no more (and it hides them as soon as it possibly can). It focuses with a ruthless single-mindedness on enabling just the fundamental tasks that you need to get done before you can go back to not dealing with your DE at all.

And all of this simplicity is in service of*focus*: the goal is as few distractions as possible from the content, the thing you actually care about: your applications, and what you're doing with them. The goal is, ideally, that the desktop environment should completely fade away, until it's literally invisible to you except when you need it. That's the guiding force behind everything they do, and it's why I love their user experience so much. GNOME, for me, is invisible. I never have to look at it, I never have to deal with it, it is just the invisible grease that keeps everything going for me.

This is where the*fluidity* comes in, too. As I showed above, every feature is orthogonal, so there's never a question of how to go about doing something, and every feature is also carefully designed to interlock with the others, to serve as a highway on-ramp to every other feature, so that everything chains together like in a fighting game. Using each feature sets you up for using each other feature to gain greater efficiency like a combo in Street Figher, until you've completed whatever task you wanted to do and you're out of the DE again and back in your application.

This philosophy has a lot of influence from cognitive ergonomics, and each major design change is accompanied by a lot of actual research with actual users, and, in my opinion, it shows. This may not seem that appealing to you, but please don't assume that your opinions are objective: what is good for you is not good for me, and vice versa.

Footnotes:

1

Linux users have long enjoyed the degree to which they are able to personalize their desktop apps and environments through theming, a tradition dating back to long before I even started using Linux. Reasonable expectations like these are being completely turned on their head by GNOME.