Denys Rtveliashvili
ai

The decline of Linux on Desktop

Foreword

The popular view is that Linux is a bad OS for Desktop and should rather be used exclusively on servers. Windows and Mac OS are, on the contrary, rather good on Desktop and that’s what people should be using. Some would also say, “Having said that, Linux is improving”.

I have been using Linux, Mac OS, Windows, and a bunch more systems for almost three decades and I cannot disagree with this view more. Perhaps for someone who sees tablets and smartphones as “convenient” Linux is in fact uncomfortable “but perhaps improving”. For professionals, it is the very opposite. I do believe that Linux (and UNIX systems in general) were hands-down superior to Windows and Mac. I guess the golden age of Linux on Desktop was around 2000-2010. But then it was ruined, rather mercilessly if you ask me. But let’s dissect the matter step by step and I hope my point will become clearer.

What Makes a Difference Between a Good and Bad UI? Is it the appearance of the GUI? The relative location of the “Yes” and “No” buttons? Ability to “swipe” like on a tablet? Should icons be flat or bumpy? Should colours be vivid or pastel?

My view is that the quality of a UI (as well as many other things) depends mostly on whether it is friendly or not to “flow“. The ideal UI must allow its users to focus on the tasks at hand, provide straightforward means to get the job done, and never jump into the face. It has to be so good as to be almost invisible. Anything that breaks the flow is causing harm and has to be avoided. Cognitive processes matter.

With this understanding at hand, let’s proceed.

A bit of history

So returning back to 2000-2010, let’s recall what was going on back then and how desktops looked.

Windows versions were going from Windows 98 (which was, IMHO, rather nasty) to Windows 7. Their UIs stayed pretty much the same and everyone knows that “Windows” is.

Mac OS X has just started its march, going from 10.0 to 10.6 and people were impressed. It was a dramatic change from the old Mac OS UI but… actually, it was drawing upon a very old and well-forgotten UI of an operating system called NeXTSTEP.

As for Linux, it had several desktop environments and a lot of window managers, sparkling with powerful features. A side note is that a window manager is a software which shows and controls windows on the screen, while a desktop environment is a bit like an ecosystem which contains a group of closely related applications, standardised visual components, and often a window manager too (although sometimes you can choose which window manager to use).

Linux had two major desktop environments: Gnome 2 and KDE (which was in turn going through versions 2, 3, and 4). Both provided a fairly comprehensive set of applications and a unified desktop experience. Those who liked antiques or traditions were able to use Common Desktop Environment which was quite popular on big machines. There was, and still is, Xfce - a lightweight and somewhat minimalistic desktop environment.

But one did not even need a desktop environment. Those who liked minimalism could do just fine with a window manager alone. And there were plenty to choose from. Here are a few that spring to my mind:

But of course, there are tens more.

Some say this diversity has damaged Linux on Desktop as people were not sure which option to choose. They may be right to some degree. However, I do believe the real reason is different. But let’s first discuss why Linux shone when compared to alternatives.

Strong Features of Linux/UNIX Desktop

Here is a short list of features which I loved and relied upon for years, with an explanation of why they are good and why they help people to use and enjoy their desktop environment.

Virtual Desktops

Virtual Desktop is an umbrella term which can describe two features:

  1. Ability to support a desktop of a size greater than can be physically shown on a screen.
  2. Having multiple desktops, each with their windows, with an option to switch between them (so that only one is shown at a time).

The former was particularly useful in the olden times when screen resolutions were quite limited and one had to work with large images like blueprints. I’d put it into a “nice to have” category. So I am going to ignore this part.

The latter is an immensely useful productivity feature which makes all the difference in the world when one has to work with multiple windows. Here is how it works. Instead of having a single desktop with lots of windows and an awkward switching between windows with Alt-Tab, you have several desktops, each having a single or a few windows. When you press Alt-Tab, you switch between the windows in the current virtual desktop. But in addition to that, you can switch between the desktops.

Why does it matter a lot? Here is an example. Let’s say you have your browser, mail client, Jupyter Notebook, a few terminals, and some charts opened. You need to check your mail occasionally, but most of the time you work in the notebook, occasionally typing in terminals. Also, you may need to look up something in a browser. Let’s say your focus is on a notebook. Now you need to switch to a browser and then return back.

