2 :man version: {revnumber}
3 :man manual: Bspwm Manual
11 bspwm - Tiling window manager based on binary space partitioning
16 *bspwm* [*-h*|*-v*|*-s* 'PANEL_FIFO'|*-p* 'PANEL_PREFIX']
18 *bspc* 'COMMAND' ['ARGUMENTS']
23 *bspwm* is a tiling window manager that represents windows as the leaves of a full binary tree.
25 It is controlled and configured via *bspc*.
32 Print the synopsis and exit.
35 Print the version and exit.
38 Write the internal state to the given FIFO.
41 Start every line written to the 'PANEL_FIFO' with the given prefix.
47 *bspwm* have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.
49 Its configuration file is '$XDG_CONFIG_HOME/bspwm/autostart'.
51 Keyboard and pointer bindings are defined with https://github.com/baskerville/sxhkd[sxhkd].
53 Example configuration files can be found in the *examples* directory.
58 New windows are inserted in the tree as close as possible to the focused window.
60 There is only two splitting modes: 'automatic' and 'manual'.
62 The default mode is 'automatic'. The 'manual' mode is entered by sending a *preselection* message.
64 Example: insertion of a new node (number 4) into the given tree in 'automatic' mode:
74 +-------------------------+ +-------------------------+
78 | 3 |------------| --> | 4 |------------|
82 +-------------------------+ +-------------------------+
85 Same departure, but the mode is 'manual', and a *window --presel up* message was sent beforehand:
94 +-------------------------+ +-------------------------+
98 | 3 |------------| --> |------------|------------|
102 +-------------------------+ +-------------------------+
108 Each monitor contains at least one desktop.
110 Each desktop contains at most one tree.
117 WINDOW_SEL := (CYCLE|DIR|biggest|focused|last)[.WINDOW_CLASS] | <window_id>
118 DESKTOP_SEL := (CYCLE|focused|last)[.DESKTOP_CLASS] | <desktop_name>
119 MONITOR_SEL := (CYCLE|DIR|focused|last)[.DESKTOP_CLASS] | <monitor_name>
121 DESKTOP_CLASS := [occupied|free]
122 WINDOW_CLASS := [floating|tiled][.][like|unlike]
124 DIR := left|right|up|down
127 FLIP := horizontal|vertical
139 window ['WINDOW_SEL'] 'OPTIONS'
143 *-f*, *--focus* ['WINDOW_SEL']::
144 Focus the selected or given window.
146 *-d*, *--to-desktop* 'DESKTOP_SEL'::
147 Send the selected window to the given desktop.
149 *-m*, *--to-monitor* 'MONITOR_SEL'::
150 Send the selected window to the given monitor.
152 *-w*, *--to-window* 'WINDOW_SEL'::
153 Transplant the selected window to the given window.
155 *-s*, *--swap* 'WINDOW_SEL'::
156 Swap the selected window with the given window.
158 *-p*, *--presel* 'DIR'|cancel::
159 Preselect the splitting area of the selected window (or cancel the preselection).
161 *-r*, *--ratio* 'RATIO'::
162 Set the splitting ratio of the selected window.
164 *-e*, *--edge* 'DIR' 'RATIO'|pull|push::
165 Set the splitting ratio (or pull, or push) the edge located in the given direction in relation to the selected window.
167 *-t*, *--toggle* floating|fullscreen|locked[=on|off]::
168 Set or toggle the given state for the selected window.
171 Close the selected window.
174 Kill the selected window.
182 desktop ['DESKTOP_SEL'] 'OPTIONS'
186 *-f*, *--focus* ['DESKTOP_SEL']::
187 Focus the selected or given desktop.
189 *-m*, *--to-monitor* 'MONITOR_SEL'::
190 Send the selected desktop to the given monitor.
192 *-l*, *--layout* 'CYCLE'|monocle|tiled::
193 Set or cycle the layout of the selected desktop.
195 *-n*, *--rename* <new_name>::
196 Rename the selected desktop.
199 Remove the selected desktop.
201 *-c*, *--cancel-presel*::
202 Cancel the preselection of all the windows of the selected desktop.
204 *-F*, *--flip* 'FLIP'::
205 Flip the tree of the selected desktop.
207 *-R*, *--rotate* 'ROTATE'::
208 Rotate the tree of the selected desktop.
211 Adjust the split ratios of the tree of the selected desktop so that all windows occupy the same area.
213 *-C*, *--circulate* forward|backward::
214 Circulate the leaves of the tree of the selected desktop.
222 monitor ['MONITOR_SEL'] 'OPTIONS'
226 *-f*, *--focus* ['MONITOR_SEL']::
227 Focus the selected or given monitor.
229 *-a*, *--add-desktops* <name>...::
230 Create desktops with the given names in the selected monitor.
232 *-r*, *--remove-desktops* <name>...::
233 Remove desktops with the given names.
235 *-p*, *--pad* <top> <right> <bottom> <left>::
236 Set the padding of the selected monitor.
238 *-n*, *--rename* <new_name>::
239 Rename the selected monitor.
252 List matching windows.
255 List matching desktops.
258 List matching monitors.
261 Print tree rooted at query.
264 Print the history as it relates to the query.
266 [*-m*,*--monitor* ['MONITOR_SEL']] | [*-d*,*--desktop* ['DESKTOP_SEL']] | [*-w*, *--window* ['WINDOW_SEL']]::
267 Constrain matches to the selected monitor, desktop or window.
280 *-T*, *--tree* <file_path>::
281 Load the desktop trees from the given file.
283 *-H*, *--history* <file_path>::
284 Load the focus history from the given file.
297 *--adopt-orphans* <file_path>::
298 Manage all the unmanaged windows remaining from a previous session.
300 *--put-status* <file_path>::
301 Write the current internal state to the panel FIFO.
303 *--toggle-visibility*::
304 Toggle the visibility of all the managed windows.
317 *-t*, *--track* <x> <y>::
318 Pass the pointer root coordinates for the current pointer action.
320 *-g*, *--grab* focus|move|resize_side|resize_corner::
321 Perform the given pointer action.
334 *-a*, *--add* <pattern> [-d 'DESKTOP_SEL'] [--floating] [--follow]::
335 Create a new rule (<pattern> must match the class or instance name).
337 *-r*, *--rm* <rule_uid>...::
338 Remove the rules with the given UIDs.
340 *-l*, *--list* [<pattern>]::
349 config <key> [<value>]::
350 Get or set the value of <key>.
359 Quit with an optional exit status.
363 Colors are either http://en.wikipedia.org/wiki/X11_color_names[X color names] or '#RRGGBB', booleans are 'true' or 'false'.
365 All the boolean settings are 'false' by default.
368 'focused_border_color'::
369 Color of the border of a focused window of a focused monitor.
371 'active_border_color'::
372 Color of the border of a focused window of an unfocused monitor.
374 'normal_border_color'::
375 Color of the border of an unfocused window.
377 'presel_border_color'::
378 Color of the *presel* message feedback.
380 'focused_locked_border_color'::
381 Color of the border of a focused locked window of a focused monitor.
383 'active_locked_border_color'::
384 Color of the border of a focused locked window of an unfocused monitor.
386 'normal_locked_border_color'::
387 Color of the border of an unfocused locked window.
389 'urgent_border_color'::
390 Color of the border of an urgent window.
396 Value of the gap that separates windows.
405 Padding space added at the sides of the current monitor.
408 The value that shall be used for the '_NET_WM_NAME' property of the root window.
410 'borderless_monocle'::
411 Remove borders for tiled windows in monocle mode.
414 Remove gaps for tiled windows in monocle mode.
416 'focus_follows_pointer'::
417 Focus the window under the pointer.
419 'pointer_follows_monitor'::
420 When focusing a monitor, put the pointer at its center.
422 'monitor_focus_fallback'::
423 If the focus message fails, try to focus the nearest monitor in the same direction.
426 Prevent floating windows from being raised when they might cover other floating windows.
428 'apply_shadow_property'::
429 Enable shadows for floating windows via the '_COMPTON_SHADOW' property.
432 Interpret two consecutive identical *use* messages as an *alternate* message.
435 Interpret two consecutive identical *presel* messages as a *cancel* message.
437 'focus_by_distance'::
438 Use window or leaf distance for focus movement.
440 'history_aware_focus'::
441 Give priority to the focus history when focusing nodes.
443 Environment Variables
444 ---------------------
447 The path of the socket used for the communication between *bspc* and *bspwm*.
452 * Any EWMH compliant panel (e.g.: 'tint2', 'bmpanel2', etc.).
453 * A custom panel if the '-s' flag is used (have a look at the files in 'examples/panel').
458 * Configured and controlled through messages.
459 * Multiple monitors support (via 'RandR').
460 * EWMH support (*tint2* works).
466 * Steven Allen <steven at stebalien.com>
467 * Thomas Adam <thomas at xteddy.org>
468 * Ivan Kanakarakis <ivan.kanak at gmail.com>
473 Bastien Dejean <baskerville at lavabit.com>
478 bspwm at librelist.com
481 vim: set ft=asciidoc: