Of desktop environments and window managers

José Tafla · January 6, 2026

Of desktop environments and window managers

In this article I introduce window managers and desktop environments, along with a brief history of user interfaces, and wrap it up with the ultimate recommendation for you on your next computer.

The first micro computers

In the beginning there were computers, which are now called mainframes. They’re very powerful machines, capable of handling large amounts of data and computations. To interact with them, you’d normally use a punched card reader to enter commands and data, and a printer to see the output. With time, the first video display terminals came to existence.

There also were minicomputers, not as large and powerful as the former, and more suitable for smaller enterprises. Before the arrival of video display terminals, you’d normally use a teletype (keyboard with attached printer) to interact with them.

Due to technology limitations, we’re talking exclusively about text interfaces. You get a prompt on the screen, type a command, and see its output. Microcomputers, even smaller machines that were best fit for one user a time, also used text interfaces, obviously.

Text interfaces weren’t bad, though. In today’s standards, having a screen resolution of 24 rows of 80 characters each (if you were lucky enough) was a pitiful excuse of a user interface, but productivity tools such as word processors, spreadsheets, and databases were frequent and allowed users to do plenty of work.

And then we had the personal computers, perfect for home use, including limited gaming. They all had text interfaces, but some computers had some sort of graphical capabilities. The IBM PC, along with its successors and competitors, had enough power to not only support productivity tools, but also desktop publishing and more decent games.

Preliminary windowing systems

Each software vendor followed their own standards for a Graphical User Interface (GUI). There was IBM’s Systems Application Architecture (SAA) and Common User Access (CUA)1, which had some widespread adoption, but didn’t last long2, and then there was the legendary visit to Xerox PARC3, where Apple engineers and executives led by Steven Jobs saw the new paradigm in user interfaces: a windowing system.

Until then, you’d start a program by entering commands on the prompt, booting from a diskette, or inserting a cartridge. On a windowing system, you’d do it using a little known device called mouse. The program would then open its own window and run within it. It would then close itself at the end of its execution, or you’d use the mouse to close it. Such an innovation!

The challenge for Apple was that they were a computer manufacturer without the software strength they needed. In order to bring a windowing system to the markets, they needed assistance from a software house. Microsoft was already established and renowned, so Apple asked for their help.

Instead, Microsoft created Windows.

The GUI paradigm on Windows 1 was for each window to use as much of the screen as possible. The first window took the whole screen, the second one would split the screen in half with the first one, and so forth. Here’s an example4: Windows 1

Windows 2 introduced floating windows, which you could resize, move, maximize, minimize, and even hide underneath other windows5: Windows 2

As for Apple, without help from Microsoft, they continued on their own, launching Lisa, which already featured floating windows6: Lisa

What Apple saw over at Xerox PARC was yet another paradigm. Instead of having each application manage its own window (or have the operating system do it), there was a window server (namely X Windowing System) controlling the entire screen, and a window manager managing each window7: X Windows

Graphical User Interfaces

If you’re on Windows or Mac, you get what you get. You can do limited configuration, such as changing colors, backgrounds, and possibly a number of visual elements. Third-party tools could give you extended configuration possibilities, but at the end of the day, you get what you get. Mac, despite its long history, has been consistently providing the same GUI8. MacOS

Windows, on the other hand, brings a new interface with each new release, requiring a learning curve; everything is there (maybe), but in a different place.

UNIX → BSD, Linux

Nowadays, we have two main UNIX descendants (which might not be the correct term): BSD and Linux. BSD is UNIX ported to x86 processors. Linux is a UNIX-compatible kernel built to run on x86 processors. While BSD is a complete operating system, Linux is nothing but the kernel, requiring users to either complete the system on their own, or otherwise obtain a distribution. The common theme is that, if you want more than just a text interface, you launch a display server (usually X or Wayland) and either a window manager or a desktop environment.

Window managers

A window manager only manages windows. It controls the placement and appearance of windows, and provides no additional functionality. If you want the ability to display date and time, launch applications, lock the screen, and turn the computer off, you’ll need additional tools. Some software distributors bundle a few of those tools with their window managers.

Desktop environments

