'\" t .\" Title: bspwm .\" Author: [see the "Author" section] .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: 09/16/2013 .\" Manual: Bspwm Manual .\" Source: Bspwm 0.8 .\" Language: English .\" .TH "BSPWM" "1" "09/16/2013" "Bspwm 0\&.8" "Bspwm Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" bspwm \- Binary space partitioning window manager .SH "SYNOPSIS" .sp \fBbspwm\fR [\fB\-h\fR|\fB\-v\fR|\fB\-c\fR \fICONFIG_PATH\fR|\fB\-s\fR \fIPANEL_FIFO\fR|\fB\-p\fR \fIPANEL_PREFIX\fR] .sp \fBbspc\fR \fICOMMAND\fR [\fIARGUMENTS\fR] .SH "DESCRIPTION" .sp \fBbspwm\fR is a tiling window manager that represents windows as the leaves of a full binary tree\&. .sp It is controlled and configured via \fBbspc\fR\&. .SH "OPTIONS" .PP \fB\-h\fR .RS 4 Print the synopsis and exit\&. .RE .PP \fB\-v\fR .RS 4 Print the version and exit\&. .RE .PP \fB\-c\fR \fICONFIG_PATH\fR .RS 4 Use the given configuration file\&. .RE .PP \fB\-s\fR \fIPANEL_FIFO\fR .RS 4 Write the internal state to the given FIFO\&. .RE .PP \fB\-p\fR \fIPANEL_PREFIX\fR .RS 4 Start every line written to the \fIPANEL_FIFO\fR with the given prefix\&. .RE .SH "CONFIGURATION" .sp \fBbspwm\fR has only two sources of informations: the X events it receives and the messages it reads on a dedicated socket\&. .sp The default configuration file is \fI$XDG_CONFIG_HOME/bspwm/bspwmrc\fR\&. .sp Keyboard and pointer bindings are defined with sxhkd\&. .sp Example configuration files can be found in the \fBexamples\fR directory\&. .SH "SPLITTING MODES" .sp New windows are inserted in the tree as close as possible to the focused window\&. .sp There is only two splitting modes: \fIautomatic\fR and \fImanual\fR\&. .sp The default mode is \fIautomatic\fR\&. The \fImanual\fR mode is entered by sending a \fBpreselection\fR message\&. .sp Example: insertion of a new node (number 4) into the given tree in \fIautomatic\fR mode: .sp .if n \{\ .RS 4 .\} .nf b c / \e / \e 3 a \-\-> 4 b ^ / \e ^ / \e 2 1 3 a / \e 2 1 +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ | | | | | | | | 2 | | | 3 | | | | | | | | 3 |\-\-\-\-\-\-\-\-\-\-\-\-| \-\-> | 4 |\-\-\-\-\-\-\-\-\-\-\-\-| | ^ | | | ^ | | | | | 1 | | | 1 | 2 | | | | | | | | +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ .fi .if n \{\ .RE .\} .sp Same departure, but the mode is \fImanual\fR, and a \fBwindow \-\-presel up\fR message was sent beforehand: .sp .if n \{\ .RS 4 .\} .nf b b / \e / \e 3 a \-\-> c a ^ / \e / \e / \e 2 1 4 3 2 1 ^ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ | | | | | | | | 2 | | 4 | 2 | | | | | ^ | | | 3 |\-\-\-\-\-\-\-\-\-\-\-\-| \-\-> |\-\-\-\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-| | ^ | | | | | | | 1 | | 3 | 1 | | | | | | | +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ .fi .if n \{\ .RE .\} .SH "CONTAINERS" .sp Each monitor contains at least one desktop\&. .sp Each desktop contains at most one tree\&. .SH "COMMON DEFINITIONS" .sp .if n \{\ .RS 4 .\} .nf DIR := left | right | up | down CYCLE_DIR := next | prev .fi .if n \{\ .RE .\} .SH "SELECTORS" .sp Selectors are used to select a target window, desktop, or monitor\&. A selector can either describe the target relatively or name it globally\&. .sp Descriptive (relative) selectors consist of a primary selector and any number of non\-conflicting modifiers as follows: .sp .if n \{\ .RS 4 .\} .nf PRIMARY_SELECTOR[\&.MODIFIER]* .fi .if n \{\ .RE .\} .sp For obvious reasons, neither desktops nor monitors names may be valid descriptive selectors\&. .SS "Window" .sp Select a window\&. .sp .if n \{\ .RS 4 .\} .nf WINDOW_SEL := | (DIR|CYCLE_DIR|biggest|last|focused)[\&.floating|\&.tiled][\&.like|\&.unlike][\&.automatic|\&.manual][\&.urgent|\&.nonurgent] .fi .if n \{\ .RE .\} .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBPrimary Selectors\fR .RS 4 .PP \fIDIR\fR .RS 4 Selects the window in the given (spacial) direction relative to the active window\&. .RE .PP \fICYCLE_DIR\fR .RS 4 Selects the window in the given (cyclic) direction\&. .RE .PP biggest .RS 4 Selects the biggest window on the current desktop\&. .RE .PP last .RS 4 Selects the previously focused window on the current desktop\&. .RE .PP focused .RS 4 Selects the currently focused window\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBModifiers\fR .RS 4 .PP floating .RS 4 Only consider floating windows\&. .RE .PP tiled .RS 4 Only consider tiled windows\&. .RE .PP like .RS 4 Only consider windows that have the same class as the current window\&. .RE .PP unlike .RS 4 Only consider windows that have a different class than the current window\&. .RE .PP automatic .RS 4 Only consider windows in automatic splitting mode\&. .RE .PP manual .RS 4 Only consider windows in manual splitting mode (see \fB\-\-presel\fR)\&. .RE .PP urgent .RS 4 Only consider urgent windows\&. .RE .PP nonurgent .RS 4 Only consider nonurgent windows\&. .RE .RE .SS "Desktop" .sp Select a desktop\&. .sp .if n \{\ .RS 4 .\} .nf DESKTOP_SEL := | ^ | (CYCLE_DIR|last|focused)[\&.occupied|\&.free][\&.urgent|\&.nonurgent] .fi .if n \{\ .RE .\} .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBPrimary Selectors\fR .RS 4 .PP .RS 4 Selects the desktop with the given name\&. .RE .PP ^ .RS 4 Selects the nth desktop\&. .RE .PP \fICYCLE_DIR\fR .RS 4 Selects the desktop in the given direction relative to the active desktop\&. .RE .PP last .RS 4 Selects the previously focused desktop\&. .RE .PP focused .RS 4 Selects the currently focused desktop\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBModifiers\fR .RS 4 .PP occupied .RS 4 Only consider occupied desktops\&. .RE .PP free .RS 4 Only consider free desktops\&. .RE .PP urgent .RS 4 Only consider urgent desktops\&. .RE .PP nonurgent .RS 4 Only consider nonurgent desktops\&. .RE .RE .SS "Monitor" .sp Select a monitor\&. .sp .if n \{\ .RS 4 .\} .nf MONITOR_SEL := | ^ | (DIR|CYCLE_DIR|last|primary|focused)[\&.occupied|\&.free] .fi .if n \{\ .RE .\} .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBPrimary Selectors\fR .RS 4 .PP .RS 4 Selects the monitor with the given name\&. .RE .PP ^ .RS 4 Selects the nth monitor\&. .RE .PP \fIDIR\fR .RS 4 Selects the monitor in the given (spacial) direction relative to the active monitor\&. .RE .PP \fICYCLE_DIR\fR .RS 4 Selects the monitor in the given (cyclic) direction relative to the active monitor\&. .RE .PP primary .RS 4 Selects the primary monitor\&. .RE .PP last .RS 4 Selects the previously focused monitor\&. .RE .PP focused .RS 4 Selects the currently focused monitor\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBModifiers\fR .RS 4 .PP occupied .RS 4 Only consider monitors where the focused desktop is occupied\&. .RE .PP free .RS 4 Only consider monitors where the focused desktop is free\&. .RE .RE .SH "COMMANDS" .SS "Window" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .sp window [\fIWINDOW_SEL\fR] \fIOPTIONS\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOptions\fR .RS 4 .PP \fB\-f\fR, \fB\-\-focus\fR [\fIWINDOW_SEL\fR] .RS 4 Focus the selected or given window\&. .RE .PP \fB\-d\fR, \fB\-\-to\-desktop\fR \fIDESKTOP_SEL\fR .RS 4 Send the selected window to the given desktop\&. .RE .PP \fB\-m\fR, \fB\-\-to\-monitor\fR \fIMONITOR_SEL\fR .RS 4 Send the selected window to the given monitor\&. .RE .PP \fB\-w\fR, \fB\-\-to\-window\fR \fIWINDOW_SEL\fR .RS 4 Transplant the selected window to the given window\&. .RE .PP \fB\-s\fR, \fB\-\-swap\fR \fIWINDOW_SEL\fR .RS 4 Swap the selected window with the given window\&. .RE .PP \fB\-p\fR, \fB\-\-presel\fR \fIDIR\fR|cancel .RS 4 Preselect the splitting area of the selected window (or cancel the preselection)\&. .RE .PP \fB\-r\fR, \fB\-\-ratio\fR \fIRATIO\fR .RS 4 Set the splitting ratio of the selected window (0 < \fIRATIO\fR < 1)\&. .RE .PP \fB\-e\fR, \fB\-\-edge\fR \fIDIR\fR \fIRATIO\fR|pull|push .RS 4 Set the splitting ratio (or pull, or push) the edge located in the given direction in relation to the selected window\&. .RE .PP \fB\-R\fR, \fB\-\-rotate\fR \fIDIR\fR \fI90|270|180\fR .RS 4 Rotate the tree holding the edge located in the given direction in relation to the selected window\&. .RE .PP \fB\-t\fR, \fB\-\-toggle\fR floating|fullscreen|locked[=on|off] .RS 4 Set or toggle the given state for the selected window\&. .RE .PP \fB\-c\fR, \fB\-\-close\fR .RS 4 Close the selected window\&. .RE .PP \fB\-k\fR, \fB\-\-kill\fR .RS 4 Kill the selected window\&. .RE .RE .SS "Desktop" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .sp desktop [\fIDESKTOP_SEL\fR] \fIOPTIONS\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOptions\fR .RS 4 .PP \fB\-f\fR, \fB\-\-focus\fR [\fIDESKTOP_SEL\fR] .RS 4 Focus the selected or given desktop\&. .RE .PP \fB\-m\fR, \fB\-\-to\-monitor\fR \fIMONITOR_SEL\fR .RS 4 Send the selected desktop to the given monitor\&. .RE .PP \fB\-l\fR, \fB\-\-layout\fR \fICYCLE_DIR\fR|monocle|tiled .RS 4 Set or cycle the layout of the selected desktop\&. .RE .PP \fB\-n\fR, \fB\-\-rename\fR .RS 4 Rename the selected desktop\&. .RE .PP \fB\-s\fR, \fB\-\-swap\fR \fIDESKTOP_SEL\fR .RS 4 Swap the selected desktop with the given desktop\&. .RE .PP \fB\-r\fR, \fB\-\-remove\fR .RS 4 Remove the selected desktop\&. .RE .PP \fB\-c\fR, \fB\-\-cancel\-presel\fR .RS 4 Cancel the preselection of all the windows of the selected desktop\&. .RE .PP \fB\-F\fR, \fB\-\-flip\fR \fIhorizontal|vertical\fR .RS 4 Flip the tree of the selected desktop\&. .RE .PP \fB\-R\fR, \fB\-\-rotate\fR \fI90|270|180\fR .RS 4 Rotate the tree of the selected desktop\&. .RE .PP \fB\-B\fR, \fB\-\-balance\fR .RS 4 Adjust the split ratios of the tree of the selected desktop so that all windows occupy the same area\&. .RE .PP \fB\-C\fR, \fB\-\-circulate\fR forward|backward .RS 4 Circulate the leaves of the tree of the selected desktop\&. .RE .RE .SS "Monitor" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .sp monitor [\fIMONITOR_SEL\fR] \fIOPTIONS\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOptions\fR .RS 4 .PP \fB\-f\fR, \fB\-\-focus\fR [\fIMONITOR_SEL\fR] .RS 4 Focus the selected or given monitor\&. .RE .PP \fB\-a\fR, \fB\-\-add\-desktops\fR \&... .RS 4 Create desktops with the given names in the selected monitor\&. .RE .PP \fB\-r\fR, \fB\-\-remove\-desktops\fR \&... .RS 4 Remove desktops with the given names\&. .RE .PP \fB\-p\fR, \fB\-\-pad\fR .RS 4 Set the padding of the selected monitor\&. .RE .PP \fB\-n\fR, \fB\-\-rename\fR .RS 4 Rename the selected monitor\&. .RE .PP \fB\-s\fR, \fB\-\-swap\fR \fIMONITOR_SEL\fR .RS 4 Swap the selected monitor with the given monitor\&. .RE .RE .SS "Query" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .sp query \fIOPTIONS\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOptions\fR .RS 4 .PP \fB\-W\fR, \fB\-\-windows\fR .RS 4 List matching windows\&. .RE .PP \fB\-D\fR, \fB\-\-desktops\fR .RS 4 List matching desktops\&. .RE .PP \fB\-M\fR, \fB\-\-monitors\fR .RS 4 List matching monitors\&. .RE .PP \fB\-T\fR, \fB\-\-tree\fR .RS 4 Print tree rooted at query\&. .RE .PP \fB\-H\fR, \fB\-\-history\fR .RS 4 Print the history as it relates to the query\&. .RE .PP [\fB\-m\fR,\fB\-\-monitor\fR [\fIMONITOR_SEL\fR]] | [\fB\-d\fR,\fB\-\-desktop\fR [\fIDESKTOP_SEL\fR]] | [\fB\-w\fR, \fB\-\-window\fR [\fIWINDOW_SEL\fR]] .RS 4 Constrain matches to the selected monitor, desktop or window\&. .RE .RE .SS "Restore" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .sp restore \fIOPTIONS\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOptions\fR .RS 4 .PP \fB\-T\fR, \fB\-\-tree\fR .RS 4 Load the desktop trees from the given file\&. .RE .PP \fB\-H\fR, \fB\-\-history\fR .RS 4 Load the focus history from the given file\&. .RE .RE .SS "Control" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .sp control \fIOPTIONS\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOptions\fR .RS 4 .PP \fB\-\-adopt\-orphans\fR .RS 4 Manage all the unmanaged windows remaining from a previous session\&. .RE .PP \fB\-\-put\-status\fR .RS 4 Write the current internal state to the panel FIFO\&. .RE .PP \fB\-\-toggle\-visibility\fR .RS 4 Toggle the visibility of all the windows\&. .RE .PP \fB\-\-float\-upcoming\fR .RS 4 Toggle the floating state of the upcoming window\&. .RE .RE .SS "Pointer" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .sp pointer \fIOPTIONS\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOptions\fR .RS 4 .PP \fB\-t\fR, \fB\-\-track\fR .RS 4 Pass the pointer root coordinates for the current pointer action\&. .RE .PP \fB\-g\fR, \fB\-\-grab\fR focus|move|resize_side|resize_corner .RS 4 Perform the given pointer action\&. .RE .RE .SS "Rule" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .sp rule \fIOPTIONS\fR .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBOptions\fR .RS 4 .PP \fB\-a\fR, \fB\-\-add\fR [\-d \fIDESKTOP_SEL\fR [\-\-follow]] [\-\-floating] [\-\-focus] [\-\-unmanage] .RS 4 Create a new rule ( must match the class or instance name)\&. .RE .PP \fB\-r\fR, \fB\-\-rm\fR \&... .RS 4 Remove the rules with the given UIDs\&. .RE .PP \fB\-l\fR, \fB\-\-list\fR [] .RS 4 List the rules\&. .RE .RE .SS "Config" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .PP config [\-m \fIMONITOR_SEL\fR|\-d \fIDESKTOP_SEL\fR] [] .RS 4 Get or set the value of \&. .RE .RE .SS "Quit" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBGeneral Syntax\fR .RS 4 .PP quit [] .RS 4 Quit with an optional exit status\&. .RE .RE .SH "SETTINGS" .sp Colors are either X color names or \fI#RRGGBB\fR, booleans are \fItrue\fR or \fIfalse\fR\&. .sp All the boolean settings are \fIfalse\fR by default\&. .SS "Global Settings" .PP \fIfocused_border_color\fR .RS 4 Color of the border of a focused window of a focused monitor\&. .RE .PP \fIactive_border_color\fR .RS 4 Color of the border of a focused window of an unfocused monitor\&. .RE .PP \fInormal_border_color\fR .RS 4 Color of the border of an unfocused window\&. .RE .PP \fIpresel_border_color\fR .RS 4 Color of the \fBpresel\fR message feedback\&. .RE .PP \fIfocused_locked_border_color\fR .RS 4 Color of the border of a focused locked window of a focused monitor\&. .RE .PP \fIactive_locked_border_color\fR .RS 4 Color of the border of a focused locked window of an unfocused monitor\&. .RE .PP \fInormal_locked_border_color\fR .RS 4 Color of the border of an unfocused locked window\&. .RE .PP \fIurgent_border_color\fR .RS 4 Color of the border of an urgent window\&. .RE .PP \fIborder_width\fR .RS 4 Window border width\&. .RE .PP \fIsplit_ratio\fR .RS 4 Default split ratio\&. .RE .PP \fIhistory_aware_focus\fR .RS 4 Give priority to the focus history when focusing nodes\&. .RE .PP \fIborderless_monocle\fR .RS 4 Remove borders for tiled windows in monocle mode\&. .RE .PP \fIgapless_monocle\fR .RS 4 Remove gaps for tiled windows in monocle mode\&. .RE .PP \fIfocus_follows_pointer\fR .RS 4 Focus the window under the pointer\&. .RE .PP \fIpointer_follows_monitor\fR .RS 4 When focusing a monitor, put the pointer at its center\&. .RE .PP \fIauto_alternate\fR .RS 4 Interpret two consecutive identical \fBuse\fR messages as an \fBalternate\fR message\&. .RE .PP \fIauto_cancel\fR .RS 4 Interpret two consecutive identical \fBpresel\fR messages as a \fBcancel\fR message\&. .RE .PP \fIapply_floating_atom\fR .RS 4 Set the value of the \fI_BSPWM_FLOATING_WINDOW\fR atom of each window according to its floating state\&. .RE .SS "Monitor Settings" .PP \fItop_padding\fR, \fIright_padding\fR, \fIbottom_padding\fR, \fIleft_padding\fR .RS 4 Padding space added at the sides of the monitor\&. .RE .SS "Desktop Settings" .PP \fIwindow_gap\fR .RS 4 Size of the gap that separates windows\&. .RE .SH "ENVIRONMENT VARIABLES" .PP \fIBSPWM_SOCKET\fR .RS 4 The path of the socket used for the communication between \fBbspc\fR and \fBbspwm\fR\&. If it isn\(cqt defined, then the following path is used: \fI/tmp/bspwm\-socket\fR\&. .RE .SH "PANELS" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Any EWMH compliant panel (e\&.g\&.: \fItint2\fR, \fIbmpanel2\fR, etc\&.)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} A custom panel if the \fI\-s\fR flag is used (have a look at the files in \fIexamples/panel\fR)\&. .RE .SH "KEY FEATURES" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Configured and controlled through messages\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Multiple monitors support (via \fIRandR\fR)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} EWMH support (\fBtint2\fR works)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Hybrid tiling\&. .RE .SH "CONTRIBUTORS" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Steven Allen .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Thomas Adam .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Ivan Kanakarakis .RE .SH "AUTHOR" .sp Bastien Dejean .SH "MAILING LIST" .sp bspwm at librelist\&.com