-NAME = bspwm
VERSION = 0.7
CC = gcc
mkdir -p "$(DESTDIR)$(BINPREFIX)"
cp -p bsp{wm,c} "$(DESTDIR)$(BINPREFIX)"
mkdir -p "$(DESTDIR)$(MANPREFIX)"/man1
- cp -Pp bsp{wm,c}.1 "$(DESTDIR)$(MANPREFIX)"/man1
+ cp -Pp doc/bsp{wm,c}.1 "$(DESTDIR)$(MANPREFIX)"/man1
mkdir -p "$(DESTDIR)$(CPLPREFIX)"
cp -p bash_completion "$(DESTDIR)$(CPLPREFIX)"/bspc
rm -f "$(DESTDIR)$(CPLPREFIX)"/bspc
doc:
- pandoc --no-wrap -t json doc/README.md | runhaskell doc/man_filter.hs | pandoc --no-wrap -f json -t man --template doc/man.template -V name=$(NAME) -o $(NAME).1
- pandoc --no-wrap -f markdown -t asciidoc doc/README.md -o README.asciidoc
- patch -p 1 -i doc/quirks.patch
+ a2x -v -d manpage -f manpage -a revnumber=$(VERSION) doc/bspwm.1.txt
+ cat doc/header.txt doc/bspwm.1.txt > README.asciidoc
clean:
rm -f $(WM_OBJ) $(CL_OBJ) bsp{wm,c}
image:https://github.com/baskerville/bspwm/raw/master/logo/bspwm-logo.png[logo]
-[[synopsis]]
+:man source: Bspwm
+:man version: {revnumber}
+:man manual: Bspwm Manual
+
+bspwm(1)
+========
+
+Name
+----
+
+bspwm - Tiling window manager based on binary space partitioning
+
Synopsis
--------
*bspc* _MESSAGE_ [_ARGUMENTS_] [_OPTIONS_]
-[[description]]
Description
-----------
It is controlled and configured via *bspc*.
-[[configuration]]
Configuration
-------------
Example configuration files can be found in the *examples* directory.
-[[splitting-modes]]
Splitting Modes
---------------
+-------------------------+ +-------------------------+
---------------------------------------------------------------
-[[containers]]
Containers
----------
Each desktop contains at most one tree.
-[[messages]]
Messages
--------
+
*get* _SETTING_::
- Return the value of the given setting.
+ Return the value of the given setting.
+
*set* _SETTING_ _VALUE_::
- Set the value of the given setting.
+ Set the value of the given setting.
+
*list* [_DESKTOP_NAME_]::
- Output the internal representation of the window tree.
+ Output the internal representation of the window tree.
+
*list_desktops* [*--quiet*]::
- Perform a dump of each desktop for the current monitor.
+ Perform a dump of each desktop for the current monitor.
+
*list_monitors* [*--quiet*]::
- Perform a dump of each monitor.
+ Perform a dump of each monitor.
+
*list_history*::
- Return the node focus history of each desktop.
+ Return the node focus history of each desktop.
+
*list_windows*::
- Return the list of managed windows (i.e. their identifiers).
+ Return the list of managed windows (i.e. their identifiers).
+
*list_rules*::
- Return the list of rules.
+ Return the list of rules.
+
*presel* _left_|_right_|_up_|_down_ [_SPLIT_RATIO_]::
- Switch to manual mode and select the splitting direction.
+ Switch to manual mode and select the splitting direction.
+
*cancel*::
- Switch to automatic mode.
+ Switch to automatic mode.
+
*ratio* _VALUE_::
- Set the splitting ratio of the focused window.
+ Set the splitting ratio of the focused window.
+
*pad* _MONITOR_NAME_ [_TOP_PADDING_ [_RIGHT_PADDING_ [_BOTTOM_PADDING_ [_LEFT_PADDING_]]]]::
- Set the padding of the given monitor.
+ Set the padding of the given monitor.
+
*focus* _left_|_right_|_up_|_down_::
- Focus the neighbor window situated in the given direction.
+ Focus the neighbor window situated in the given direction.
+
*shift* _left_|_right_|_up_|_down_::
- Exchange the current window with the given neighbor.
+ Exchange the current window with the given neighbor.
+
*swap* [*--keep-focus*]::
- Swap the focused window with the last focused window.
+ Swap the focused window with the last focused window.
+
*push* _left_|_right_|_up_|_down_::
- Push the fence located in the given direction.
+ Push the fence located in the given direction.
+
*pull* _left_|_right_|_up_|_down_::
- Pull the fence located in the given direction.
+ Pull the fence located in the given direction.
+
*fence_ratio* _left_|_right_|_up_|_down_::
- Set the splitting ratio of the fence located in the given direction.
+ Set the splitting ratio of the fence located in the given direction.
+
*cycle* _next_|_prev_ [*--skip-floating*|*--skip-tiled*|*--skip-class-equal*|*--skip-class-differ*]::
- Focus the next or previous window matching the given constraints.
+ Focus the next or previous window matching the given constraints.
+
*nearest* _older_|_newer_ [*--skip-floating*|*--skip-tiled*|*--skip-class-equal*|*--skip-class-differ*]::
- Focus the nearest window matching the given constraints.
+ Focus the nearest window matching the given constraints.
+
*biggest*::
- Return the ID of the biggest tiled window.
+ Return the ID of the biggest tiled window.
+
*circulate* _forward_|_backward_::
- Circulate the leaves in the given direction.
+ Circulate the leaves in the given direction.
+
*grab_pointer* _focus_|_move_|_resize_side_|_resize_corner_::
- Begin the specified pointer action.
+ Begin the specified pointer action.
+
*track_pointer* _ROOT_X_ _ROOT_Y_::
- Pass the pointer root coordinates for the current pointer action.
+ Pass the pointer root coordinates for the current pointer action.
+
*ungrab_pointer*::
- End the current pointer action.
+ End the current pointer action.
+
*toggle_fullscreen*::
- Toggle the fullscreen state of the current window.
+ Toggle the fullscreen state of the current window.
+
*toggle_floating*::
- Toggle the floating state of the current window.
+ Toggle the floating state of the current window.
+
*toggle_locked*::
- Toggle the locked state of the current window (locked windows will not respond to the *close* message).
+ Toggle the locked state of the current window (locked windows will not respond to the *close* message).
+
*toggle_visibility*::
- Toggle the visibility of all the managed windows.
+ Toggle the visibility of all the managed windows.
+
*close*::
- Close the focused window.
+ Close the focused window.
+
*kill*::
- Kill the focused window.
+ Kill the focused window.
+
*send_to* _DESKTOP_NAME_ [*--follow*]::
- Send the focused window to the given desktop.
+ Send the focused window to the given desktop.
+
*drop_to* _next_|_prev_ [*--follow*]::
- Send the focused window to the next or previous desktop.
+ Send the focused window to the next or previous desktop.
+
*send_to_monitor* _MONITOR_NAME_ [*--follow*]::
- Send the focused window to the given monitor.
+ Send the focused window to the given monitor.
+
*drop_to_monitor* _next_|_prev_ [*--follow*]::
- Send the focused window to the next or previous monitor.
+ Send the focused window to the next or previous monitor.
+
*use* _DESKTOP_NAME_::
- Select the given desktop.
+ Select the given desktop.
+
*use_monitor* _MONITOR_NAME_::
- Select the given monitor.
+ Select the given monitor.
+
*alternate*::
- Alternate between the current and the last focused window.
+ Alternate between the current and the last focused window.
+
*alternate_desktop*::
- Alternate between the current and the last focused desktop.
+ Alternate between the current and the last focused desktop.
+
*alternate_monitor*::
- Alternate between the current and the last focused monitor.
+ Alternate between the current and the last focused monitor.
+
*add* _DESKTOP_NAME_ ...::
- Make new desktops with the given names.
+ Make new desktops with the given names.
+
*add_in* _MONITOR_NAME_ _DESKTOP_NAME_ ...::
- Make new desktops with the given names in the given monitor.
+ Make new desktops with the given names in the given monitor.
+
*rename_monitor* _CURRENT_NAME_ _NEW_NAME_::
- Rename the monitor named _CURRENT_NAME_ to _NEW_NAME_.
+ Rename the monitor named _CURRENT_NAME_ to _NEW_NAME_.
+
*rename* _CURRENT_NAME_ _NEW_NAME_::
- Rename the desktop named _CURRENT_NAME_ to _NEW_NAME_.
+ Rename the desktop named _CURRENT_NAME_ to _NEW_NAME_.
+
*remove_desktop* _DESKTOP_NAME_ ...::
- Remove the given desktops.
+ Remove the given desktops.
+
*send_desktop_to* _MONITOR_NAME_ [*--follow*]::
- Send the current desktop to the given monitor.
+ Send the current desktop to the given monitor.
+
*cycle_monitor* _next_|_prev_::
- Select the next or previous monitor.
+ Select the next or previous monitor.
+
*cycle_desktop* _next_|_prev_ [*--skip-free*|*--skip-occupied*]::
- Select the next or previous desktop.
+ Select the next or previous desktop.
+
*layout* _monocle_|_tiled_ [_DESKTOP_NAME_ ...]::
- Set the layout of the given desktops (current if none given).
+ Set the layout of the given desktops (current if none given).
+
*cycle_layout*::
- Cycle the layout of the current desktop.
+ Cycle the layout of the current desktop.
+
*rotate* _clockwise_|_counter_clockwise_|_full_cycle_::
- Rotate the window tree.
+ Rotate the window tree.
+
*flip* _horizontal_|_vertical_::
- Flip the window tree.
+ Flip the window tree.
+
*balance*::
- Adjust the split ratios so that all windows occupy the same area.
+ Adjust the split ratios so that all windows occupy the same area.
+
*rule* _PATTERN_ [_DESKTOP_NAME_] [_floating_] [_follow_]::
- Create a new rule (_PATTERN_ must match the class or instance name).
+ Create a new rule (_PATTERN_ must match the class or instance name).
+
*remove_rule* _UID_ ...::
- Remove the rules with the given _UID_s.
+ Remove the rules with the given _UIDs_.
+
*put_status*::
- Output the current state to the panel fifo.
+ Output the current state to the panel fifo.
+
*adopt_orphans*::
- Manage all the unmanaged windows remaining from a previous session.
+ Manage all the unmanaged windows remaining from a previous session.
+
*restore_layout* _FILE_PATH_::
- Restore the layout of each desktop from the content of _FILE_PATH_.
+ Restore the layout of each desktop from the content of _FILE_PATH_.
+
*restore_history* _FILE_PATH_::
- Restore the history of each desktop from the content of _FILE_PATH_.
+ Restore the history of each desktop from the content of _FILE_PATH_.
+
*quit* [_EXIT_STATUS_]::
- Quit.
+ Quit.
-[[settings]]
Settings
--------
-
Colors are either http://en.wikipedia.org/wiki/X11_color_names[X color names] or _#RRGGBB_, booleans are _true_ or _false_.
All the boolean settings are _false_ by default.
+
_focused_border_color_::
- Color of the border of a focused window of a focused monitor.
+ Color of the border of a focused window of a focused monitor.
+
_active_border_color_::
- Color of the border of a focused window of an unfocused monitor.
+ Color of the border of a focused window of an unfocused monitor.
+
_normal_border_color_::
- Color of the border of an unfocused window.
+ Color of the border of an unfocused window.
+
_presel_border_color_::
- Color of the *presel* message feedback.
+ Color of the *presel* message feedback.
+
_focused_locked_border_color_::
- Color of the border of a focused locked window of a focused monitor.
+ Color of the border of a focused locked window of a focused monitor.
+
_active_locked_border_color_::
- Color of the border of a focused locked window of an unfocused monitor.
+ Color of the border of a focused locked window of an unfocused monitor.
+
_normal_locked_border_color_::
- Color of the border of an unfocused locked window.
+ Color of the border of an unfocused locked window.
+
_urgent_border_color_::
- Color of the border of an urgent window.
+ Color of the border of an urgent window.
+
_border_width_::
- Window border width.
+ Window border width.
+
_window_gap_::
- Value of the gap that separates windows.
+ Value of the gap that separates windows.
+
_split_ratio_::
- Default split ratio.
+ Default split ratio.
+
_top_padding_, _right_padding_, _bottom_padding_, _left_padding_::
- Padding space added at the sides of the current monitor.
+ Padding space added at the sides of the current monitor.
+
_wm_name_::
- The value that shall be used for the __NET_WM_NAME_ property of the root window.
+ The value that shall be used for the '_NET_WM_NAME' property of the root window.
+
_borderless_monocle_::
- Remove borders for tiled windows in monocle mode.
+ Remove borders for tiled windows in monocle mode.
+
_gapless_monocle_::
- Remove gaps for tiled windows in monocle mode.
+ Remove gaps for tiled windows in monocle mode.
+
_focus_follows_pointer_::
- Focus the window under the pointer.
+ Focus the window under the pointer.
+
_pointer_follows_monitor_::
- When focusing a monitor, put the pointer at its center.
+ When focusing a monitor, put the pointer at its center.
+
_adaptative_raise_::
- Prevent floating windows from being raised when they might cover other floating windows.
+ Prevent floating windows from being raised when they might cover other floating windows.
+
_apply_shadow_property_::
- Enable shadows for floating windows via the __COMPTON_SHADOW_ property.
+ Enable shadows for floating windows via the '_COMPTON_SHADOW' property.
+
_auto_alternate_::
- Interpret two consecutive identical *use* messages as an *alternate* message.
+ Interpret two consecutive identical *use* messages as an *alternate* message.
+
_focus_by_distance_::
- Use window or leaf distance for focus movement.
+ Use window or leaf distance for focus movement.
+
_history_aware_focus_::
- Give priority to the focus history when focusing nodes.
+ Give priority to the focus history when focusing nodes.
-[[environment-variables]]
Environment Variables
---------------------
_BSPWM_SOCKET_::
The path of the socket used for the communication between *bspc* and *bspwm*.
-[[panels]]
Panels
------
* Any EWMH compliant panel (e.g.: _tint2_, _bmpanel2_, etc.).
* A custom panel if the _-s_ flag is used (have a look at the files in _examples/panel_).
-[[key-features]]
Key Features
------------
* EWMH support (*tint2* works).
* Automatic and manual modes.
-[[mailing-list]]
+Contributors
+------------
+
+* Ivan Kanakarakis <ivan.kanak at gmail.com>
+* Thomas Adam <thomas at xteddy.org>
+
+Author
+------
+
+Bastien Dejean <baskerville at lavabit.com>
+
Mailing List
------------
bspwm at librelist.com
+
+////
+vim: set ft=asciidoc:
+////
+++ /dev/null
-bspwm.1
\ No newline at end of file
+++ /dev/null
-% Bspwm User's Guide
-% Bastien Dejean
-% June 23, 2013
-
-![logo](https://github.com/baskerville/bspwm/raw/master/logo/bspwm-logo.png)
-
-# Synopsis
-
-**bspwm** [**-h**|**-v**|**-s** *PANEL\_FIFO*|**-p** *PANEL\_PREFIX*]
-
-**bspc** *MESSAGE* [*ARGUMENTS*] [*OPTIONS*]
-
-# Description
-
-**bspwm** is a tiling window manager that represents windows as the leaves of a full binary tree.
-
-It is controlled and configured via **bspc**.
-
-# Configuration
-
-**bspwm** have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.
-
-Its configuration file is *$XDG_CONFIG_HOME/bspwm/autostart*.
-
-Keyboard and pointer bindings are defined with [sxhkd](https://github.com/baskerville/sxhkd).
-
-Example configuration files can be found in the **examples** directory.
-
-# Splitting Modes
-
-There is only two splitting modes: *automatic* and *manual*.
-
-The default mode is *automatic*. The *manual* mode is entered by sending a **presel** message.
-
-Example: insertion of a new node (number 4) into the given tree in
-*automatic* mode:
-
- b c
- / \ / \
- 3 a --> 4 b
- ^ / \ ^ / \
- 2 1 3 a
- / \
- 2 1
- +-------------------------+ +-------------------------+
- | | | | | |
- | | 2 | | | 3 |
- | | | | | |
- | 3 |------------| --> | 4 |------------|
- | ^ | | | ^ | | |
- | | 1 | | | 1 | 2 |
- | | | | | | |
- +-------------------------+ +-------------------------+
-
-Same departure, but the mode is *manual*, and a **presel** *up* message
-was sent beforehand:
-
- b b
- / \ / \
- 3 a --> c a
- ^ / \ / \ / \
- 2 1 4 3 2 1
- ^
- +-------------------------+ +-------------------------+
- | | | | | |
- | | 2 | | 4 | 2 |
- | | | | ^ | |
- | 3 |------------| --> |------------|------------|
- | ^ | | | | |
- | | 1 | | 3 | 1 |
- | | | | | |
- +-------------------------+ +-------------------------+
-
-# Containers
-
-Each monitor contains at least one desktop.
-
-Each desktop contains at most one tree.
-
-# Messages
-
-**get** *SETTING*
-: Return the value of the given setting.
-
-**set** *SETTING* *VALUE*
-: Set the value of the given setting.
-
-**list** [*DESKTOP\_NAME*]
-: Output the internal representation of the window tree.
-
-**list\_desktops** [**--quiet**]
-: Perform a dump of each desktop for the current monitor.
-
-**list\_monitors** [**--quiet**]
-: Perform a dump of each monitor.
-
-**list\_history**
-: Return the node focus history of each desktop.
-
-**list\_windows**
-: Return the list of managed windows (i.e. their identifiers).
-
-**list\_rules**
-: Return the list of rules.
-
-**presel** *left*|*right*|*up*|*down* [*SPLIT\_RATIO*]
-: Switch to manual mode and select the splitting direction.
-
-**cancel**
-: Switch to automatic mode.
-
-**ratio** *VALUE*
-: Set the splitting ratio of the focused window.
-
-**pad** *MONITOR\_NAME* [*TOP\_PADDING* [*RIGHT\_PADDING* [*BOTTOM\_PADDING* [*LEFT\_PADDING*]]]]
-: Set the padding of the given monitor.
-
-**focus** *left*|*right*|*up*|*down*
-: Focus the neighbor window situated in the given direction.
-
-**shift** *left*|*right*|*up*|*down*
-: Exchange the current window with the given neighbor.
-
-**swap** [**--keep-focus**]
-: Swap the focused window with the last focused window.
-
-**push** *left*|*right*|*up*|*down*
-: Push the fence located in the given direction.
-
-**pull** *left*|*right*|*up*|*down*
-: Pull the fence located in the given direction.
-
-**fence\_ratio** *left*|*right*|*up*|*down*
-: Set the splitting ratio of the fence located in the given direction.
-
-**cycle** *next*|*prev* [**--skip-floating**|**--skip-tiled**|**--skip-class-equal**|**--skip-class-differ**]
-: Focus the next or previous window matching the given constraints.
-
-**nearest** *older*|*newer* [**--skip-floating**|**--skip-tiled**|**--skip-class-equal**|**--skip-class-differ**]
-: Focus the nearest window matching the given constraints.
-
-**biggest**
-: Return the ID of the biggest tiled window.
-
-**circulate** *forward*|*backward*
-: Circulate the leaves in the given direction.
-
-**grab\_pointer** *focus*|*move*|*resize\_side*|*resize\_corner*
-: Begin the specified pointer action.
-
-**track\_pointer** *ROOT\_X* *ROOT\_Y*
-: Pass the pointer root coordinates for the current pointer action.
-
-**ungrab\_pointer**
-: End the current pointer action.
-
-**toggle\_fullscreen**
-: Toggle the fullscreen state of the current window.
-
-**toggle\_floating**
-: Toggle the floating state of the current window.
-
-**toggle\_locked**
-: Toggle the locked state of the current window (locked windows will not respond to the **close** message).
-
-**toggle\_visibility**
-: Toggle the visibility of all the managed windows.
-
-**close**
-: Close the focused window.
-
-**kill**
-: Kill the focused window.
-
-**send\_to** *DESKTOP\_NAME* [**--follow**]
-: Send the focused window to the given desktop.
-
-**drop\_to** *next*|*prev* [**--follow**]
-: Send the focused window to the next or previous desktop.
-
-**send\_to\_monitor** *MONITOR\_NAME* [**--follow**]
-: Send the focused window to the given monitor.
-
-**drop\_to\_monitor** *next*|*prev* [**--follow**]
-: Send the focused window to the next or previous monitor.
-
-**use** *DESKTOP\_NAME*
-: Select the given desktop.
-
-**use\_monitor** *MONITOR\_NAME*
-: Select the given monitor.
-
-**alternate**
-: Alternate between the current and the last focused window.
-
-**alternate\_desktop**
-: Alternate between the current and the last focused desktop.
-
-**alternate\_monitor**
-: Alternate between the current and the last focused monitor.
-
-**add** *DESKTOP\_NAME* ...
-: Make new desktops with the given names.
-
-**add\_in** *MONITOR\_NAME* *DESKTOP\_NAME* ...
-: Make new desktops with the given names in the given monitor.
-
-**rename\_monitor** *CURRENT\_NAME* *NEW\_NAME*
-: Rename the monitor named *CURRENT\_NAME* to *NEW\_NAME*.
-
-**rename** *CURRENT\_NAME* *NEW\_NAME*
-: Rename the desktop named *CURRENT\_NAME* to *NEW\_NAME*.
-
-**remove\_desktop** *DESKTOP\_NAME* ...
-: Remove the given desktops.
-
-**send\_desktop\_to** *MONITOR\_NAME* [**--follow**]
-: Send the current desktop to the given monitor.
-
-**cycle\_monitor** *next*|*prev*
-: Select the next or previous monitor.
-
-**cycle\_desktop** *next*|*prev* [**--skip-free**|**--skip-occupied**]
-: Select the next or previous desktop.
-
-**layout** *monocle*|*tiled* [*DESKTOP\_NAME* ...]
-: Set the layout of the given desktops (current if none given).
-
-**cycle\_layout**
-: Cycle the layout of the current desktop.
-
-**rotate** *clockwise*|*counter\_clockwise*|*full\_cycle*
-: Rotate the window tree.
-
-**flip** *horizontal*|*vertical*
-: Flip the window tree.
-
-**balance**
-: Adjust the split ratios so that all windows occupy the same area.
-
-**rule** *PATTERN* [*DESKTOP\_NAME*] [*floating*] [*follow*]
-: Create a new rule (*PATTERN* must match the class or instance name).
-
-**remove\_rule** *UID* ...
-: Remove the rules with the given *UID*s.
-
-**put\_status**
-: Output the current state to the panel fifo.
-
-**adopt\_orphans**
-: Manage all the unmanaged windows remaining from a previous session.
-
-**restore\_layout** *FILE\_PATH*
-: Restore the layout of each desktop from the content of *FILE\_PATH*.
-
-**restore\_history** *FILE\_PATH*
-: Restore the history of each desktop from the content of *FILE\_PATH*.
-
-**quit** [*EXIT\_STATUS*]
-: Quit.
-
-# Settings
-
-Colors are either [X color names](http://en.wikipedia.org/wiki/X11\_color\_names) or *#RRGGBB*, booleans are *true* or *false*.
-
-All the boolean settings are *false* by default.
-
-*focused\_border\_color*
-: Color of the border of a focused window of a focused monitor.
-
-*active\_border\_color*
-: Color of the border of a focused window of an unfocused monitor.
-
-*normal\_border\_color*
-: Color of the border of an unfocused window.
-
-*presel\_border\_color*
-: Color of the **presel** message feedback.
-
-*focused\_locked\_border\_color*
-: Color of the border of a focused locked window of a focused monitor.
-
-*active\_locked\_border\_color*
-: Color of the border of a focused locked window of an unfocused monitor.
-
-*normal\_locked\_border\_color*
-: Color of the border of an unfocused locked window.
-
-*urgent\_border\_color*
-: Color of the border of an urgent window.
-
-*border\_width*
-: Window border width.
-
-*window\_gap*
-: Value of the gap that separates windows.
-
-*split\_ratio*
-: Default split ratio.
-
-*top\_padding*, *right\_padding*, *bottom\_padding*, *left\_padding*
-: Padding space added at the sides of the current monitor.
-
-*wm\_name*
-: The value that shall be used for the *\_NET\_WM\_NAME* property of the root window.
-
-*borderless\_monocle*
-: Remove borders for tiled windows in monocle mode.
-
-*gapless\_monocle*
-: Remove gaps for tiled windows in monocle mode.
-
-*focus\_follows\_pointer*
-: Focus the window under the pointer.
-
-*pointer\_follows\_monitor*
-: When focusing a monitor, put the pointer at its center.
-
-*adaptative\_raise*
-: Prevent floating windows from being raised when they might cover other floating windows.
-
-*apply\_shadow\_property*
-: Enable shadows for floating windows via the *\_COMPTON\_SHADOW* property.
-
-*auto\_alternate*
-: Interpret two consecutive identical **use** messages as an **alternate** message.
-
-*focus\_by\_distance*
-: Use window or leaf distance for focus movement.
-
-*history\_aware\_focus*
-: Give priority to the focus history when focusing nodes.
-
-# Environment Variables
-
-*BSPWM_SOCKET*
-: The path of the socket used for the communication between **bspc** and **bspwm**.
-
-# Panels
-
-- Any EWMH compliant panel (e.g.: *tint2*, *bmpanel2*, etc.).
-- A custom panel if the *-s* flag is used (have a look at the files in *examples/panel*).
-
-# Key Features
-
-- Configured and controlled through messages.
-- Multiple monitors support (via *RandR*).
-- EWMH support (**tint2** works).
-- Automatic and manual modes.
-
-# Mailing List
-
-bspwm at librelist.com
--- /dev/null
+#
+# Borrowed from pacman
+#
+
+[macros]
+(?su)[\\]?(?P<name>linkman):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=
+
+[attributes]
+asterisk=*
+plus=+
+caret=^
+startsb=[
+endsb=]
+backslash=\
+tilde=~
+apostrophe='
+backtick=`
+litdd=--
+
+ifdef::backend-docbook[]
+[linkman-inlinemacro]
+{0%{target}}
+{0#<citerefentry>}
+{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
+{0#</citerefentry>}
+endif::backend-docbook[]
+
+ifdef::backend-docbook[]
+ifndef::docbook-xsl-172[]
+# "unbreak" docbook-xsl v1.68 for manpages. v1.69 works with or without this.
+# v1.72 breaks with this because it replaces dots not in roff requests.
+[listingblock]
+<example><title>{title}</title>
+<literallayout>
+|
+</literallayout>
+{title#}</example>
+endif::docbook-xsl-172[]
+endif::backend-docbook[]
--- /dev/null
+bspwm.1
\ No newline at end of file
--- /dev/null
+'\" t
+.\" Title: bspwm
+.\" Author: [see the "Author" section]
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 06/26/2013
+.\" Manual: Bspwm Manual
+.\" Source: Bspwm 0.7
+.\" Language: English
+.\"
+.TH "BSPWM" "1" "06/26/2013" "Bspwm 0\&.7" "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 \- Tiling window manager based on binary space partitioning
+.SH "SYNOPSIS"
+.sp
+\fBbspwm\fR [\fB\-h\fR|\fB\-v\fR|\fB\-s\fR \fIPANEL_FIFO\fR|\fB\-p\fR \fIPANEL_PREFIX\fR]
+.sp
+\fBbspc\fR \fIMESSAGE\fR [\fIARGUMENTS\fR] [\fIOPTIONS\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 "CONFIGURATION"
+.sp
+\fBbspwm\fR have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket\&.
+.sp
+Its configuration file is \fI$XDG_CONFIG_HOME/bspwm/autostart\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
+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 \fBpresel\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 \fBpresel\fR \fIup\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 "MESSAGES"
+.PP
+\fBget\fR \fISETTING\fR
+.RS 4
+Return the value of the given setting\&.
+.RE
+.PP
+\fBset\fR \fISETTING\fR \fIVALUE\fR
+.RS 4
+Set the value of the given setting\&.
+.RE
+.PP
+\fBlist\fR [\fIDESKTOP_NAME\fR]
+.RS 4
+Output the internal representation of the window tree\&.
+.RE
+.PP
+\fBlist_desktops\fR [\fB\-\-quiet\fR]
+.RS 4
+Perform a dump of each desktop for the current monitor\&.
+.RE
+.PP
+\fBlist_monitors\fR [\fB\-\-quiet\fR]
+.RS 4
+Perform a dump of each monitor\&.
+.RE
+.PP
+\fBlist_history\fR
+.RS 4
+Return the node focus history of each desktop\&.
+.RE
+.PP
+\fBlist_windows\fR
+.RS 4
+Return the list of managed windows (i\&.e\&. their identifiers)\&.
+.RE
+.PP
+\fBlist_rules\fR
+.RS 4
+Return the list of rules\&.
+.RE
+.PP
+\fBpresel\fR \fIleft\fR|\fIright\fR|\fIup\fR|\fIdown\fR [\fISPLIT_RATIO\fR]
+.RS 4
+Switch to manual mode and select the splitting direction\&.
+.RE
+.PP
+\fBcancel\fR
+.RS 4
+Switch to automatic mode\&.
+.RE
+.PP
+\fBratio\fR \fIVALUE\fR
+.RS 4
+Set the splitting ratio of the focused window\&.
+.RE
+.PP
+\fBpad\fR \fIMONITOR_NAME\fR [\fITOP_PADDING\fR [\fIRIGHT_PADDING\fR [\fIBOTTOM_PADDING\fR [\fILEFT_PADDING\fR]]]]
+.RS 4
+Set the padding of the given monitor\&.
+.RE
+.PP
+\fBfocus\fR \fIleft\fR|\fIright\fR|\fIup\fR|\fIdown\fR
+.RS 4
+Focus the neighbor window situated in the given direction\&.
+.RE
+.PP
+\fBshift\fR \fIleft\fR|\fIright\fR|\fIup\fR|\fIdown\fR
+.RS 4
+Exchange the current window with the given neighbor\&.
+.RE
+.PP
+\fBswap\fR [\fB\-\-keep\-focus\fR]
+.RS 4
+Swap the focused window with the last focused window\&.
+.RE
+.PP
+\fBpush\fR \fIleft\fR|\fIright\fR|\fIup\fR|\fIdown\fR
+.RS 4
+Push the fence located in the given direction\&.
+.RE
+.PP
+\fBpull\fR \fIleft\fR|\fIright\fR|\fIup\fR|\fIdown\fR
+.RS 4
+Pull the fence located in the given direction\&.
+.RE
+.PP
+\fBfence_ratio\fR \fIleft\fR|\fIright\fR|\fIup\fR|\fIdown\fR
+.RS 4
+Set the splitting ratio of the fence located in the given direction\&.
+.RE
+.PP
+\fBcycle\fR \fInext\fR|\fIprev\fR [\fB\-\-skip\-floating\fR|\fB\-\-skip\-tiled\fR|\fB\-\-skip\-class\-equal\fR|\fB\-\-skip\-class\-differ\fR]
+.RS 4
+Focus the next or previous window matching the given constraints\&.
+.RE
+.PP
+\fBnearest\fR \fIolder\fR|\fInewer\fR [\fB\-\-skip\-floating\fR|\fB\-\-skip\-tiled\fR|\fB\-\-skip\-class\-equal\fR|\fB\-\-skip\-class\-differ\fR]
+.RS 4
+Focus the nearest window matching the given constraints\&.
+.RE
+.PP
+\fBbiggest\fR
+.RS 4
+Return the ID of the biggest tiled window\&.
+.RE
+.PP
+\fBcirculate\fR \fIforward\fR|\fIbackward\fR
+.RS 4
+Circulate the leaves in the given direction\&.
+.RE
+.PP
+\fBgrab_pointer\fR \fIfocus\fR|\fImove\fR|\fIresize_side\fR|\fIresize_corner\fR
+.RS 4
+Begin the specified pointer action\&.
+.RE
+.PP
+\fBtrack_pointer\fR \fIROOT_X\fR \fIROOT_Y\fR
+.RS 4
+Pass the pointer root coordinates for the current pointer action\&.
+.RE
+.PP
+\fBungrab_pointer\fR
+.RS 4
+End the current pointer action\&.
+.RE
+.PP
+\fBtoggle_fullscreen\fR
+.RS 4
+Toggle the fullscreen state of the current window\&.
+.RE
+.PP
+\fBtoggle_floating\fR
+.RS 4
+Toggle the floating state of the current window\&.
+.RE
+.PP
+\fBtoggle_locked\fR
+.RS 4
+Toggle the locked state of the current window (locked windows will not respond to the
+\fBclose\fR
+message)\&.
+.RE
+.PP
+\fBtoggle_visibility\fR
+.RS 4
+Toggle the visibility of all the managed windows\&.
+.RE
+.PP
+\fBclose\fR
+.RS 4
+Close the focused window\&.
+.RE
+.PP
+\fBkill\fR
+.RS 4
+Kill the focused window\&.
+.RE
+.PP
+\fBsend_to\fR \fIDESKTOP_NAME\fR [\fB\-\-follow\fR]
+.RS 4
+Send the focused window to the given desktop\&.
+.RE
+.PP
+\fBdrop_to\fR \fInext\fR|\fIprev\fR [\fB\-\-follow\fR]
+.RS 4
+Send the focused window to the next or previous desktop\&.
+.RE
+.PP
+\fBsend_to_monitor\fR \fIMONITOR_NAME\fR [\fB\-\-follow\fR]
+.RS 4
+Send the focused window to the given monitor\&.
+.RE
+.PP
+\fBdrop_to_monitor\fR \fInext\fR|\fIprev\fR [\fB\-\-follow\fR]
+.RS 4
+Send the focused window to the next or previous monitor\&.
+.RE
+.PP
+\fBuse\fR \fIDESKTOP_NAME\fR
+.RS 4
+Select the given desktop\&.
+.RE
+.PP
+\fBuse_monitor\fR \fIMONITOR_NAME\fR
+.RS 4
+Select the given monitor\&.
+.RE
+.PP
+\fBalternate\fR
+.RS 4
+Alternate between the current and the last focused window\&.
+.RE
+.PP
+\fBalternate_desktop\fR
+.RS 4
+Alternate between the current and the last focused desktop\&.
+.RE
+.PP
+\fBalternate_monitor\fR
+.RS 4
+Alternate between the current and the last focused monitor\&.
+.RE
+.PP
+\fBadd\fR \fIDESKTOP_NAME\fR \&...
+.RS 4
+Make new desktops with the given names\&.
+.RE
+.PP
+\fBadd_in\fR \fIMONITOR_NAME\fR \fIDESKTOP_NAME\fR \&...
+.RS 4
+Make new desktops with the given names in the given monitor\&.
+.RE
+.PP
+\fBrename_monitor\fR \fICURRENT_NAME\fR \fINEW_NAME\fR
+.RS 4
+Rename the monitor named
+\fICURRENT_NAME\fR
+to
+\fINEW_NAME\fR\&.
+.RE
+.PP
+\fBrename\fR \fICURRENT_NAME\fR \fINEW_NAME\fR
+.RS 4
+Rename the desktop named
+\fICURRENT_NAME\fR
+to
+\fINEW_NAME\fR\&.
+.RE
+.PP
+\fBremove_desktop\fR \fIDESKTOP_NAME\fR \&...
+.RS 4
+Remove the given desktops\&.
+.RE
+.PP
+\fBsend_desktop_to\fR \fIMONITOR_NAME\fR [\fB\-\-follow\fR]
+.RS 4
+Send the current desktop to the given monitor\&.
+.RE
+.PP
+\fBcycle_monitor\fR \fInext\fR|\fIprev\fR
+.RS 4
+Select the next or previous monitor\&.
+.RE
+.PP
+\fBcycle_desktop\fR \fInext\fR|\fIprev\fR [\fB\-\-skip\-free\fR|\fB\-\-skip\-occupied\fR]
+.RS 4
+Select the next or previous desktop\&.
+.RE
+.PP
+\fBlayout\fR \fImonocle\fR|\fItiled\fR [\fIDESKTOP_NAME\fR \&...]
+.RS 4
+Set the layout of the given desktops (current if none given)\&.
+.RE
+.PP
+\fBcycle_layout\fR
+.RS 4
+Cycle the layout of the current desktop\&.
+.RE
+.PP
+\fBrotate\fR \fIclockwise\fR|\fIcounter_clockwise\fR|\fIfull_cycle\fR
+.RS 4
+Rotate the window tree\&.
+.RE
+.PP
+\fBflip\fR \fIhorizontal\fR|\fIvertical\fR
+.RS 4
+Flip the window tree\&.
+.RE
+.PP
+\fBbalance\fR
+.RS 4
+Adjust the split ratios so that all windows occupy the same area\&.
+.RE
+.PP
+\fBrule\fR \fIPATTERN\fR [\fIDESKTOP_NAME\fR] [\fIfloating\fR] [\fIfollow\fR]
+.RS 4
+Create a new rule (\fIPATTERN\fR
+must match the class or instance name)\&.
+.RE
+.PP
+\fBremove_rule\fR \fIUID\fR \&...
+.RS 4
+Remove the rules with the given
+\fIUIDs\fR\&.
+.RE
+.PP
+\fBput_status\fR
+.RS 4
+Output the current state to the panel fifo\&.
+.RE
+.PP
+\fBadopt_orphans\fR
+.RS 4
+Manage all the unmanaged windows remaining from a previous session\&.
+.RE
+.PP
+\fBrestore_layout\fR \fIFILE_PATH\fR
+.RS 4
+Restore the layout of each desktop from the content of
+\fIFILE_PATH\fR\&.
+.RE
+.PP
+\fBrestore_history\fR \fIFILE_PATH\fR
+.RS 4
+Restore the history of each desktop from the content of
+\fIFILE_PATH\fR\&.
+.RE
+.PP
+\fBquit\fR [\fIEXIT_STATUS\fR]
+.RS 4
+Quit\&.
+.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\&.
+.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
+\fIwindow_gap\fR
+.RS 4
+Value of the gap that separates windows\&.
+.RE
+.PP
+\fIsplit_ratio\fR
+.RS 4
+Default split ratio\&.
+.RE
+.PP
+\fItop_padding\fR, \fIright_padding\fR, \fIbottom_padding\fR, \fIleft_padding\fR
+.RS 4
+Padding space added at the sides of the current monitor\&.
+.RE
+.PP
+\fIwm_name\fR
+.RS 4
+The value that shall be used for the
+\fI_NET_WM_NAME\fR
+property of the root window\&.
+.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
+\fIadaptative_raise\fR
+.RS 4
+Prevent floating windows from being raised when they might cover other floating windows\&.
+.RE
+.PP
+\fIapply_shadow_property\fR
+.RS 4
+Enable shadows for floating windows via the
+\fI_COMPTON_SHADOW\fR
+property\&.
+.RE
+.PP
+\fIauto_alternate\fR
+.RS 4
+Interpret two consecutive identical
+\fBuse\fR
+messages as an
+\fBalternate\fR
+message\&.
+.RE
+.PP
+\fIfocus_by_distance\fR
+.RS 4
+Use window or leaf distance for focus movement\&.
+.RE
+.PP
+\fIhistory_aware_focus\fR
+.RS 4
+Give priority to the focus history when focusing nodes\&.
+.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\&.
+.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
+.\}
+Automatic and manual modes\&.
+.RE
+.SH "CONTRIBUTORS"
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Ivan Kanakarakis <ivan\&.kanak at gmail\&.com>
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Thomas Adam <thomas at xteddy\&.org>
+.RE
+.SH "AUTHOR"
+.sp
+Bastien Dejean <baskerville at lavabit\&.com>
+.SH "MAILING LIST"
+.sp
+bspwm at librelist\&.com
--- /dev/null
+:man source: Bspwm
+:man version: {revnumber}
+:man manual: Bspwm Manual
+
+bspwm(1)
+========
+
+Name
+----
+
+bspwm - Tiling window manager based on binary space partitioning
+
+Synopsis
+--------
+
+*bspwm* [*-h*|*-v*|*-s* _PANEL_FIFO_|*-p* _PANEL_PREFIX_]
+
+*bspc* _MESSAGE_ [_ARGUMENTS_] [_OPTIONS_]
+
+Description
+-----------
+
+*bspwm* is a tiling window manager that represents windows as the leaves of a full binary tree.
+
+It is controlled and configured via *bspc*.
+
+Configuration
+-------------
+
+*bspwm* have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket.
+
+Its configuration file is _$XDG_CONFIG_HOME/bspwm/autostart_.
+
+Keyboard and pointer bindings are defined with https://github.com/baskerville/sxhkd[sxhkd].
+
+Example configuration files can be found in the *examples* directory.
+
+Splitting Modes
+---------------
+
+There is only two splitting modes: _automatic_ and _manual_.
+
+The default mode is _automatic_. The _manual_ mode is entered by sending a *presel* message.
+
+Example: insertion of a new node (number 4) into the given tree in _automatic_ mode:
+
+----------------------------------------------------------------
+ b c
+ / \ / \
+ 3 a --> 4 b
+ ^ / \ ^ / \
+ 2 1 3 a
+ / \
+ 2 1
+ +-------------------------+ +-------------------------+
+ | | | | | |
+ | | 2 | | | 3 |
+ | | | | | |
+ | 3 |------------| --> | 4 |------------|
+ | ^ | | | ^ | | |
+ | | 1 | | | 1 | 2 |
+ | | | | | | |
+ +-------------------------+ +-------------------------+
+----------------------------------------------------------------
+
+Same departure, but the mode is _manual_, and a *presel* _up_ message was sent beforehand:
+
+---------------------------------------------------------------
+ b b
+ / \ / \
+ 3 a --> c a
+ ^ / \ / \ / \
+ 2 1 4 3 2 1
+ ^
++-------------------------+ +-------------------------+
+| | | | | |
+| | 2 | | 4 | 2 |
+| | | | ^ | |
+| 3 |------------| --> |------------|------------|
+| ^ | | | | |
+| | 1 | | 3 | 1 |
+| | | | | |
++-------------------------+ +-------------------------+
+---------------------------------------------------------------
+
+Containers
+----------
+
+Each monitor contains at least one desktop.
+
+Each desktop contains at most one tree.
+
+Messages
+--------
+
+
+*get* _SETTING_::
+ Return the value of the given setting.
+
+*set* _SETTING_ _VALUE_::
+ Set the value of the given setting.
+
+*list* [_DESKTOP_NAME_]::
+ Output the internal representation of the window tree.
+
+*list_desktops* [*--quiet*]::
+ Perform a dump of each desktop for the current monitor.
+
+*list_monitors* [*--quiet*]::
+ Perform a dump of each monitor.
+
+*list_history*::
+ Return the node focus history of each desktop.
+
+*list_windows*::
+ Return the list of managed windows (i.e. their identifiers).
+
+*list_rules*::
+ Return the list of rules.
+
+*presel* _left_|_right_|_up_|_down_ [_SPLIT_RATIO_]::
+ Switch to manual mode and select the splitting direction.
+
+*cancel*::
+ Switch to automatic mode.
+
+*ratio* _VALUE_::
+ Set the splitting ratio of the focused window.
+
+*pad* _MONITOR_NAME_ [_TOP_PADDING_ [_RIGHT_PADDING_ [_BOTTOM_PADDING_ [_LEFT_PADDING_]]]]::
+ Set the padding of the given monitor.
+
+*focus* _left_|_right_|_up_|_down_::
+ Focus the neighbor window situated in the given direction.
+
+*shift* _left_|_right_|_up_|_down_::
+ Exchange the current window with the given neighbor.
+
+*swap* [*--keep-focus*]::
+ Swap the focused window with the last focused window.
+
+*push* _left_|_right_|_up_|_down_::
+ Push the fence located in the given direction.
+
+*pull* _left_|_right_|_up_|_down_::
+ Pull the fence located in the given direction.
+
+*fence_ratio* _left_|_right_|_up_|_down_::
+ Set the splitting ratio of the fence located in the given direction.
+
+*cycle* _next_|_prev_ [*--skip-floating*|*--skip-tiled*|*--skip-class-equal*|*--skip-class-differ*]::
+ Focus the next or previous window matching the given constraints.
+
+*nearest* _older_|_newer_ [*--skip-floating*|*--skip-tiled*|*--skip-class-equal*|*--skip-class-differ*]::
+ Focus the nearest window matching the given constraints.
+
+*biggest*::
+ Return the ID of the biggest tiled window.
+
+*circulate* _forward_|_backward_::
+ Circulate the leaves in the given direction.
+
+*grab_pointer* _focus_|_move_|_resize_side_|_resize_corner_::
+ Begin the specified pointer action.
+
+*track_pointer* _ROOT_X_ _ROOT_Y_::
+ Pass the pointer root coordinates for the current pointer action.
+
+*ungrab_pointer*::
+ End the current pointer action.
+
+*toggle_fullscreen*::
+ Toggle the fullscreen state of the current window.
+
+*toggle_floating*::
+ Toggle the floating state of the current window.
+
+*toggle_locked*::
+ Toggle the locked state of the current window (locked windows will not respond to the *close* message).
+
+*toggle_visibility*::
+ Toggle the visibility of all the managed windows.
+
+*close*::
+ Close the focused window.
+
+*kill*::
+ Kill the focused window.
+
+*send_to* _DESKTOP_NAME_ [*--follow*]::
+ Send the focused window to the given desktop.
+
+*drop_to* _next_|_prev_ [*--follow*]::
+ Send the focused window to the next or previous desktop.
+
+*send_to_monitor* _MONITOR_NAME_ [*--follow*]::
+ Send the focused window to the given monitor.
+
+*drop_to_monitor* _next_|_prev_ [*--follow*]::
+ Send the focused window to the next or previous monitor.
+
+*use* _DESKTOP_NAME_::
+ Select the given desktop.
+
+*use_monitor* _MONITOR_NAME_::
+ Select the given monitor.
+
+*alternate*::
+ Alternate between the current and the last focused window.
+
+*alternate_desktop*::
+ Alternate between the current and the last focused desktop.
+
+*alternate_monitor*::
+ Alternate between the current and the last focused monitor.
+
+*add* _DESKTOP_NAME_ ...::
+ Make new desktops with the given names.
+
+*add_in* _MONITOR_NAME_ _DESKTOP_NAME_ ...::
+ Make new desktops with the given names in the given monitor.
+
+*rename_monitor* _CURRENT_NAME_ _NEW_NAME_::
+ Rename the monitor named _CURRENT_NAME_ to _NEW_NAME_.
+
+*rename* _CURRENT_NAME_ _NEW_NAME_::
+ Rename the desktop named _CURRENT_NAME_ to _NEW_NAME_.
+
+*remove_desktop* _DESKTOP_NAME_ ...::
+ Remove the given desktops.
+
+*send_desktop_to* _MONITOR_NAME_ [*--follow*]::
+ Send the current desktop to the given monitor.
+
+*cycle_monitor* _next_|_prev_::
+ Select the next or previous monitor.
+
+*cycle_desktop* _next_|_prev_ [*--skip-free*|*--skip-occupied*]::
+ Select the next or previous desktop.
+
+*layout* _monocle_|_tiled_ [_DESKTOP_NAME_ ...]::
+ Set the layout of the given desktops (current if none given).
+
+*cycle_layout*::
+ Cycle the layout of the current desktop.
+
+*rotate* _clockwise_|_counter_clockwise_|_full_cycle_::
+ Rotate the window tree.
+
+*flip* _horizontal_|_vertical_::
+ Flip the window tree.
+
+*balance*::
+ Adjust the split ratios so that all windows occupy the same area.
+
+*rule* _PATTERN_ [_DESKTOP_NAME_] [_floating_] [_follow_]::
+ Create a new rule (_PATTERN_ must match the class or instance name).
+
+*remove_rule* _UID_ ...::
+ Remove the rules with the given _UIDs_.
+
+*put_status*::
+ Output the current state to the panel fifo.
+
+*adopt_orphans*::
+ Manage all the unmanaged windows remaining from a previous session.
+
+*restore_layout* _FILE_PATH_::
+ Restore the layout of each desktop from the content of _FILE_PATH_.
+
+*restore_history* _FILE_PATH_::
+ Restore the history of each desktop from the content of _FILE_PATH_.
+
+*quit* [_EXIT_STATUS_]::
+ Quit.
+
+Settings
+--------
+Colors are either http://en.wikipedia.org/wiki/X11_color_names[X color names] or _#RRGGBB_, booleans are _true_ or _false_.
+
+All the boolean settings are _false_ by default.
+
+
+_focused_border_color_::
+ Color of the border of a focused window of a focused monitor.
+
+_active_border_color_::
+ Color of the border of a focused window of an unfocused monitor.
+
+_normal_border_color_::
+ Color of the border of an unfocused window.
+
+_presel_border_color_::
+ Color of the *presel* message feedback.
+
+_focused_locked_border_color_::
+ Color of the border of a focused locked window of a focused monitor.
+
+_active_locked_border_color_::
+ Color of the border of a focused locked window of an unfocused monitor.
+
+_normal_locked_border_color_::
+ Color of the border of an unfocused locked window.
+
+_urgent_border_color_::
+ Color of the border of an urgent window.
+
+_border_width_::
+ Window border width.
+
+_window_gap_::
+ Value of the gap that separates windows.
+
+_split_ratio_::
+ Default split ratio.
+
+_top_padding_, _right_padding_, _bottom_padding_, _left_padding_::
+ Padding space added at the sides of the current monitor.
+
+_wm_name_::
+ The value that shall be used for the '_NET_WM_NAME' property of the root window.
+
+_borderless_monocle_::
+ Remove borders for tiled windows in monocle mode.
+
+_gapless_monocle_::
+ Remove gaps for tiled windows in monocle mode.
+
+_focus_follows_pointer_::
+ Focus the window under the pointer.
+
+_pointer_follows_monitor_::
+ When focusing a monitor, put the pointer at its center.
+
+_adaptative_raise_::
+ Prevent floating windows from being raised when they might cover other floating windows.
+
+_apply_shadow_property_::
+ Enable shadows for floating windows via the '_COMPTON_SHADOW' property.
+
+_auto_alternate_::
+ Interpret two consecutive identical *use* messages as an *alternate* message.
+
+_focus_by_distance_::
+ Use window or leaf distance for focus movement.
+
+_history_aware_focus_::
+ Give priority to the focus history when focusing nodes.
+
+Environment Variables
+---------------------
+
+_BSPWM_SOCKET_::
+ The path of the socket used for the communication between *bspc* and *bspwm*.
+
+Panels
+------
+
+* Any EWMH compliant panel (e.g.: _tint2_, _bmpanel2_, etc.).
+* A custom panel if the _-s_ flag is used (have a look at the files in _examples/panel_).
+
+Key Features
+------------
+
+* Configured and controlled through messages.
+* Multiple monitors support (via _RandR_).
+* EWMH support (*tint2* works).
+* Automatic and manual modes.
+
+Contributors
+------------
+
+* Ivan Kanakarakis <ivan.kanak at gmail.com>
+* Thomas Adam <thomas at xteddy.org>
+
+Author
+------
+
+Bastien Dejean <baskerville at lavabit.com>
+
+Mailing List
+------------
+
+bspwm at librelist.com
+
+////
+vim: set ft=asciidoc:
+////
--- /dev/null
+image:https://github.com/baskerville/bspwm/raw/master/logo/bspwm-logo.png[logo]
+
+++ /dev/null
-.TH "$name$" 1 "$date$" "$title$"
-.SH NAME
-$name$ - Tiling window manager based on binary space partitioning
-$body$
-.SH CONTRIBUTORS
-.IP \[bu] 2
-Ivan Kanakarakis <ivan.kanak at gmail.com>
-.IP \[bu] 2
-Thomas Adam <thomas at xteddy.org>
-.SH AUTHOR
-$author$ <baskerville at lavabit.com>
-.SH HOMEPAGE
-https://github.com/baskerville/$name$
+++ /dev/null
-import Text.Pandoc
-import Data.Char (toUpper)
-
-main :: IO ()
-main = toJsonFilter (capitalizeHeaders . bottomUp delink)
-
-capitalizeHeaders :: Block -> Block
-capitalizeHeaders (Header 1 attr xs) = Header 1 attr $ bottomUp capitalize xs
-capitalizeHeaders x = x
-
-capitalize :: Inline -> Inline
-capitalize (Str xs) = Str $ map toUpper xs
-capitalize x = x
-
-delink :: [Inline] -> [Inline]
-delink ((Link txt _) : xs) = txt ++ delink xs
-delink ((Image _ _) : xs) = []
-delink (x : xs) = x : delink xs
-delink [] = []
+++ /dev/null
-diff -ru a/README.asciidoc b/README.asciidoc
---- a/README.asciidoc 2013-06-24 22:46:06.915021108 +0200
-+++ b/README.asciidoc 2013-06-24 22:48:26.871141944 +0200
-@@ -6,7 +6,7 @@
-
- *bspwm* [*-h*|*-v*|*-s* _PANEL_FIFO_|*-p* _PANEL_PREFIX_]
-
--*bspc* _MESSAGE_ [_ARGUMENTS_][*OPTIONS*]
-+*bspc* _MESSAGE_ [_ARGUMENTS_] [_OPTIONS_]
-
- [[description]]
- Description
-@@ -195,7 +195,7 @@
- Flip the window tree.
- *balance*::
- Adjust the split ratios so that all windows occupy the same area.
--*rule* _PATTERN_ [_DESKTOP_NAME_][*floating*] [_follow_]::
-+*rule* _PATTERN_ [_DESKTOP_NAME_] [_floating_] [_follow_]::
- Create a new rule (_PATTERN_ must match the class or instance name).
- *remove_rule* _UID_ ...::
- Remove the rules with the given _UID_s.
-diff -ru a/bspwm.1 b/bspwm.1
---- a/bspwm.1 2013-06-24 22:46:06.915021108 +0200
-+++ b/bspwm.1 2013-06-24 22:47:12.031433820 +0200
-@@ -6,7 +6,7 @@
- .PP
- \f[B]bspwm\f[] [\f[B]\-h\f[]|\f[B]\-v\f[]|\f[B]\-s\f[] \f[I]PANEL_FIFO\f[]|\f[B]\-p\f[] \f[I]PANEL_PREFIX\f[]]
- .PP
--\f[B]bspc\f[] \f[I]MESSAGE\f[] [\f[I]ARGUMENTS\f[]][*OPTIONS*]
-+\f[B]bspc\f[] \f[I]MESSAGE\f[] [\f[I]ARGUMENTS\f[]] [\f[I]OPTIONS\[]]
- .SH DESCRIPTION
- .PP
- \f[B]bspwm\f[] is a tiling window manager that represents windows as the leaves of a full binary tree.
-@@ -345,7 +345,7 @@
- .RS
- .RE
- .TP
--.B \f[B]rule\f[] \f[I]PATTERN\f[] [\f[I]DESKTOP_NAME\f[]][*floating*] [\f[I]follow\f[]]
-+.B \f[B]rule\f[] \f[I]PATTERN\f[] [\f[I]DESKTOP_NAME\f[]] [\f[I]floating\f[]] [\f[I]follow\f[]]
- Create a new rule (\f[I]PATTERN\f[] must match the class or instance name).
- .RS
- .RE