How many Alt-Tabs do you need to press to switch to a browser? God knows. So you hold down “Alt” and slowly press “Tab” as many times as it takes, paying attention to what might pop up. Can you do it differently? Yes. Although, would need to spend some time looking at the taskbar and clicking at the hopefully correct window. This takes seconds and causes a mental “context switch”, breaking the “flow“. Is it efficient? Absolutely not.

With virtual desktops at your disposal, you can create three of them: one for mail, one for browsing, and one for the main work (terminals and a Jupyter Notebook). You also have shortcuts assigned. For example: “Alt-1” is for the “mail”, “Alt-2” is for “browsing” and “Alt-3” is for “research”. So you are in the “research” desktop. You need a browser. You press “Alt-2” and you are there. Immediately. Note, that you do not need to think as you are already accustomed to the fact that pressing “Alt-2” leads to a browser. Also, you do not need to do anything to focus on the browser - it is already focused and ready for you. Once you’ve finished with it, you press “Alt-3” and you are back to your Jupyter notebook. Further note, that not only you will end up in the “research” virtual desktop, but the window manager will remember where you left it, and so you will return back to the notebook (not the terminal) and the cursor will be exactly where it was before. The “flow” is thus not broken.

Do virtual desktops exist in Windows and Mac? Yes, sort of.

Recently they were adopted. Windows 10 has them but there is no way to switch to a specific desktop by a shortcut. The only thing you can do is to switch to the next or the previous one. Ridiculous.

Mac OS X also has them as of 10.5. In it, they are called Spaces. Are they as comfortable and usable as those in Linux? Judging from how few people use them - I guess not. But I do not have a first-hand experience.

Compose Key

A Compose Key is a special key which allows you to type all sorts of symbols without switching your keyboard layout. For example, I may stay in the English layout while typing symbols like “→”, “ł”, and “ä”. How would I do that? I would press “Compose Key” and then press a few more characters afterwards. For example, “<” then “-” to get “←”, “’” then “a” to get “á”, and so on. The system is also customizable and you can create your own combinations to produce whatever symbol you like.

Why is it a great help? You do not need to break your head or scan through endless lists of symbols to type something like “ⓒ” or “¥”. It does not matter if that symbol is in your keyboard layout - you can type it just the same. It takes no effort to type these and again, it does not break the “flow”.

But where is the “Compose Key”? On some old keyboards there used to be a dedicated key for it. Nowadays, you can redefine a normal key like “Caps Lock” or “Alt Gr” to act as a “Compose Key”.

Can this be done in Windows or Mac OS? Perhaps with the help of third-party applications, but not as a standard.

Mouse-less Operation

To a very large extent, it was possible to use old Linux systems without the need for a mouse. Of course, there were exceptions. And of course, Windows and Mac OS made a bit of effort to support this use case. But it is in Linux that these things were so fluent and natural. Also, as far as working with windows was concerned, Linux window managers often offered shortcuts for operations like “maximize/un-maximize” window, “maximize/un-maximize vertically/horizontally”, and “move to the left/right tile”. Speaking of tiles…

Tiles

Tiles are a powerful feature which liberates window management from the most annoying part of it: the actual management. With tiling, the overall desktop space is split into rectangles and these rectangles are occupied by windows of various applications. No more need to drag windows with the mouse and try to make something sensible out of the mess. In fact, there is a whole class of window managers in Linux which are called “tiling window managers” as everything is tiling-centered in them.

Is there something like that in Windows and Mac OS X? Yes, recently first steps towards adding tiling have been done. It is still in a rudimentary form but there is hope.

Less Obvious Features

There were also less obvious and popular features which nevertheless were interesting and occasionally helpful. Here is a couple.

Snapping Windows to Edges

When moving or resizing a window, the window manager recognises that it may be close to another window or desktop’s edge and so it helpfully auto-adjusts it by a few pixels so that the window would be perfectly aligned with the rest.

Shortcuts for Menu Items

