.\" Title: bspwm
.\" Author: [see the "Author" section]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 10/11/2013
+.\" Date: 08/07/2015
.\" Manual: Bspwm Manual
-.\" Source: Bspwm 0.8.5
+.\" Source: Bspwm 0.9
.\" Language: English
.\"
-.TH "BSPWM" "1" "10/11/2013" "Bspwm 0\&.8\&.5" "Bspwm Manual"
+.TH "BSPWM" "1" "08/07/2015" "Bspwm 0\&.9" "Bspwm Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
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]
+\fBbspwm\fR [\fB\-h\fR|\fB\-v\fR|\fB\-c\fR \fICONFIG_PATH\fR]
.sp
\fBbspc\fR \fICOMMAND\fR [\fIARGUMENTS\fR]
.SH "DESCRIPTION"
.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
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\&.
+There are 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
.RE
.\}
.sp
-Same departure, but the mode is \fImanual\fR, and a \fBwindow \-\-presel up\fR message was sent beforehand:
+Same action, but the mode is \fImanual\fR, and a \fBwindow \-\-presel up\fR message was sent beforehand:
.sp
.if n \{\
.RS 4
.RE
.\}
.sp
-For obvious reasons, neither desktops nor monitors names may be valid descriptive selectors\&.
+For obvious reasons, neither desktop nor monitor names may be valid descriptive selectors\&.
.SS "Window"
.sp
Select a window\&.
.\}
.nf
WINDOW_SEL := <window_id>
- | (DIR|CYCLE_DIR|biggest|last|focused|older|newer)[\&.floating|\&.tiled][\&.like|\&.unlike][\&.manual][\&.urgent][\&.local]
+ | (DIR|CYCLE_DIR|biggest|last|focused|older|newer)[\&.floating|\&.tiled][\&.like|\&.unlike][\&.manual|\&.automatic][\&.urgent][\&.local][\&.unfocused]
.fi
.if n \{\
.RE
.PP
manual
.RS 4
-Only consider windows in manual splitting mode (see
-\fB\-\-presel\fR)\&.
+Only consider windows in manual splitting mode\&.
+.RE
+.PP
+automatic
+.RS 4
+Only consider windows in automatic splitting mode\&.
.RE
.PP
local
.RS 4
Only consider urgent windows\&.
.RE
+.PP
+unfocused
+.RS 4
+Only consider windows other than the focused window\&.
+.RE
.RE
.SS "Desktop"
.sp
.\}
.nf
DESKTOP_SEL := <desktop_name>
- | ^<n>
- | (CYCLE_DIR|last|focused|older|newer)[\&.occupied|\&.free][\&.urgent][\&.local]
+ | [MONITOR_SEL:]^<n>
+ | (CYCLE_DIR|last|[MONITOR_SEL:]focused|older|newer)[\&.occupied|\&.free][\&.urgent][\&.local]
.fi
.if n \{\
.RE
Only consider monitors where the focused desktop is free\&.
.RE
.RE
+.SH "WINDOW STATES"
+.PP
+floating
+.RS 4
+Is above any tiled window and can be moved/resized freely\&. Although it doesn\(cqt occupy any tiling space, it is still part of the window tree\&.
+.RE
+.PP
+pseudo_tiled
+.RS 4
+Has an unrestricted size while being centered in its tiling space\&.
+.RE
+.PP
+fullscreen
+.RS 4
+Fills its monitor rectangle, is above all the other windows and has no borders\&.
+.RE
+.PP
+locked
+.RS 4
+Ignores the
+\fBclose\fR
+message\&.
+.RE
+.PP
+sticky
+.RS 4
+Stays in the focused desktop of its monitor\&.
+.RE
+.PP
+private
+.RS 4
+Tries to keep the same tiling position/size\&.
+.RE
.SH "COMMANDS"
.SS "Window"
.sp
< 1)\&.
.RE
.PP
-\fB\-e\fR, \fB\-\-edge\fR \fIDIR\fR \fIRATIO\fR|pull|push
+\fB\-e\fR, \fB\-\-edge\fR \fIDIR\fR \fIRATIO\fR|\(+-\fIPIXELS\fR
.RS 4
-Set the splitting ratio (or pull, or push) the edge located in the given direction in relation to the selected window\&.
+Set or change the splitting ratio of 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
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|sticky|visible[=on|off]
+\fB\-t\fR, \fB\-\-toggle\fR floating|fullscreen|pseudo_tiled|locked|sticky|private[=on|off]
.RS 4
Set or toggle the given state for the selected window\&.
.RE
Swap the selected desktop with the given desktop\&.
.RE
.PP
+\fB\-b\fR, \fB\-\-bubble\fR \fICYCLE_DIR\fR
+.RS 4
+Bubble the selected desktop in the given direction\&.
+.RE
+.PP
\fB\-r\fR, \fB\-\-remove\fR
.RS 4
Remove the selected desktop\&.
Rotate the tree of the selected desktop\&.
.RE
.PP
+\fB\-E\fR, \fB\-\-equalize\fR
+.RS 4
+Reset the split ratios of 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\&.
.RS 4
Circulate the leaves of the tree of the selected desktop\&.
.RE
+.PP
+\fB\-t\fR, \fB\-\-toggle\fR floating[=on|off]
+.RS 4
+Set or toggle the given state for the selected desktop\&.
+.RE
.RE
.SS "Monitor"
.sp
Remove desktops with the given names\&.
.RE
.PP
-\fB\-n\fR, \fB\-\-rename\fR <new_name>
+\fB\-o\fR, \fB\-\-reorder\-desktops\fR <name>\&...
.RS 4
-Rename the selected monitor\&.
+Reorder the desktops of the selected monitor to match the given order\&.
.RE
.PP
\fB\-d\fR, \fB\-\-reset\-desktops\fR <name>\&...
.RS 4
-Rename, add or remove desktops depending on whether the number of given names is equal, superior or inferior to the number of existing desktops\&.
-.RE
-.PP
-\fB\-s\fR, \fB\-\-swap\fR \fIMONITOR_SEL\fR
-.RS 4
-Swap the selected monitor with the given monitor\&.
-.RE
-.RE
-.SS "Tag"
-.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
-tag \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\-l\fR, \fB\-\-list\fR
-.RS 4
-List the tags\&.
-.RE
-.PP
-\fB\-a\fR, \fB\-\-add\fR <name>\&...
-.RS 4
-Create tags with the given names\&.
-.RE
-.PP
-\fB\-r\fR, \fB\-\-remove\fR <name>|^<n>\&...
-.RS 4
-Remove tags with the given names or indexes\&.
-.RE
-.PP
-\fB\-e\fR, \fB\-\-enumerate\-tags\fR <name>\&...
-.RS 4
-Rename, add or remove tags depending on whether the number of given names is equal, superior or inferior to the number of existing tags\&.
+Rename, add or remove desktops depending on whether the number of given names is equal, superior or inferior to the number of existing desktops\&. Incidentally reset the settings of the existing desktops\&.
.RE
.PP
-\fB\-d\fR, \fB\-\-desktop\fR \fIDESKTOP_SEL\fR
-.RS 4
-Select the given desktop as target for the
-\fB\-s\fR
-and
-\fB\-t\fR
-options\&.
-.RE
-.PP
-\fB\-w\fR, \fB\-\-window\fR \fIWINDOW_SEL\fR
-.RS 4
-Select the given window as target for the
-\fB\-s\fR
-and
-\fB\-t\fR
-options\&.
-.RE
-.PP
-\fB\-s\fR, \fB\-\-set\-tags\fR (<name>|^<n>\&...)|all
+\fB\-n\fR, \fB\-\-rename\fR <new_name>
.RS 4
-Set the tags of the selected object\&.
+Rename the selected monitor\&.
.RE
.PP
-\fB\-t\fR, \fB\-\-toggle\-tags\fR (<name>|^<n>)[=on|off]\&...
+\fB\-s\fR, \fB\-\-swap\fR \fIMONITOR_SEL\fR
.RS 4
-Toggle the tags of the selected object\&.
+Swap the selected monitor with the given monitor\&.
.RE
.RE
.SS "Query"
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\&.
.RS 4
Enable or disable the recording of window focus history\&.
.RE
+.PP
+\fB\-\-subscribe\fR (all|report|monitor|desktop|window|\&...)*
+.RS 4
+Continuously print status information\&.
+.RE
+.PP
+\fB\-\-get\-status\fR
+.RS 4
+Print the current status information\&.
+.RE
.RE
.SS "Pointer"
.sp
\fBOptions\fR
.RS 4
.PP
+\fB\-g\fR, \fB\-\-grab\fR focus|move|resize_side|resize_corner
+.RS 4
+Initiate the given pointer action\&.
+.RE
+.PP
\fB\-t\fR, \fB\-\-track\fR <x> <y>
.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
+\fB\-u\fR, \fB\-\-ungrab\fR
.RS 4
-Perform the given pointer action\&.
+Terminate the current pointer action\&.
.RE
.RE
.SS "Rule"
\fBOptions\fR
.RS 4
.PP
-\fB\-a\fR, \fB\-\-add\fR <class_name>|<instance_name> [\-d \fIDESKTOP_SEL\fR [\-\-follow]] [\-\-tags <name>|^<n>[,\&...]][\-\-floating] [\-\-fullscreen] [\-\-locked] [\-\-sticky] [\-\-focus] [\-\-frame] [\-\-unmanage] [\-\-one\-shot]
+\fB\-a\fR, \fB\-\-add\fR <class_name>|<instance_name>|* [\fB\-o\fR|\fB\-\-one\-shot\fR] [monitor=MONITOR_SEL|desktop=DESKTOP_SEL|window=WINDOW_SEL] [(floating|fullscreen|pseudo_tiled|locked|sticky|private|center|follow|manage|focus|border)=(on|off)] [split_dir=DIR] [split_ratio=RATIO]
.RS 4
Create a new rule\&.
.RE
.PP
-\fB\-r\fR, \fB\-\-remove\fR <name>|^<n>|tail|head\&...
+\fB\-r\fR, \fB\-\-remove\fR ^<n>|head|tail|<class_name>|<instance_name>|*\&...
.RS 4
-Remove the rules with the given names or indexes\&.
+Remove the given rules\&.
.RE
.PP
-\fB\-l\fR, \fB\-\-list\fR [<name>]
+\fB\-l\fR, \fB\-\-list\fR [<class_name>|<instance_name>|*]
.RS 4
List the rules\&.
.RE
\fBGeneral Syntax\fR
.RS 4
.PP
-config [\-m \fIMONITOR_SEL\fR|\-d \fIDESKTOP_SEL\fR] <key> [<value>]
+config [\-m \fIMONITOR_SEL\fR|\-d \fIDESKTOP_SEL\fR|\-w \fIWINDOW_SEL\fR] <key> [<value>]
.RS 4
Get or set the value of <key>\&.
.RE
Quit with an optional exit status\&.
.RE
.RE
+.SH "EXIT CODES"
+.sp
+If the server can\(cqt handle a message, \fBbspc\fR will return with one of the following exit codes:
+.PP
+1
+.RS 4
+Failure\&.
+.RE
+.PP
+2
+.RS 4
+Syntax error\&.
+.RE
+.PP
+3
+.RS 4
+Unknown command\&.
+.RE
.SH "SETTINGS"
.sp
-Colors are either X color names or \fI#RRGGBB\fR, booleans are \fItrue\fR or \fIfalse\fR\&.
+Colors are either \fI#RRGGBB\fR or X color names, booleans are \fItrue\fR, \fIon\fR, \fIfalse\fR or \fIoff\fR\&.
.sp
-All the boolean settings are \fIfalse\fR by default\&.
+All the boolean settings are \fIfalse\fR by default unless stated otherwise\&.
.SS "Global Settings"
.PP
\fIfocused_border_color\fR
Color of the border of an unfocused sticky window\&.
.RE
.PP
-\fIurgent_border_color\fR
+\fIfocused_private_border_color\fR
.RS 4
-Color of the border of an urgent window\&.
+Color of the border of a focused private window of a focused monitor\&.
.RE
.PP
-\fIfocused_frame_opacity\fR
+\fIactive_private_border_color\fR
.RS 4
-Opacity of a focused frame of a focused monitor\&.
+Color of the border of a focused private window of an unfocused monitor\&.
.RE
.PP
-\fIactive_frame_opacity\fR
+\fInormal_private_border_color\fR
.RS 4
-Opacity of a focused frame of an unfocused monitor\&.
+Color of the border of an unfocused private window\&.
.RE
.PP
-\fInormal_frame_opacity\fR
+\fIurgent_border_color\fR
.RS 4
-Opacity of an unfocused frame\&.
+Color of the border of an urgent window\&.
.RE
.PP
\fIsplit_ratio\fR
Default split ratio\&.
.RE
.PP
-\fIgrowth_factor\fR
+\fIstatus_prefix\fR
.RS 4
-Intensity of the growth involved in pulling or pushing an edge\&.
+Prefix prepended to each of the status lines\&.
+.RE
+.PP
+\fIexternal_rules_command\fR
+.RS 4
+External command used to retrieve rule consequences\&. The command will receive the the ID of the window being processed as its first argument and the class and instance names as second and third arguments\&. The output of that command must have the following format:
+\fBkey1=value1 key2=value2 \&...\fR
+(the valid key/value pairs are given in the description of the
+\fIrule\fR
+command)\&.
+.RE
+.PP
+\fIinitial_polarity\fR
+.RS 4
+On which child should a new window be attached when adding a window on a single window tree in automatic mode\&. Accept the following values:
+\fBfirst_child\fR,
+\fBsecond_child\fR\&.
.RE
.PP
\fIhistory_aware_focus\fR
Give priority to the focus history when focusing nodes\&.
.RE
.PP
+\fIfocus_by_distance\fR
+.RS 4
+Base focusing on distances between windows\&.
+.RE
+.PP
\fIborderless_monocle\fR
.RS 4
-Remove borders for tiled windows in monocle mode\&.
+Remove borders of tiled windows for the
+\fBmonocle\fR
+desktop layout\&.
.RE
.PP
\fIgapless_monocle\fR
.RS 4
-Remove gaps for tiled windows in monocle mode\&.
+Remove gaps of tiled windows for the
+\fBmonocle\fR
+desktop layout\&.
+.RE
+.PP
+\fIleaf_monocle\fR
+.RS 4
+Set the desktop layout to
+\fBmonocle\fR
+if there\(cqs only one tiled window in the tree\&.
.RE
.PP
\fIfocus_follows_pointer\fR
Focus the window under the pointer\&.
.RE
.PP
+\fIpointer_follows_focus\fR
+.RS 4
+When focusing a window, put the pointer at its center\&.
+.RE
+.PP
\fIpointer_follows_monitor\fR
.RS 4
When focusing a monitor, put the pointer at its center\&.
atom of each window according to its floating state\&.
.RE
.PP
-\fIhonor_ewmh_focus\fR
+\fIignore_ewmh_focus\fR
.RS 4
-Honor EWMH requests to focus a window\&.
+Ignore EWMH focus requests coming from applications\&.
.RE
-.SS "Monitor Settings"
.PP
-\fItop_padding\fR, \fIright_padding\fR, \fIbottom_padding\fR, \fIleft_padding\fR
+\fIcenter_pseudo_tiled\fR
.RS 4
-Padding space added at the sides of the monitor\&.
+Center pseudo tiled windows into their tiling rectangles\&. Defaults to
+\fItrue\fR\&.
.RE
-.SS "Desktop Settings"
.PP
-\fIwindow_gap\fR
+\fIremove_disabled_monitors\fR
.RS 4
-Size of the gap that separates windows\&.
+Consider disabled monitors as disconnected\&.
+.RE
+.PP
+\fIremove_unplugged_monitors\fR
+.RS 4
+Remove unplugged monitors\&.
+.RE
+.PP
+\fImerge_overlapping_monitors\fR
+.RS 4
+Merge overlapping monitors (the bigger remains)\&.
+.RE
+.SS "Monitor and Desktop 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 or desktop\&.
.RE
+.SS "Default, Desktop Default and Window Settings"
.PP
\fIborder_width\fR
.RS 4
Window border width\&.
.RE
-.SH "INTERNAL STATE FORMAT"
-.sp
-If a \fIPANEL_FIFO\fR is specified, \fBbspwm\fR will write informations regarding its current state to it\&.
+.SS "Default and Desktop Settings"
+.PP
+\fIwindow_gap\fR
+.RS 4
+Size of the gap that separates windows\&.
+.RE
+.SH "STATUS FORMAT"
.sp
-Those informations are composed of items separated by colons\&.
+Status information is composed of items separated by colons\&.
.sp
-Each item as the form \fI<type><value>\fR where \fI<type>\fR is the first character of the item\&.
+Each item has the form \fI<type><value>\fR where \fI<type>\fR is the first character of the item\&.
.PP
\fIM<monitor_name>\fR
.RS 4
Urgent unfocused desktop\&.
.RE
.PP
-\fIL(tiled|monocle)\fR
-.RS 4
-Layout of the focused desktop of the focused monitor\&.
-.RE
-.PP
-\fIT<tag_name>\fR
-.RS 4
-Selected tag of the focused desktop of the focused monitor\&.
-.RE
-.PP
-\fIt<tag_name>\fR
+\fIL(T|M)\fR
.RS 4
-Non\-selected tag of the focused desktop of the focused monitor\&.
+Layout of the focused desktop of a monitor\&.
.RE
.SH "ENVIRONMENT VARIABLES"
.PP
\fBbspc\fR
and
\fBbspwm\fR\&. If it isn\(cqt defined, then the following path is used:
-\fI/tmp/bspwm\-socket\fR\&.
+\fI/tmp/bspwm<host_name>_<display_number>_<screen_number>\-socket\fR\&.
.RE
.SH "PANELS"
.sp
.sp -1
.IP \(bu 2.3
.\}
-A custom panel if the
-\fI\-s\fR
-flag is used (have a look at the files in
+A custom panel (have a look at the files in
\fIexamples/panel\fR)\&.
.RE
.SH "KEY FEATURES"
.sp -1
.IP \(bu 2.3
.\}
-Multiple monitors support (via
-\fIRandR\fR)\&.
+Multiple monitors support\&.
.RE
.sp
.RS 4
.sp -1
.IP \(bu 2.3
.\}
-EWMH support (\fBtint2\fR
-works)\&.
+EWMH support\&.
.RE
.sp
.RS 4