Desktop environments incorporate window managers and include most of the necessary tools for your computer to be useful. For the end user, it’s all transparent, but skilled users can replace the window manager that came bundled to experience different behaviors. Popular BSD implementations and Linux distributions support the most famous desktop environments, such as GNOME, KDE/Plasma, and Xfce. This is not an exhaustive list, and the examples below are far from complete.

Examples

In no particular order, these are a few desktop environments and window managers I’ve used in the past.

GNOME

GNOME is the standard desktop environment for plenty of distros. GNOME

From a GUI perspective, there are limited configuration options, but there’s a plethora of extensions that can customize pretty much any aspect of the desktop environment. It is one of my favorites and, whenever I do a fresh install, it’s the one I choose. It also is the one I’m using on my desktop PC.

KDE/Plasma

KDE/Plasma was originally developed in Germany. Is that the reason why most European distros use it as their standard or default? KDE/Plasma

In a way, it resembles the Windows look and feel. Some distros have customized to look exactly like Windows. It is very customizable, without the need of external tools.

Xfce

GNOME and KDE/Plasma critics say they’re very resource intensive, which doesn’t make them suitable for older or weaker hardware. That’s where Xfce comes into play, providing a lean yet powerful and customizable interface. Xfce

Cinnamon and MATE

When GNOME released its version 3, completely redesigning the user interface, so many communities were displeased with the outcome. Cinnamon is one project, created by the Linux Mint team, based on GNOME 2 to continue on its legacy. Cinnamon

MATE (/ˈmɑːteɪ/ MAH-tay) is another example. MATE

LXDE, LXQt, and Raspberry Pi Desktop

Let’s talk lightweight for a second. These environments provide you a fully functional desktop with very low resource usage. I only got in touch with them due to working on my Raspberry Pis.

LXDE and LXQt are available on multiple distros. LXDE
LXQt

Raspberry Pi Desktop, as the name implies, was built to run on the Raspberry Pi. Raspberry Pi Desktop

Window managers

Once again, a window manager does nothing beyond managing windows. You’ll likely need additional functionality, which will require you to install additional tools. Some distros bundle basic tools along with window managers, but for other distros you must install them yourself.

Openbox is a floating window manager that serves as a base for several desktop environments, so much so that this screenshot must look very familiar to you, as it’s similar to others above: Openbox

My pet peeve with computers is that I don’t like to jump from the keyboard to the mouse or touchpad. When I’m working the keyboard, I want to continue using the keyboard, and when I’m working the touchpad, I want to continue using the touchpad. I know they’re pretty close to one another, still it’s my pet peeve. Wouldn’t it be nice if I could navigate from one window to another using just the keyboard?

