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.
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.
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.
Most window managers deal with managing what windows are visible completely differently than the traditional "minimise"
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.
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.
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.