A developer sits down to write a piece of free software. They have the skills. They know how to make the program do what they want it to do. But they don’t have any experience with user interface design, nor do they have a team of people who can pick up the slack. That’s okay. They’re working out of passion, and they put together what they can.
Years later, you sit down at your computer and download a program from your Linux operating system’s app store. The description says it will do what you need. You hit the install button, type in your password, and watch the app appear alongside all of the others you’ve installed.
The first thing you notice is that the app’s icon looks out of place next to all of the others. You click it anyway, because if the program gets the job done, you can look beyond an irksome icon. Then your heart sinks. The app’s interface looks just as out of place. Even worse: you can’t figure out how to use the thing!
This is why desktops have human interface guidelines. Windows, macOS, iOS, and Android all have these guidelines. Linux has them, too.
What Are Human Interface Guidelines?
Human interface guidelines (HIG) are instructions and standards that show app creators how to make software that feels at home in a particular interface and create an experience that’s easy on users. These show a developer how far apart buttons should be, how large to make an icon, and the appropriate way to arrange menu items.
If projects stick to these guidelines, as you move from one app to another, you will encounter experiences that look similar. Not only that. Once you learn how to use one program, you have a pretty good idea how to use the next.
These guidelines are important for developers and users alike. Fortunately, some of Linux’s most popular desktop environments have HIGs of their own.
Which Linux Desktop Environments Have HIGs?
Human interface guidelines have more to do with apps than aspects of the desktop interface. For this reason, desktop environments that come with their own suite of apps are more likely to have recommendations for developers to follow. Here are the big ones.
GNOME’s HIG is arguably one of the desktop environment’s largest contributions to the Linux desktop. At a time when most Linux software was either difficult to use or wildly inconsistent, the GNOME creators charted a different path. Software should be easy to figure out, and it should feel similar to all of the other programs on a person’s computer, the project argued. The result? A large number of apps feel right at home on GNOME.
That consistency has wavered somewhat in the past decade. With GNOME pursuing a design different from most other desktops, an app that fits in with GNOME tends to stick out elsewhere, and vice versa. But if you stick to apps specifically intended for GNOME, then you’re in for one of the most straightforward and integrated experiences the Linux desktop has to offer.
KDE’s HIG is a lot like the desktop itself. The KDE community’s Plasma desktop is perhaps the most customizable interface for any operating system. Just as users have a great degree of freedom to do what they want with the software, so do developers.
KDE strives to be simple by default, powerful when needed. That means you can probably manage music in a media player or view pictures in a photo manager using the buttons in a toolbar, but there can be an expansive set of options tucked away in the menu bar. Most software designed for KDE will also let you move toolbars around, add buttons, and otherwise change which controls are visible. As the Plasma desktop shows us, consistency doesn’t have to mean pared down or basic.
Elementary OS isn’t like most other Linux operating systems. It comes with its own Pantheon desktop environment, and while you can choose to swap it out for something else, that would defeat the point of using Elementary OS. Design is perhaps the Elementary team’s largest contribution to the free and open source ecosystem.
With that being the case, Elementary’s HIG is a central part of the project. The document is easy to read and reference, with seemingly every aspect of the interface covered and plenty of examples. Developers may want to pay attention, because the Elementary team and Elementary users are more inclined to bristle at inconsistencies than other Linux communities.
What About Other Desktop Environments?
As volunteer-run entities, some projects simply haven’t had someone take the time to draft up a detailed HIG. At the same time, desktop environment doesn’t always mean the same thing to each project. Some, such as those listed above, view a desktop environment as a fully complete experience that manages what you see from the moment you boot up your computer, including most of the apps.
Others view their creations more as desktop interfaces or window managers. They provide panels, applets, and a way to switch between windows, but they don’t take on the work of creating apps. They give you a means to run the software that already exists for Linux, with integration less of a focus. After all, many of us are accustomed to Windows, where there is hardly a consistency to apps regardless of Microsoft’s HIG. Not everyone even wants every app to feel the same.
How Do You Interact With Your Favorite Desktop?
I prefer for my apps to each have a consistent look and feel. That’s actually one of the reasons I was excited to discover Linux when I did. I previously thought that if I wanted a consistent experience, I had to buy a Mac — but GNOME and KDE both showed me that Apple wasn’t the only one offering an integrated desktop.
Elementary OS didn’t exist back then, and it was around for a few years before I decided to check it out. The kind of attention to team pays to this aspect of the desktop really is top notch.
For the sake of comparison, here are human interface guidelines from Microsoft, Apple, and Google:
What do you feel about human interface guidelines? Do visual inconsistencies irk you? What about convoluted design? Are you ambivalent about it all? I invite you to share your thoughts in the comments below.
Explore more about: Linux Desktop Environment.