There’s a shortcut for that! In Windows, it’s Alt + Tab, and Command + Tab on Mac. On GNOME, you can use Super + Tab to switch applications and Super + ` to switch windows of the same application. It works well, to an extent: if you have lots of windows open, pressing Alt + Tab ad nauseum could be overwhelming. Fortunately, Windows has Super + Tab, which shows all open windows, allowing you to use the arrow keys to go to the one you want. For sure, when you have lots of windows open, some are overlapping others, which makes it hard to find the one you’re looking for.

Tiling window managers, which follow the same paradigm as Windows 1, places windows side by side. The first window takes the whole screen, the second one splits the screen in half, the third one splits the screen in thirds, and so forth. You can choose to split horizontally or vertically. To go from one window to another, you can use a keyboard shortcut (which varies by window manager and by configuration). One such example is ratpoison, which goes a step further by not using the mouse at all, hence the name. ratpoison

Although the mouse isn’t of help to switch windows, it does work inside each application.

Other examples include i3 and Sway, the latter on Wayland and the former on X Windows. Both allow using the mouse to switch windows. i3
Sway

In effect, the only difference is the display server. Configuration files can be easily interchanged between them.

One valuable characteristic is a scratchpad, which is a window that you can show and hide at will, and whenever it’s open, it’s floating above others.

Yet another example, which has become quite popular recently, despite the controversy, is Hyprland. Its main characteristic is to be a dynamic tiling window manager. Instead of splitting the screen, it only splits the current window. Depending on its dimensions, it will automatically choose to split horizontally or vertically. Hyprland

It also supports scratchpads.

You can imagine that, if you need to open these many windows, then if they’re all crammed inside the same screen, there’s not enough room for them. Some of them might become smaller and smaller, rendering them rather unusable. To overcome this, most tiling window managers support the creation of tags, workspaces, or virtual screens. This allows you to move windows between them, so that each window can be of reasonable size.

There also are manual tiling window managers, which allow you to predefine screen areas where windows will be placed. One such example is herbstluftwm. herbstluftwm

It’s mostly useful, in my opinion, for extra wide monitors. Sometimes you’re working on one side of the screen, but the controls are on the opposite end; you’d have to travel the entire screen to get to them. Other times, you open a new window, which could take the entire screen, looking gigantic with plenty of open spaces, or busy busy busy instead. With predefined spaces, the new window will only take the reserved space.

A problem that occurs to me on occasion is that split windows might not be wide (or tall) enough. Moving them to separate workspaces does work, but jumping between them is annoying. Just a few months ago I heard of scrollable tiling window managers. They were inspired by the PaperWM GNOME extension. Instead of overlapping or splitting windows, the new window opens in its own predefined size to the side of the current one, moving it sideways. You can then scroll the screen to the side to show the other windows. On a vertical monitor, the scrolling is up and down. You can still tile windows vertically on a horizontal monitor and horizontally on a vertical monitor, if you so prefer. A very popular example is scroll, which is based (and compatible) with Sway.

The one I’m currently using on my laptop is niri. It allows for easy navigation between windows, virtual screens, and monitors using shortcuts, touchpad gestures, or both. niri

It lacks a scratchpad, but I can easily live without it. Also, as an added bonus, in case I get lost in a myriad of windows and screens, I can zoom out and scroll to get where I wanted. My desktop

Build your own

Call me crazy. I’ve been called worse names before.

The customization capabilities are endless. You’re only limited by your own imagination. You have the tools you need at your disposal to make it your own, but if that’s still not enough, then remember that all BSD and Linux tools mentioned here are open source. You can download the source files, change them to your liking, and build your own windowing system.

Or you can start from scratch.

There’s a third alternative.

On the X Window System side, there’s a suite of suckless tools (that’s how they call it) that includes dwm, a dynamic tiling window manager. All these tools offer no configuration possibilities at all. You get what they offer you.

But they not only offer you the source code: they include instructions on how to change the code (either directly or with patches) for you to make it yours. In short: download the source code, change/patch it, build it, and enjoy. Because there are no configuration options and everything works the way you built it, it’s very lean and fast. dwm

If you’re more into Wayland, there’s dwl, following the same principles. dwl

Unlike dwm, which includes a task bar, screen locker, and other tools, dwl does not. Instead, you can use pretty much any Wayland tools, which should function to perfection.

My firm recommendation to you

If you’re on Windows or Mac, you get what you get. You can customize the GUI to an extent but, unless you want to rely on third-party tools, you can’t change the behavior.

As for BSD and Linux, you should know that, although some applications were developed with one desktop environment in mind, it’s not usually restricted to it. Well behaved applications run equally well in any environment. I use practically the same tools on my desktop (currently GNOME) and on my laptop (currently niri) without any impact.

If you do an online search for the best desktop environment, you’ll find plenty of discussions and arguments, along with advantages and disadvantages. They’re all valid, even if I don’t consider them valuable enough for me. My recommendation to you is to experiment, see which one you’re most comfortable with, and stick to it. Once you’re bored, you can change. You’re not bound to anything other than your own free will.

The one caveat is that desktop environments, due to their nature of having the entire digital ecosystem incorporated, are not meant to be installed alongside other desktop environments. Your computer will not break, but it will be very bloated. After all, how many calculators, bare bones text editors, and file managers do you need?

If you are unsure between one and the other, and don’t want to keep installing new distros, then an atomic distribution like Fedora Silverblue or NixOS could be of value to you. All you do is change the configuration, reboot, and voilà! Your computer is ready and clean.


References

Twitter, Facebook