Do you need a Full Desktop Environment? ft. bspwm

Published 17/02/2021

Any linux user is faced with a choice when setting up a new installation - how do I want to interface with my system? Here there are 3 main choices.

  1. TTY or terminal - I can only imagine a tiny minority of desktop linux users are using this. The most common use case would be when using SSH or similar to access a server (as I am right now to write this post!)
  2. Desktop Environments - KDE, GNOME, XFCE, etc; fully featured work environments that deal with everything from window management, audio, video, system settings, and even utility software.
  3. Window Managers - i3, dwm, bspwm, awesome, etc; These provide the barebones of what desktop environments provide - window management, which includes placement and appearance of windows.

Personally, I use bspwm - a window manager - and I'm going to try to explain why I do and what I think its advantages are over what most users start with, which is typically a desktop environment.

Efficiency and Memory

The first benefit of window managers is memory usage. My current setup idles around 220mb of RAM usage, with bspwm taking up around 7mb of that. To give you an idea of how efficient bspwm is, my dunst daemon (a very minimal notification client) takes 3 times that. Now frankly, with 8 gigabytes of RAM low memory usage isn't essential for me, however it is certainly very nice to have extra RAM if I'm doing anything intensive or if I want to have a lot of stuff running at once - Discord and Spotify are two notorious RAM hogs - but also for many firefox tabs/windows, etc.

Desktops

Most window managers deal with managing what windows are visible completely differently than the traditional "minimise" system. Instead, multiple desktops are used. For example, I've configured bspwm to have 9 desktops. Alt+[0-9] jumps me to the corresponding desktop. This is, in my opinion, a far better system than minimising windows. Firstly, it is a lot faster. My fingers never even lead the keyboard and I can go through all my open windows. Instead of moving my hands to my mouse, going down to my taskbar or the such and clicking on a minimised window, I can just hit, for example, Alt+7 and immediately have my music player in front of me. This brings me to the second advantage of desktop-based window management. I just mentioned how my music player is on desktop 7. Window managers allow you to script where windows should open - so when bspwm sees that I've just opened my music player, it spawns the window on desktop 7. I can hit my shortcut to open it, never even see it, and hit a media key and immediately have music playing in a second.

Configurability

Window managers are, in general, far more configurable than desktop environments. I have used GNOME, KDE, XFCE, i3 and now bspwm in the past and both i3 and bspwm had by far the most configurability. An important note to make is that all 5 had FAR more configurability than Windows 10 did when I used to use it.

Take GNOME for an example. Beyond a few superfluous settings, an external package (gnome-tweaks) is needed to make any substancial changes, like the GTK theme. Now take the 875 lines of the bspc man page, which is the program used to interact with bspwm. The difference is clear - the user has far more minute control over a window manager than a desktop environment.

Modularity

Finally, modularity is far more present in window managers. Window managers provide just window management. Starting a notification daemon, setting a wallpaper, anything you want to start on login, - even a hotkey daemon in bspwm' case - is up to the user. Desktop environments package this all in - and will usually integrate quite heavily with other parts of the desktop environment, meaning that it is difficult to swap out parts without breaking some other functionality. Window managers therefore adhere more to the UNIX philosophy of "do one thing, and do it well", which I feel is (albeit arguably) really the heart of Linux.

What's the catch?

The price to pay with window managers is, put simply, time and effort. Someone can install, say, KDE and simply get on with their work. Therefore, it is very important that those who do put the time into configuring a window manager don't start acting elitist. If the mythical "year of the Linux desktop" or widespread Linux desktop adoption is ever to happen then it is essential that there is no gatekeeping in the linux community.

To summarise, window managers are modular, configurable, and memory-efficient - yet the effort needed to learn and set them up is too high of a cost for some, and that is perfectly respectable.