It was possible — at least in some Gtk2-based applications — to assign whatever shortcuts you wanted to specific menu items. It worked like this: You select the menu item (without clicking on it) and then press a shortcut. That shortcut was assigned to the menu item. After that, pressing that shortcut was equivalent to clicking on the menu item, no matter how deep it was buried in the hierarchy of the menu.

In some modern applications, there is an ability to assign shortcuts to various menu items through a special configuration window. However, it is non-standard and at times less intuitive than the old way.

Floating Menus

Another trick that was possible — I think also with Gtk2-based applications — was detaching the menus. Imagine that instead of clicking “File > New” you have the whole “File” menu detached and located near the main window of the application. So you need to click only once, not twice. In the case of the standard “File” menu, this does not make much sense, but it was convenient in complex applications with a deep hierarchy of menus. It was possible to detach the lowest-level menus and use them as toolbars of sorts.

It’s in the Bones

While not a part of UI per se, it should be noted that UNIX systems are known for their powerful terminals. Windows can borrow their GUI features, but it is hard to borrow the way terminals work and all the elegant UNIX machinery underpinning the system. Mac OS X is in a better position here - much of it is based on BSD UNIX.

The Current Trend

While Windows and Mac are adopting some of the powerful features of Linux desktops, Linux appears to be shedding them. The latter appears to be spearheaded by Gnome 3. While “Gnome Shell” was a nice addition, the relentless efforts to simplify and re-think have mostly broken the original and quite usable Gnome experience. Some features are still in but are disabled by default, and can only be activated with software which is not a part of the normal installation.

Terminals are still there. Luckily, few tried to “simplify” them. Although there are appalling attempts in this direction. Notably, autocompletion in some of them now autocompletes to the first and fairly random possible match rather than autocompleting the part which is certainly possible and showing the available options. The result is that autocompletion is almost inevitably making a mistake, and it takes time to correct that mistake.

This makes me wonder where would the world be in ten years from now. Could it be that Windows will finally become usable while Linux will end up a worthless ruin?

It is quite sad that the “golden standard” of today is the GUI of tablets. Tablets are OK for some use cases, but they are not suitable for serious work. It is 2023 and there is still no alternative to typing on a keyboard. And yes, you should learn how to do it unless you type with all of your fingers without looking at the keyboard. It’s a basic skill, everyone should have it.

The Ideal Desktop

The ideal desktop for me should have a number of features. Here is the bare minimum:

  1. Virtual desktops with tje ability to switch to any one of them specifically by pressing a desktop-specific shortcut.
  2. Composite Key with the ability to add the symbols I need. In particular, mathematical symbols and Greek letters are important. And let’s not forget about off-the-shelf basics like typing symbols with diacritic marks.
  3. Tiling. As a minimum, there should be a way to assign a window to the tile on the left/right/top/bottom. Of course, an xmonad level of tiling would be even better.
  4. UNIX terminals must be available, and they must not be “simplified”. All the features like navigation through commands, decent auto-completion, quick navigation and editing of a single command, etc. must be present.
  5. The desktop must be friendly to mouse-less operation. A keyboard should be enough for almost everything.
  6. A usable keyboard layout switcher.
  7. An easy way to launch applications by name: press a key, type the name (or its part), and start the application.

I have covered most of these earlier, but I will discuss the latter two points in more detail.

Usable Keyboard Layout Switcher

Please do realise that not the whole world is speaking English. I know, it’s a shocker. But there are also French, Japanese, Korean, Hindi, and hundreds of other languages. And it also happens that some people work with more than one language. It is more common than may seem. In some countries, the average number of languages freely spoken is more than two. Now… People need to switch between keyboard layouts when they wish to type text in all those languages.

In Windows and the vast majority of Linux GUIs, you can configure a list of keyboard layouts and switch between them. The devil, however, lies in the details. It is important how you switch between them.

Unfortunately, the most horrible way is the norm. And this is how it works: you press a shortcut (for example, “Ctrl-Shift”) and you switch to the next layout in the list. You press it again, you switch to the next. And so on. If you have four layouts, then pressing the shortcut four times takes you back.

