When comparing Xmonad vs bspwm, the Slant community recommends Xmonad for most people. In the question“What are the best window managers for Linux?” Xmonad is ranked 2nd while bspwm is ranked 7th. The most important reason people chose Xmonad is:
XMonad is written, configured, and fully extensible in Haskell. This means that users aren't limited to a small set of pre-programmed layouts and actions: anything can be programmed into the configuration. It's simple to modify basic settings, and the example config has lots of comments to get you started. Haskell keeps this code clean, concise, and readable, and its type system keeps you safe from any serious mistakes. This makes it fast and light, even on very small and slow systems.
Ranked in these QuestionsQuestion Ranking
Pro Fully extensible with Haskell
XMonad is written, configured, and fully extensible in Haskell. This means that users aren't limited to a small set of pre-programmed layouts and actions: anything can be programmed into the configuration.
It's simple to modify basic settings, and the example config has lots of comments to get you started. Haskell keeps this code clean, concise, and readable, and its type system keeps you safe from any serious mistakes. This makes it fast and light, even on very small and slow systems.
Pro Efficient to use
XMonad is a very minimal and efficient window manager, especially if the user is familiar with Haskell.
Pro Very stable
Use of Haskell, in conjunction with smart programming practices, guarantees a crash-free experience.
Pro Highly configurable
If you enjoy programming, you can even add features to XMonad to make it your perfect desktop environment, and the Contrib modules give you most of what you need to do exactly that.
Pro Great availability of libraries
The use of Haskell as an extension language means that popular pieces of functionality are easily shared and widely available as Haskell Libraries. Many default layouts, and tools for quickly and easily building your own, are available through XMonad-contrib, and highly re-usable configurations are commonly shared through blog articles and the Xmonad Wiki. The documentation in XMonad-contrib is very clear and easy to read.
Pro Handles multiple monitors well
XMonad can handle multi-monitor setups by default.
Pro Absolutely minimal
The entire window manager is extremely small, and includes nothing beyond basic window manipulation and tiling. Out of the box, there are no window decorations, status bar nor icon dock; just clean lines and efficiency.
Pro Xinerama support
XMonad has full support for Xinerama: windows can be tiled and managed across multiple physical screens.
Pro Dynamic Tiling
XMonad uses dynamic tiling which means that it automatically handles arranging your windows into various layouts which the user can cycle through.
Pro Edit configuration and reload on-the-fly
Configuration is compiled into the WM, and it can be changed/updated on-the-fly, without requiring a full reload.
Pro Intuitive model which separates "screens" and "workspaces"
XMonad separates screens and workspaces. A screen "projects" a workspace. You can put a window to a specific screen, regardless of which workspace is currently projected onto that screen. This is more intuitive than other WMs e.g. i3, which only has the notion of workspace but not "screen" and requires you to remember workspace numbering. It is especially beneficial for multi-monitor setups.
Pro Very lightweight
It has a low footprint.
Pro Very flexible
The keyboard shortcut are handled by another module so it's easy to use other inputs. The configuration is also simple.
Pro Open source
It's open source
Pro Drag&drop / Mouse support for resize/move
You can resize, switch panes, and resize tiles via the mouse.
Pro Based on binary space partitioning
The windows tiling is handled as the leaves of a full binary tree. This makes it easy to partition as you like.
Pro Simple interface
All actions of the window manager (like opening or resizing a window, changing the workspace, etc.) are handled by a program called bspc, which communicates with bspwm over a socket connection. The config file is just a shell executable making calls to that program. This makes it very easy to write your own scripts to handle bspwm's behavior.
Pro Simple, adheres to the UNIX philosophy
Configuration takes much less work than in similar window managers. Hotkey binding is handled by a separate utility, sxhkd.
Pro Adherent to the Linux philosophy: Do one thing and do it right
Pro Native gaps
Pro Live configuration updates
No need to restart for updating configurations.
Pro Comes without a compositor
You can to choose which compositor you want! A popular one is compton.
Out of the box it "Lacks transparency support" but if you choose to add compton then you can have transparency, blur etc.
Pro Easily scriptable / modular
All window management is done via the bspc command allowing for easy scripting and extensibility. This also means your sxhkd keybinds can be ported elsewhere without being tied to the wm.
Pro Simple and easy configuration
When everything is seperate, keybinding, status bar, windows manager, it makes everything is easier to configure deeply in detail and organization.
Pro Separate hotkey daemon
The hotkeys run through sxhkd which is a daemon that's separate from the window manager itself.
Pro Has basic ewmh implementation
With basic ewmh I can easily config to make a fullscreen program show in a window.
Con Steep learning curve for uninitiated users
Like a lot of tiling window managers, the learning curve for XMonad is quite steep.
Con Requires knowledge of Haskell for configuration
Understanding of Haskell is required in order to configure XMonad.
Con Requires a lot of Haskell dependencies
XMonad depends on GHC (the Glasgow Haskell Compiler) which can take up about 700 MB or disk space.
Con Only tiling
No support for stacking.
Con Poorly documented
Compared to something like i3 for example, a user following through i3's documentation is basically guaranteed to get a working desktop suited to their needs. Setting up bspwm is much more of a headache due to developers assuming things are clearer than they are.
Con Lack of layouts
It offers less layouts then most of the tiled windows managers. (Only binary and monocle)
Con Lacks transparency support
Like most window managers there is no built in compositing, which means no transparencies.