bspwm
Binary space partitioning window manager
TLDR
Start bspwm (note that a pre-existing window manager must not be open when this command is run)
SYNOPSIS
bspwm
DESCRIPTION
bspwm is a lightweight and highly configurable tiling window manager for X. It manages windows as the leaves of a full binary tree, dynamically splitting nodes to accommodate new windows. This unique approach allows for flexible and predictable window arrangement, where each window occupies a specific region within a binary tree structure.
Unlike many other window managers, bspwm does not handle keybindings directly; it relies on an external hotkey daemon like sxhkd to translate key presses into commands. Similarly, all configuration and interaction with bspwm are done via its companion command-line utility, bspc. This clear separation of concerns makes bspwm incredibly scriptable and modular, allowing users to build a custom desktop environment tailored to their exact needs.
Adhering to Freedesktop.org standards like EWMH (Extended Window Manager Hints), bspwm is designed to be minimalistic, fast, and compliant, providing a solid foundation upon which a powerful and personalized workspace can be constructed.
CAVEATS
bspwm requires significant user configuration and external tools for a complete desktop experience. It does not provide built-in keybinding management (relying on sxhkd), nor does it offer a status bar, menu, or notification system; these functionalities must be provided by other independent utilities. Its design philosophy emphasizes minimalism and modularity, which means it's not an out-of-the-box solution and often presents a steeper learning curve for users new to tiling window managers.
CONFIGURATION
bspwm is configured primarily through a shell script named bspwmrc, typically located in ~/.config/bspwm/. This script contains a series of bspc commands that define desktop rules, default settings, and various behaviors upon startup. Because it's a simple shell script, users can leverage any shell commands or logic to create highly dynamic and complex configurations.
INTERACTION AND SCRIPTABILITY
The primary interface for interacting with a running bspwm instance is the bspc utility. bspc allows users and scripts to query the state of the window manager, send commands to manipulate windows and desktops, and subscribe to events. This robust command-line interface makes bspwm exceptionally scriptable, enabling advanced automation and custom workflows.
HISTORY
bspwm was created by Gautier Portet (baskerville) and first emerged around 2013. Its development focused on a novel approach to tiling by representing windows as nodes in a binary tree, distinct from many other tiling window managers. A key design decision was to offload all configuration and control to an external tool, bspc, which enabled unprecedented scriptability and modularity. This philosophy quickly gained traction among users seeking highly customizable and minimal environments, leading to its growing popularity within the Linux ricing community.