Now imagine you are writing text in English. However, occasionally you need to add a bit of Japanese and Korean to it. You press “Ctrl-Shift” and your layout switches to Japanese. Excellent. So you’ve typed that bit. Now you need to switch back to English. How many times do you need to press the shortcut? Oh… Twice. And that is if you have three layouts configured, but you may have more. You have typed English for a bit more, and now you need to type some Korean. How many times to press the shortcut? Twice this time. OK. Typed a bit of Korean. Then how do you switch back to English? It’s “press once” this time. Wow… This is an atrocity.

The other popular-ish option is to assign a shortcut to each language. This works better — at least you do not need to think how many times to press a shortcut — but it forces you to remember a bunch of shortcuts.

The third and the only truly usable option exists in Mac OS X and… erm… Gnome 3. Let’s say your shortcut is “Alt-Space”. Here is how it would work. You are typing in English at first and then you need Japanese. You do not need to ask yourself the question “How many times do I need to press Alt-Space”. Instead, you hold “Alt”, and press “Space” once. You will see on the screen that you have switched to another language (and you see its name). If that is not what you want, you press “Space” again (while still holding “Alt”) and you do so until you have the language you want. So with that other language, you type whatever you want. Now you need to return back to English. How many times to press the shortcut? Exactly once. This is so because when you press the shortcut the first time, you always see the previously used language, not some random language from the list of configured ones. This is humane. This is how it must work everywhere.

Will Linux have a decent switcher for keyboard layouts anywhere else than Gnome 3? I doubt it. “Just use setxkbmap” they say, because they really have no idea what they are talking about.

Launching Applications the Easy Way

The ideal easy way looks like this: you press a special button (like “Windows”/”Meta”), and a dialogue window pops up. You type the name of the application, and as you type, possible matches are shown, eventually narrowing down to what you actually want, and having the most relevant applications at the top. Then I press “down” and select what I want, finishing with “Enter”. Or, in case there is only one option, I just press “Enter” alone. This sounds simple and reasonable, doesn’t it? Well, apparently it is not so, because it is so hard to come by.

Let’s say I want to start a calculator, and I am doing it in my Linux Mint (where “Cinnamon” is the desktop environment). So I press “Meta” and it opens up the Menu. I start typing “calc” and sure enough, the list of applications narrows down. I see my “MATE Calculator” and a few other “calculators” in a short list. Now I need to select it. How do I do it? I need to press “down”, which takes me to “Control Center” (Lord, what for?), then I press “right”, which takes me to the list of applications, and then I press “down” again to select “MATE Calculator”. Then, and only then, I can press Enter and have it launched. I am sorry, but by this point, I may have forgotten why I needed the calculator in the first place.

Let’s say I am doing the same in Windows 10. I press the “Windows” key which opens up a menu. Then I start typing “calc”. “c” leads me to “Google Chrome”, “Command Prompt” a “Control Panel”. “ca” shows me “Camera privacy settings” and “Choose which apps can run in the background”, plus a couple of things more. Still no calculator in sight. “cal” shows me “Calculator” (hurray!) and “Turn off calendar access for all apps” and a bit more. It is not bad, really, but it is worrying that you have no way of knowing if the application is even installed unless you type its name pretty much in full.

Returning back to Linux, with much regret I have to admit that launching applications in it is often painful. “Cinnamon” is not the worst case. A worse one, I think, was in “Unity” where the search results included not only applications but also all sorts of nonsense, including various products from Amazon. This is a mess. It must not exist.

What is Left to Do?

If you are monolingual, then you can still use Linux with some pleasure. Depending on your taste, Xfce, xmonad, or KDE may suit you just fine.

If you happen to be a person burdened with languages like yours truly, and need at least three keyboard layouts for everyday activities plus ideally three more for less frequent matters… Then it appears Gnome 3 is your only option. I am sorry. I really am. There might be a hope that you would manage to de-lobotomize Gnome 3 and return some basics like “Compose Key” back. Then you might re-configure its shortcuts a bit, and suddenly you would have something that can be actually used. This is inconvenient for sure, but it is still something you can work with.

Will the status quo stay or would Gnome 3 completely drop the powerful and already hidden features? I guess they will be dropped one day and the only viable option would be Mac OS X with some third-party apps.

Windows is clearly improving, but it will take decades for it to become usable if it ever happens. But good luck to Microsoft. They are, in fact, moving in the right direction. Perhaps one day it will become a reasonable option.