What are Window Managers, Desktop Managers, Desktop Environments? Which one do you need and Why?
Understanding Dos and Window Managers
Ubuntu and Debian are like DOS; it receives input from the keyboard and responds to input by outputting text to one screen (one window). A window manager (WM) allows multiple windows to be drawn and is thus essential for multitasking and a huge evolution in OS design. Anything drawn on the screen; that's a window manager at work, but it needs to receive drawing orders from a program or a number of programs. Drawing a background on the desktop (root window) that's a program that sends orders to the WM (Window Manager). Restoring desktop content that's another program giving orders to WM. Drawing a taskbar, an application launcher, a dock, a system tray that's a number of programs giving more orders to WM. When receiving these drawing orders part of those orders must specify whether to draw in an existing window or a new window.
The question is what does the WM do if it's a new window? Does it put on top of another window, beside it or allow for both possibilities? This is the basic difference between a stacking window manager, a tiling window manager and a dynamic window manager. Microsoft Windows uses a stacking WM, but wait a minute why are the windows allowed to be stacked and where is the order? Two reasons: windows are allowed to be stacked to make the most out of screen real-estate and order is arbitrary and unnecessary for stacking WM; if you can see it and select it then that is sufficient according to Microsoft and stacking WMs. How - is called a task bar. On windows this taskbar holds the start button, quick launch, windows (in order that they are launched) and system tray. So, you should be able to see your windows in the taskbar via its title and simply select it with your mouse to bring it to front and into focus. That's how stacking WMs work. They technically don't require a taskbar if they have key bindings (keyboard shortcuts) to navigate the windows. Coincidentally, this is exactly how a person likely navigates windows with a tiling WM which orders the windows according to a schema without overlap at the cost of screen real-estate.
In a tiling WM windows must be selected and maximized each time which is annoying. The joy of stacking WMs is you can navigate through maximized windows; you only have to maximize them once to do this. Perhaps some tiling managers have a way around this, but none that I know of. Now tiling managers have a way around limited screen real estate by using virtual desktops aka workstations; each workstation has its own screen, thus when you run out of screen space you simply move to another workstation. You can also do this with stacking WM, but it is especially important for tiling WM. However, I find this annoying and tedious. If you have an extra large screen or multiple screens tiling managers make more sense, but this is an opinion as many Windows users have multi-monitor setups, and which kind of window manager does Windows use - a stacking one. A layman with a small single monitor will like prefer a stacking window manager with a taskbar and find this easier to use (is merely mouse dependent). This is because tiling WMs use key combinations to control windows and there are a lot of key combinations to remember and a new user especially one unfamiliar with tiling WMs cannot easily figure out how to work it especially when there are no visual cues to help guide them like a minus, rectangle or X at the top right of the window of some stacking WM. A tiling manager is thus innately more complicated for a layman. Key bindings allow one to manipulate windows (minimize, maximize, open, close, make full screen), organize (put side-by-side, put on a different workstation), select windows (switch to, switch from) and execute programs without needing an application launcher, and much much more.
Beyond familiarizing yourself with the difference between different types of window manager there are important considerations prior to selecting your specific WM. Make sure you always install a window manager which has all key and mouse bindings and buttons you require to control windows, and that allows for custom key bindings as well. If there are insufficient key bindings to control windows then that is a shitty WM, don't install, try, test or use it. N.B. custom key bindings can be enabled with a number of other applications separate from the WM. If you install a stacking window manager, make sure you also install a taskbar. Likewise, I would not recommend a WM that does not come with a config file, because truth be told you are going to have customize the shit out of it especially if you are not using a Desktop Manager and we'll talk more about that shortly.
Some examples of great stacking window managers include (Blackbox, Openbox, Fluxbox, XFwm, Kwin, Jwm, Icewm, Metacity, Mutter). Mutter is designed as a library. Thus GNOME-Shell is the everything; a shell, a compositor and a window manager [Link ]. Some examples of great tiling window managers include i3, Sway, Awesome, Dwm, PaperWM).
Understanding Desktop Managers
Some example of Desktop Managers (DM) include Gnome Desktop, Xfce, LXDE, Plasma (KDE). DMs are a series of programs and their dependents that tell a WM to draw various components of a Desktop. A DM is not a DM unless it has a persistent graphical user-space; what is known as a desktop. A DM should also provide the option to install various widgets on the desktop or taskbar, and ability to add and remove anything on the desktop. All other functions are optional, but they frequently include a taskbar with an app launcher and a system tray. The desktop (user-space) is technically a root window that cannot be closed, but can be killed. This root window is session and reboot persistent and possesses a customizable background, important or frequently accessed files and folders, and shortcuts to access programs, files and folders anywhere on the system i.e, the recycle bin and mounted drives could be on the desktop. Different users have different desktops.
A Desktop Environment (DE) anything on the desktop or initialization of the window manager that is reboot persistent. If you avoid Desktop Managers, and opt to use mostly just a window manager instead, you probably want to enhance your DE, and don't just want; to arrive at a terminal, blank background or empty wallpaper background with or without a right-click menu.
i3wm is a tiling window manager that comes with a number of programs which is "code" for DE enhancements. Those enhancements are a makeshift taskbar and systemtray. Looking at the underpinnings of a desktop, if you think about it, it is essentially a file manager with one folder and background. That is to say it is a separate program from the window manager. You can set a root window in i3wm and most window managers and even make that reboot persistent, but that falls into DE, not DM because it does not have a userspace nor does it have the builtin ability to easily add or remove items to the desktop.
DMs always use a stacking WM because these WMs allow anything to be drawn anywhere and over anything which is requirement for a desktop, and a desktop is not only a root window, but a fakefullscreen (FFS) root window. FFS fills the screen up to the borders of the other non-transparent windows that are part of the desktop i.e., taskbar.
Now, do you want or need a user-space for your files and folders that is always instantly available on the background and doesn't require loading a file manager to access your
/home directory (true user-space)? If you answer yes then you want a DM which gives a desktop and allows you to customize it easily. Remember, you will also need a stacking window manager, because a tiling window manager must divide windows without overlap with a preset order. A tiling WM like any WM must be consistent with everything, and since tiling WM order windows in accordance to presets, to draw a taskbar would require making an exception, but a preset exception is an oxymoron or impossibility. It essentially falls outside the role of a tiling window manager. A stacking window manager on the other hand does understand the concept of a root window. Both stacking and tiling WM must draw within a window, but because stacking WM can overlap windows in any manner, it effectively means they can draw anywhere without any rules unlike a tiling WM. I have not yet found a tiling WM that understands the concept of a root window, likely this would be a dynamic WM. Remember the primary features of a DM is the desktop (persistent graphical user-space) and the ability to add and remove items from the desktop.
When picking a DM it can confusing, but it isn't if you remember what they are designed to do; provide a persistent graphical user-space (desktop) and allow the user to easily customize the desktop i.e., easily add or remove items (widgets, bars) from/to it. And third information of interest is memory use. In terms of doing their job, I would rank as follows: 1. Plasma-Desktop (just doesn't get any better than this), 2. Gnome-Desktop (Not as modular or easy, but still very customizable) 3. XFCE (lacking in ease of adding and removing widgets; items you can put on bars or the desktop). That's my opinion. On memory, the ranking is 1. XFCE (300MB), 2. Plasma (410-500MB) 3. Gnome (450-500MB).
It is simply a matter of taste. DMs are easier to use and use more memory and cpu. The WM route, requires a lot more work or labor of love to get that polished look and to make it persistent, but moreoften uses fewer system resources and is more stable.