Linux GUIs
Linux offers an extremely wide variety of graphical environments for all types of users and needs.
The most traditional one is probably the X Window System, aka X, aka X11, aka X.org, aka Xorg.
Note: Please do not confuse it with any other applications that may now be known as X, formerly known as much better things.
As X was initially released in 1984, even though it is still used on countless devices (probably close to 3 billion), it is being replaced by a more modern display server protocol known as Wayland.
Do you find that confusing? So do I, to be honest. I now run Wayland, as it is pretty well supported by modern Desktop Environments, but Xorg is still usable.
A display server like Xorg or Wayland would typically use a window manager to handle drawing windows on the screen, as well as menus, docks, decorations, etc. Except Wayland calls them "compositor" because they act as compositing window managers.
More confused? Yeah, thankfully, we can mostly rely on a Desktop Environment and a few packages or a specific distro flavour to handle the graphics for us.
Desktop environments
Desktop environments commonly bundle many things like a window manager, widgets, icons, docks or toolbars, system menus, and applications. They tend to offer the richest desktop experience, but they may require more resources to run than a simple window manager. If you have decent hardware and want a great user experience (UX), I would highly recommend you install a full-fledged desktop environment.
The two most popular desktop environments are GNOME and KDE Plasma, but there are many other options to choose from. The Arch wiki has a decent list on their desktop environment page, and Ubuntu lists the common environments that come as Ubuntu flavours on their flavours page, both of which are linked at the end of this chapter.
Author's recommendation
Should you find the numerous options overwhelming and simply want to quickly decide on a desktop environment, I would recommend KDE Plasma. It's fairly stable, looks great, and is very customizable. It also has a very impressive collection of apps.
GNOME
GNOME is the default desktop environment on Ubuntu. I was a big fan of GNOME 2, and was immensely disappointed with GNOME 3, AKA GNOME Shell. While I would certainly recommend that you investigate as many options as possible and form your own opinions, I personally find that GNOME today is meant to be more accessible to the masses, and really only gets in the way if you are (or aspire to be) a power user. Still, as one of the most popular desktop environments around, it is worth taking a look at.
You can see the GNOME application menu below. Note that it is running on Ubuntu 23.10 in VirtualBox.
You can also see the what switching between various apps looks like when you press the super
key.
GNOME Classic
If you would like a more traditional desktop experience, you can give GNOME Classic a try. I at least find it a bit more useable than the default GNOME shell. To switch to GNOME Classic, you can click the cog icon on the login screen, and select GNOME Classic. You may need to log out of your existing session first.
I'm still not a fan, but it's an improvement. At least I get a menu back.
If you would like to go back to the default shell, simply follow the same procedure, and choose Ubuntu instead.
GNOME on Arch
To install GNOME on Arch, you can install the gnome
package group. If you would like to install extra applications, you can also install the gnome-extra
package group.
GNOME on ubuntu
As previously mentioned, GNOME is already the default desktop environment on Ubuntu. If you would like to use GNOME Classic, you will also need to install the gnome-shell-extensions
package.
KDE
KDE is a software project composed of the Plasma desktop environment, KDE Frameworks, and KDE Applications developed by KDE. KDE has been in development since 1996, with many different releases over the decades, but in my personal opinion, KDE Plasma 5, first released in 2014, was really when KDE became a gorgeous desktop environment. Its layout may be a bit reminiscent of MS-Windows, which is not necessarily a bad thing when it feels natural, yet much superior. It is my preferred DE, one I gladly recommend, and now that KDE Plasma 6 is out, it looks even better!
The KDE framework uses the Qt
widget toolkit, meaning you can easily write beautiful software that feels natural using the Qt libraries in C++, or PyQt or PySide in Python.
You can see my KDE Plasma GUI below:
Of course, I actually spend more time in yakuake than the GUI part...
KDE Plasma on Arch
To install KDE Plasma on Arch, simply install the plasma-meta
meta package, or the plasma
group. If you are uncertain which to choose, just go with the meta package as it may automatically add new packages when installing updates while the package group makes it easy to miss new additions.
I would also recommend installing plasma-wayland-session
package to enable Wayland support. If you would like to install the extra KDE applications, you can also install the kde-applications-meta
meta package.
KDE Plasma on Ubuntu
KDE Plasma is available on Ubuntu as part of the Kubuntu flavour.
Other DEs
Some other desktop environments you may want to consider include:
- Budgie
- Cinnamon
- Enlightenment
- LXQt
- MATE
- Xfce
They will not be covered at this time.
Window managers
While desktop environments typically include a window manager, many window managers can also be used standalone, without a desktop environment. This can often be more economical than using a desktop environment, and may be a good option if you have limited resources, but you may find that you sacrifice some usability.
Using a window manager without a desktop environment is beyond the scope of this book, but there are two main types of window managers. Stacking window managers use the traditional desktop metaphor where any window can be placed anywhere, including stacked on top of another, while tiling window managers tile windows so they do not overlap. Many of them offer key bindings to control layouts, and you may tile windows in a grid, or use them full-screen.
As I do not use tiling window managers, I will not cover them here, but you may find a decent list of available window managers on the Arch wiki. It includes stacking, tiling, and dynamic window managers, which can switch between stacking and tiling modes.
Display managers
A display manager is a program that replaces the default shell, and offers a graphical (or sometimes console-based) way to log in. The graphical (desktop) version of Ubuntu will enable it by default, but you may need to install one and enable it if you use Arch Linux.
The default display manager for GNOME is GDM, while the default for KDE Plasma is SDDM. They should be installed as part of their respective desktop environments, and can be enabled via systemd, which we will cover in a later chapter.