2 :man version: {revnumber}
3 :man manual: Bspwm Manual
11 bspwm - Binary space partitioning window manager
16 *bspwm* [*-h*|*-v*|*-c* 'CONFIG_PATH']
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 Use the given configuration file.
43 *bspwm* has only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.
45 The default configuration file is '$XDG_CONFIG_HOME/bspwm/bspwmrc'.
47 Keyboard and pointer bindings are defined with https://github.com/baskerville/sxhkd[sxhkd].
49 Example configuration files can be found in the *examples* directory.
54 New windows are inserted in the tree as close as possible to the focused window.
56 There is only two splitting modes: 'automatic' and 'manual'.
58 The default mode is 'automatic'. The 'manual' mode is entered by sending a *preselection* message.
60 Example: insertion of a new node (number 4) into the given tree in 'automatic' mode:
70 +-------------------------+ +-------------------------+
74 | 3 |------------| --> | 4 |------------|
78 +-------------------------+ +-------------------------+
81 Same departure, but the mode is 'manual', and a *window --presel up* message was sent beforehand:
90 +-------------------------+ +-------------------------+
94 | 3 |------------| --> |------------|------------|
98 +-------------------------+ +-------------------------+
104 Each monitor contains at least one desktop.
106 Each desktop contains at most one tree.
112 DIR := left | right | up | down
113 CYCLE_DIR := next | prev
119 Selectors are used to select a target window, desktop, or monitor. A selector
120 can either describe the target relatively or name it globally.
122 Descriptive (relative) selectors consist of a primary selector and any number
123 of non-conflicting modifiers as follows:
125 PRIMARY_SELECTOR[.MODIFIER]*
127 For obvious reasons, neither desktops nor monitors names may be valid
128 descriptive selectors.
136 WINDOW_SEL := <window_id>
137 | (DIR|CYCLE_DIR|biggest|last|focused|older|newer)[.floating|.tiled][.like|.unlike][.manual][.urgent][.local]
144 Selects the window in the given (spacial) direction relative to the active
148 Selects the window in the given (cyclic) direction.
151 Selects the biggest window on the current desktop.
154 Selects the previously focused window.
157 Selects the currently focused window.
160 Selects the window older than the focused window in the history.
163 Selects the window newer than the focused window in the history.
169 Only consider floating windows.
172 Only consider tiled windows.
175 Only consider windows that have the same class as the current window.
178 Only consider windows that have a different class than the current window.
181 Only consider windows in manual splitting mode (see *--presel*).
184 Only consider windows of the current desktop.
187 Only consider urgent windows.
195 DESKTOP_SEL := <desktop_name>
197 | (CYCLE_DIR|last|focused|older|newer)[.occupied|.free][.urgent][.local]
204 Selects the desktop with the given name.
207 Selects the nth desktop.
210 Selects the desktop in the given direction relative to the active desktop.
213 Selects the previously focused desktop.
216 Selects the currently focused desktop.
219 Selects the desktop older than the focused desktop in the history.
222 Selects the desktop newer than the focused desktop in the history.
228 Only consider occupied desktops.
231 Only consider free desktops.
234 Only consider urgent desktops.
237 Only consider desktops of the current monitor.
245 MONITOR_SEL := <monitor_name>
247 | (DIR|CYCLE_DIR|last|primary|focused|older|newer)[.occupied|.free]
254 Selects the monitor with the given name.
257 Selects the nth monitor.
260 Selects the monitor in the given (spacial) direction relative to the active monitor.
263 Selects the monitor in the given (cyclic) direction relative to the active monitor.
266 Selects the primary monitor.
269 Selects the previously focused monitor.
272 Selects the currently focused monitor.
275 Selects the monitor older than the focused monitor in the history.
278 Selects the monitor newer than the focused monitor in the history.
284 Only consider monitors where the focused desktop is occupied.
287 Only consider monitors where the focused desktop is free.
299 window ['WINDOW_SEL'] 'OPTIONS'
303 *-f*, *--focus* ['WINDOW_SEL']::
304 Focus the selected or given window.
306 *-d*, *--to-desktop* 'DESKTOP_SEL'::
307 Send the selected window to the given desktop.
309 *-m*, *--to-monitor* 'MONITOR_SEL'::
310 Send the selected window to the given monitor.
312 *-w*, *--to-window* 'WINDOW_SEL'::
313 Transplant the selected window to the given window.
315 *-s*, *--swap* 'WINDOW_SEL'::
316 Swap the selected window with the given window.
318 *-p*, *--presel* 'DIR'|cancel::
319 Preselect the splitting area of the selected window (or cancel the preselection).
321 *-r*, *--ratio* 'RATIO'::
322 Set the splitting ratio of the selected window (0 < 'RATIO' < 1).
324 *-e*, *--edge* 'DIR' 'RATIO'|pull|push::
325 Set the splitting ratio (or pull, or push) the edge located in the given direction in relation to the selected window.
327 *-R*, *--rotate* 'DIR' '90|270|180'::
328 Rotate the tree holding the edge located in the given direction in relation to the selected window.
330 *-t*, *--toggle* floating|fullscreen|locked|sticky|private[=on|off]::
331 Set or toggle the given state for the selected window.
334 Close the selected window.
337 Kill the selected window.
345 desktop ['DESKTOP_SEL'] 'OPTIONS'
349 *-f*, *--focus* ['DESKTOP_SEL']::
350 Focus the selected or given desktop.
352 *-m*, *--to-monitor* 'MONITOR_SEL'::
353 Send the selected desktop to the given monitor.
355 *-l*, *--layout* 'CYCLE_DIR'|monocle|tiled::
356 Set or cycle the layout of the selected desktop.
358 *-n*, *--rename* <new_name>::
359 Rename the selected desktop.
361 *-s*, *--swap* 'DESKTOP_SEL'::
362 Swap the selected desktop with the given desktop.
365 Remove the selected desktop.
367 *-c*, *--cancel-presel*::
368 Cancel the preselection of all the windows of the selected desktop.
370 *-F*, *--flip* 'horizontal|vertical'::
371 Flip the tree of the selected desktop.
373 *-R*, *--rotate* '90|270|180'::
374 Rotate the tree of the selected desktop.
377 Adjust the split ratios of the tree of the selected desktop so that all windows occupy the same area.
379 *-C*, *--circulate* forward|backward::
380 Circulate the leaves of the tree of the selected desktop.
382 *-t*, *--toggle* floating[=on|off]::
383 Set or toggle the given state for the selected desktop.
392 monitor ['MONITOR_SEL'] 'OPTIONS'
396 *-f*, *--focus* ['MONITOR_SEL']::
397 Focus the selected or given monitor.
399 *-a*, *--add-desktops* <name>...::
400 Create desktops with the given names in the selected monitor.
402 *-r*, *--remove-desktops* <name>...::
403 Remove desktops with the given names.
405 *-n*, *--rename* <new_name>::
406 Rename the selected monitor.
408 *-d*, *--reset-desktops* <name>...::
409 Rename, add or remove desktops depending on whether the number of given names is equal, superior or inferior to the number of existing desktops.
411 *-s*, *--swap* 'MONITOR_SEL'::
412 Swap the selected monitor with the given monitor.
425 List matching windows.
428 List matching desktops.
431 List matching monitors.
434 Print tree rooted at query.
437 Print the history as it relates to the query.
440 Print the window stacking order.
442 [*-m*,*--monitor* ['MONITOR_SEL']] | [*-d*,*--desktop* ['DESKTOP_SEL']] | [*-w*, *--window* ['WINDOW_SEL']]::
443 Constrain matches to the selected monitor, desktop or window.
456 *-T*, *--tree* <file_path>::
457 Load the desktop trees from the given file.
459 *-H*, *--history* <file_path>::
460 Load the focus history from the given file.
462 *-S*, *--stack* <file_path>::
463 Load the window stacking order from the given file.
477 Manage all the unmanaged windows remaining from a previous session.
479 *--toggle-visibility*::
480 Toggle the visibility of all the windows.
482 *--record-history* on|off::
483 Enable or disable the recording of window focus history.
486 Continuously print status informations on standard output.
499 *-g*, *--grab* focus|move|resize_side|resize_corner::
500 Initiate the given pointer action.
502 *-t*, *--track* <x> <y>::
503 Pass the pointer root coordinates for the current pointer action.
506 Terminate the current pointer action.
514 config [-m 'MONITOR_SEL'|-d 'DESKTOP_SEL'] <key> [<value>]::
515 Get or set the value of <key>.
524 Quit with an optional exit status.
528 Colors are either http://en.wikipedia.org/wiki/X11_color_names[X color names] or '#RRGGBB', booleans are 'true' or 'false'.
530 All the boolean settings are 'false' by default.
536 External command used to retrieve rule consequences. The command will receive the the ID of the window being processed as its first argument. The output of that command must have the following format: *key1=value1 key2=value2 ...*, where *keyN* is one of 'floating', 'fullscreen', 'locked', 'sticky', 'private', 'frame', 'center', 'lower', 'follow', 'manage', 'focus', 'desktop' or 'monitor'.
539 Prefix prepended to each of the status lines.
541 'focused_border_color'::
542 Color of the border of a focused window of a focused monitor.
544 'active_border_color'::
545 Color of the border of a focused window of an unfocused monitor.
547 'normal_border_color'::
548 Color of the border of an unfocused window.
550 'presel_border_color'::
551 Color of the *presel* message feedback.
553 'focused_locked_border_color'::
554 Color of the border of a focused locked window of a focused monitor.
556 'active_locked_border_color'::
557 Color of the border of a focused locked window of an unfocused monitor.
559 'normal_locked_border_color'::
560 Color of the border of an unfocused locked window.
562 'focused_sticky_border_color'::
563 Color of the border of a focused sticky window of a focused monitor.
565 'active_sticky_border_color'::
566 Color of the border of a focused sticky window of an unfocused monitor.
568 'normal_sticky_border_color'::
569 Color of the border of an unfocused sticky window.
571 'focused_private_border_color'::
572 Color of the border of a focused private window of a focused monitor.
574 'active_private_border_color'::
575 Color of the border of a focused private window of an unfocused monitor.
577 'normal_private_border_color'::
578 Color of the border of an unfocused private window.
580 'urgent_border_color'::
581 Color of the border of an urgent window.
583 'focused_frame_opacity'::
584 Opacity of a focused frame of a focused monitor.
586 'active_frame_opacity'::
587 Opacity of a focused frame of an unfocused monitor.
589 'normal_frame_opacity'::
590 Opacity of an unfocused frame.
596 Intensity of the growth involved in pulling or pushing an edge.
598 'history_aware_focus'::
599 Give priority to the focus history when focusing nodes.
601 'borderless_monocle'::
602 Remove borders for tiled windows in monocle mode.
605 Remove gaps for tiled windows in monocle mode.
607 'focus_follows_pointer'::
608 Focus the window under the pointer.
610 'pointer_follows_monitor'::
611 When focusing a monitor, put the pointer at its center.
614 Interpret two consecutive identical *use* messages as an *alternate* message.
617 Interpret two consecutive identical *presel* messages as a *cancel* message.
619 'apply_floating_atom'::
620 Set the value of the '_BSPWM_FLOATING_WINDOW' atom of each window according to its floating state.
622 'ignore_ewmh_focus'::
623 Ignore EWMH requests to focus a window.
632 Padding space added at the sides of the monitor.
638 Size of the gap that separates windows.
647 Status informations are composed of items separated by colons.
649 Each item as the form '<type><value>' where '<type>' is the first character of the item.
658 Occupied focused desktop.
661 Occupied unfocused desktop.
664 Free focused desktop.
667 Free unfocused desktop.
670 Urgent focused desktop.
673 Urgent unfocused desktop.
676 Layout of the focused desktop of the focused monitor.
678 Environment Variables
679 ---------------------
682 The path of the socket used for the communication between *bspc* and *bspwm*. If it isn't defined, then the following path is used: '/tmp/bspwm-socket'.
687 * Any EWMH compliant panel (e.g.: 'tint2', 'bmpanel2', etc.).
688 * A custom panel if the '-s' flag is used (have a look at the files in 'examples/panel').
693 * Configured and controlled through messages.
694 * Multiple monitors support (via 'RandR').
695 * EWMH support (*tint2* works).
701 * Steven Allen <steven at stebalien.com>
702 * Thomas Adam <thomas at xteddy.org>
703 * Ivan Kanakarakis <ivan.kanak at gmail.com>
708 Bastien Dejean <nihilhill at gmail.com>
713 bspwm at librelist.com
716 vim: set ft=asciidoc: