Window Managers

Table of Contents

1. Introduction

WARNING: This article is very biased.
WARNING(1): This article is a work in progress.

2. Definition

Window managers manage windows. They control the appearance and behaviour of windows and how they are arranged.

3. Window Managers

This is not a complete list.

3.1. Awesome


Awesome could easily be considered the most powerful window manager1 on Linux, as with enough time and effort, the WM itself is capable of recreating many DE like functionalities.
You can have notification centers, action centers, dashboards, lock screens, anything you can think of.

It's window management is dynamic and equally good at both tiling and floating.

It's widget system is also incredibly powerful in the right hands and the tight integration with the rest of the window manager makes it even more so.

Just look at all these cool rices
(also, my awesomewm rice)

3.1.1. Bling

bling is an awesomewm utility library that focuses on adding new layouts and modules that make use of the widget system, but primarily focus on the new window managing features.
It adds a lot of cool features like additional layouts, window swallowing, scratchpads, playerctl signals, a tab container, tag preview, task preview, an app launcher and a window switcher.

3.2. Berry


Berry is a small floating window manager written in C. It has a surprising amount of features, and probably is my favourite floating window manager.
Neat Features:

  • Powerful command-line client, and can thus be controlled via a hotkey daemon such as sxhkd or extended via shell scripts.
  • Extensive theming options with titlebars, window text and double borders.
  • Intuitively places new windows in unoccupied spaces and supports virtual desktops.

very cool berry rice

3.3. bspwm


bspwm is a tiling window manager that represents windows as the leaves of a full binary tree. It has support for EWMH and multiple monitors, and is configured and controlled through messages (bspc).

As of April 2022, it is the most used window manager in the unixporn discord.

nice bspwm rice
cool series of bspwm rices

3.4. FVWM


Extremely powerful and customizable ICCCM-compliant multiple virtual desktop window manager for the X Window system. Although, the configuration syntax is a bit complicated.

very cool fvwm rice
another very cool fvwm rice

3.5. Herbstluftwm


herbstluftwm is a manual tiling window manager for the X window system. It is configured through herbstclient, so the config file is simply a shell script run at startup.
All configuration can be done via herbstclient and thus there is no need to restart the window manager.

cool herbstluftwm rice
one more cool herbstluftwm rice

3.6. i3


i3 is the easiest and simplest window manager. It is perfect for beginners, but is powerful enough to satisfy even power users.
Although, if you plan to use i3, I reccomend that you use i3-gaps instead, as it has a few more features.

Sway is i3 for wayland, so it might be worth checking out too.

nice i3 rice

3.7. Openbox


Openbox is a lightweight, powerful, and highly configurable stacking window manager with extensive standards support.

cool openbox rice
another cool openbox rice
cool openbox rice collection

3.8. Worm


Worm is a is a dynamic, tag-based window manager for X11. It supports both a floating layout and a master-stack tiling layout and is under active development. It is configured via wormc, and can thus be controlled via shell scripts. It is also written in the Nim programming language.

worm rice

3.9. XMonad


XMonad is a dynamically tiling X11 window manager that is written and configured in Haskell. It is full of features, and is very good at moving windows around. Although, as it is configured in haskell, it may take a while to get started and to get used to it. But if you're actually interested in the concept, dont let the language stop you.

axarva's xmonad rice

4. Credits

  • nes (Dark NES#4901): helping me shill for awesome



SirAiedal: Technically, Awesome does not fit a list of "window managers". It is a window manager framework, or "runtime + set of libraries".