bspwm/doc/bspwm.1.asciidoc

914 lines
23 KiB
Text
Raw Normal View History

2013-06-26 21:50:01 +02:00
:man source: Bspwm
:man version: {revnumber}
:man manual: Bspwm Manual
bspwm(1)
========
Name
----
bspwm - Binary space partitioning window manager
2013-06-26 21:50:01 +02:00
Synopsis
--------
*bspwm* [*-h*|*-v*|*-c* 'CONFIG_PATH']
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
*bspc* 'DOMAIN' ['SELECTOR'] 'COMMANDS'
2013-06-26 21:50:01 +02:00
*bspc* 'COMMAND' ['OPTIONS'] ['ARGUMENTS']
2013-06-26 21:50:01 +02:00
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*.
Options
-------
*-h*::
2014-01-21 20:48:49 +01:00
Print the synopsis and exit.
*-v*::
2014-01-21 20:48:49 +01:00
Print the version and exit.
*-c* 'CONFIG_PATH'::
2014-01-21 20:48:49 +01:00
Use the given configuration file.
Common Definitions
------------------
----
2015-12-22 19:25:45 +01:00
DIR := north | west | south | east
CYCLE_DIR := next | prev
----
Selectors
---------
2015-12-22 19:25:45 +01:00
Selectors are used to select a target node, desktop, or monitor. A selector
can either describe the target relatively or name it globally.
Selectors consist of an optional reference, a descriptor and any number of
non-conflicting modifiers as follows:
[REFERENCE#]DESCRIPTOR(.MODIFIER)*
The relative targets are computed in relation to the given reference (the
default reference value is *focused*).
An exclamation mark can be prepended to any modifier in order to reverse its
meaning.
2017-08-22 12:03:23 +02:00
The following characters cannot be used in monitor or desktop names: *#*, *:*, *.*.
The special selector *%<name>* can be used to select a monitor or a desktop with an invalid name.
2015-12-22 19:25:45 +01:00
Node
~~~~
2015-12-22 19:25:45 +01:00
Select a node.
----
NODE_SEL := [NODE_SEL#](DIR|CYCLE_DIR|PATH|last|newest|
older|newer|focused|pointed|
biggest|<node_id>)[.[!]focused][.[!]automatic][.[!]local][.[!]active]
[.[!]leaf][.[!]window][.[!]STATE][.[!]FLAG][.[!]LAYER]
[.[!]same_class][.[!]descendant_of][.[!]ancestor_of]
2015-12-22 19:25:45 +01:00
STATE := tiled|pseudo_tiled|floating|fullscreen
FLAG := hidden|sticky|private|locked|marked|urgent
2015-12-22 19:25:45 +01:00
LAYER := below|normal|above
PATH := @[DESKTOP_SEL:][[/]JUMP](/JUMP)*
2015-12-22 19:25:45 +01:00
JUMP := first|1|second|2|brother|parent|DIR
----
2015-12-22 19:25:45 +01:00
Descriptors
^^^^^^^^^^^
'DIR'::
Selects the window in the given (spacial) direction relative to the reference node.
'CYCLE_DIR'::
Selects the window in the given (cyclic) direction relative to the reference node.
'PATH'::
Selects the node at the given path.
last::
Selects the previously focused node relative to the reference node.
newest::
Selects the newest node in the history of the focused node.
2013-10-08 13:59:17 +02:00
older::
Selects the node older than the reference node in the history.
2013-10-08 13:59:17 +02:00
newer::
Selects the node newer than the reference node in the history.
2015-12-22 19:25:45 +01:00
focused::
Selects the currently focused node.
pointed::
Selects the window under the pointer.
biggest::
Selects the biggest window.
<node_id>::
Selects the node with the given ID.
2015-12-22 19:25:45 +01:00
Path Jumps
^^^^^^^^^^
The initial node is the focused node (or the root if the path starts with '/') of the reference desktop (or the selected desktop if the path has a 'DESKTOP_SEL' prefix).
2015-12-22 19:25:45 +01:00
1|first::
Jumps to the first child.
2|second::
Jumps to the second child.
brother::
Jumps to the brother node.
parent::
Jumps to the parent node.
'DIR'::
Jumps to the node holding the edge in the given direction.
2013-10-08 13:59:17 +02:00
Modifiers
^^^^^^^^^
2015-12-22 19:25:45 +01:00
[!]focused::
Only consider focused or unfocused nodes.
[!]automatic::
Only consider nodes in automatic or manual insertion mode. See also *--presel-dir* under *Node* in the *DOMAINS* section below.
2015-12-22 19:25:45 +01:00
[!]local::
Only consider nodes in or not in the reference desktop.
2015-12-22 19:25:45 +01:00
2016-09-22 22:30:38 +02:00
[!]active::
Only consider nodes in or not in the active desktop of their monitor.
2015-12-22 19:25:45 +01:00
[!]leaf::
Only consider leaves or internal nodes.
[!]window::
Only consider nodes that hold or don't hold a window.
2015-12-22 19:25:45 +01:00
[!](tiled|pseudo_tiled|floating|fullscreen)::
Only consider windows in or not in the given state.
[!]same_class::
Only consider windows that have or don't have the same class as the reference window.
[!]descendant_of::
Only consider nodes that are or aren't descendants of the reference node.
[!]ancestor_of::
Only consider nodes that are or aren't ancestors of the reference node.
[!](hidden|sticky|private|locked|marked|urgent)::
Only consider windows that have or don't have the given flag set.
2015-11-23 10:40:10 +01:00
[!](below|normal|above)::
Only consider windows in or not in the given layer.
Desktop
~~~~~~~
Select a desktop.
----
DESKTOP_SEL := [DESKTOP_SEL#](CYCLE_DIR|last|newest|older|newer|
[MONITOR_SEL:](focused|^<n>)|
<desktop_id>|<desktop_name>)[.[!]occupied][.[!]focused][.[!]urgent][.[!]local]
----
2015-12-22 19:25:45 +01:00
Descriptors
^^^^^^^^^^^
'CYCLE_DIR'::
Selects the desktop in the given direction relative to the reference desktop.
last::
Selects the previously focused desktop relative to the reference desktop.
newest::
Selects the newest desktop in the history of the focused desktops.
older::
Selects the desktop older than the reference desktop in the history.
newer::
Selects the desktop newer than the reference desktop in the history.
focused::
Selects the currently focused desktop.
^<n>::
Selects the nth desktop. If *MONITOR_SEL* is given, selects the nth desktop on the selected monitor.
<desktop_id>::
Selects the desktop with the given ID.
<desktop_name>::
Selects the desktop with the given name.
Modifiers
^^^^^^^^^
[!]occupied::
Only consider occupied or free desktops.
[!]focused::
Only consider focused or unfocused desktops.
[!]urgent::
Only consider urgent or non urgent desktops.
[!]local::
Only consider desktops inside or outside of the reference monitor.
Monitor
~~~~~~~
Select a monitor.
----
MONITOR_SEL := [MONITOR_SEL#](DIR|CYCLE_DIR|last|newest|older|newer|
focused|pointed|primary|^<n>|
<monitor_id>|<monitor_name>)[.[!]occupied][.[!]focused]
----
2015-12-22 19:25:45 +01:00
Descriptors
^^^^^^^^^^^
'DIR'::
Selects the monitor in the given (spacial) direction relative to the reference monitor.
'CYCLE_DIR'::
Selects the monitor in the given (cyclic) direction relative to the reference monitor.
last::
Selects the previously focused monitor relative to the reference monitor.
newest::
Selects the newest monitor in the history of the focused monitors.
older::
Selects the monitor older than the reference monitor in the history.
newer::
Selects the monitor newer than the reference monitor in the history.
focused::
Selects the currently focused monitor.
2017-08-24 21:04:23 +02:00
pointed::
Selects the monitor under the pointer.
primary::
Selects the primary monitor.
^<n>::
Selects the nth monitor.
<monitor_id>::
Selects the monitor with the given ID.
<monitor_name>::
Selects the monitor with the given name.
Modifiers
^^^^^^^^^
[!]occupied::
Only consider monitors where the focused desktop is occupied or free.
[!]focused::
Only consider focused or unfocused monitors.
2013-12-16 17:22:25 +01:00
Window States
-------------
tiled::
Its size and position are determined by the splitting type and ratio of each node of its path in the window tree.
2013-12-16 17:22:25 +01:00
pseudo_tiled::
Has an unrestricted size while being centered in its tiling space.
floating::
Can be moved/resized freely. Although it doesn't occupy any tiling space, it is still part of the window tree.
2013-12-16 17:22:25 +01:00
fullscreen::
Fills its monitor rectangle and has no borders. It is send in the ABOVE layer by default.
2015-12-22 19:25:45 +01:00
Node Flags
----------
2013-12-16 17:22:25 +01:00
2016-04-16 18:13:31 +02:00
hidden::
Is hidden and doesn't occupy any tiling space.
2013-12-16 17:22:25 +01:00
sticky::
2014-01-21 20:48:49 +01:00
Stays in the focused desktop of its monitor.
2013-12-16 17:22:25 +01:00
private::
2014-01-21 20:48:49 +01:00
Tries to keep the same tiling position/size.
2013-12-16 17:22:25 +01:00
2016-04-16 18:13:31 +02:00
locked::
Ignores the *node --close* message.
marked::
Is marked (useful for deferred operations).
2015-10-27 21:26:09 +01:00
urgent::
Has its urgency hint set. This flag is set externally.
2015-10-27 21:26:09 +01:00
2013-12-16 17:22:25 +01:00
Stacking Layers
--------------
There's three stacking layers: BELOW, NORMAL and ABOVE.
In each layer, the window are orderered as follow: tiled & pseudo-tiled < fullscreen < floating.
Receptacles
-----------
A leaf node that doesn't hold any window is called a receptacle. When a node is inserted on a receptacle in automatic mode, it will replace the receptacle. A receptacle can be inserted on a node and preselected. Receptacles can therefore be used to build a tree whose leaves are receptacles. Using the appropriate rules, one can then send windows on the leaves of this tree. This feature is used in 'examples/receptacles' to store and recreate layouts.
2015-12-22 19:25:45 +01:00
Domains
-------
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
Node
~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
node ['NODE_SEL'] 'COMMANDS'
2013-06-26 21:50:01 +02:00
2016-05-09 13:37:45 +02:00
If 'NODE_SEL' is omitted, *focused* is assumed.
2015-12-22 19:25:45 +01:00
Commands
^^^^^^^^
*-f*, *--focus* ['NODE_SEL']::
Focus the selected or given node.
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
*-a*, *--activate* ['NODE_SEL']::
Activate the selected or given node.
2015-11-07 12:21:13 +01:00
2018-01-14 22:32:11 +01:00
*-d*, *--to-desktop* 'DESKTOP_SEL' [*--follow*]::
Send the selected node to the given desktop. If *--follow* is passed, the focused node will stay focused.
2013-06-26 21:50:01 +02:00
2018-01-14 22:32:11 +01:00
*-m*, *--to-monitor* 'MONITOR_SEL' [*--follow*]::
Send the selected node to the given monitor. If *--follow* is passed, the focused node will stay focused.
2015-12-22 19:25:45 +01:00
2018-01-14 22:32:11 +01:00
*-n*, *--to-node* 'NODE_SEL' [*--follow*]::
Send the selected node on the given node. If *--follow* is passed, the focused node will stay focused.
2013-06-26 21:50:01 +02:00
2018-01-14 22:32:11 +01:00
*-s*, *--swap* 'NODE_SEL' [*--follow*]::
Swap the selected node with the given node. If *--follow* is passed, the focused node will stay focused.
2013-06-26 21:50:01 +02:00
2016-01-02 11:13:30 +01:00
*-p*, *--presel-dir* \[~]'DIR'|cancel::
Preselect the splitting area of the selected node (or cancel the preselection). If *~* is prepended to 'DIR' and the current preselection direction matches 'DIR', then the argument is interpreted as *cancel*. A node with a preselected area is said to be in "manual insertion mode".
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
*-o*, *--presel-ratio* 'RATIO'::
Set the splitting ratio of the preselection area.
2013-06-26 21:50:01 +02:00
2016-04-07 18:08:32 +02:00
*-v*, *--move* 'dx' 'dy'::
Move the selected window by 'dx' pixels horizontally and 'dy' pixels vertically.
*-z*, *--resize* top|left|bottom|right|top_left|top_right|bottom_right|bottom_left 'dx' 'dy'::
Resize the selected window by moving the given handle by 'dx' pixels horizontally and 'dy' pixels vertically.
*-r*, *--ratio* 'RATIO'|(+|-)('PIXELS'|'FRACTION')::
2015-12-22 19:25:45 +01:00
Set the splitting ratio of the selected node (0 < 'RATIO' < 1).
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
*-R*, *--rotate* '90|270|180'::
Rotate the tree rooted at the selected node.
*-F*, *--flip* 'horizontal|vertical'::
Flip the the tree rooted at selected node.
*-E*, *--equalize*::
Reset the split ratios of the tree rooted at the selected node to their default value.
*-B*, *--balance*::
Adjust the split ratios of the tree rooted at the selected node so that all windows occupy the same area.
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
*-C*, *--circulate* forward|backward::
Circulate the windows of the tree rooted at the selected node.
2015-12-22 19:25:45 +01:00
*-t*, *--state* [~](tiled|pseudo_tiled|floating|fullscreen)::
2016-01-02 11:13:30 +01:00
Set the state of the selected window. If *~* is present and the current state matches the given state, then the argument is interpreted as the last state.
*-g*, *--flag* hidden|sticky|private|locked|marked[=on|off]::
2015-12-22 19:25:45 +01:00
Set or toggle the given flag for the selected node.
2013-06-26 21:50:01 +02:00
*-l*, *--layer* below|normal|above::
Set the stacking layer of the selected window.
*-i*, *--insert-receptacle*::
Insert a receptacle node at the selected node.
*-c*, *--close*::
2015-12-22 19:25:45 +01:00
Close the windows rooted at the selected node.
2013-06-26 21:50:01 +02:00
*-k*, *--kill*::
2015-12-22 19:25:45 +01:00
Kill the windows rooted at the selected node.
2013-06-26 21:50:01 +02:00
Desktop
~~~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
desktop ['DESKTOP_SEL'] 'COMMANDS'
2013-06-26 21:50:01 +02:00
2016-05-09 13:37:45 +02:00
If 'DESKTOP_SEL' is omitted, *focused* is assumed.
2015-12-22 19:25:45 +01:00
COMMANDS
^^^^^^^^
*-f*, *--focus* ['DESKTOP_SEL']::
2014-01-21 20:48:49 +01:00
Focus the selected or given desktop.
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
*-a*, *--activate* ['DESKTOP_SEL']::
Activate the selected or given desktop.
2018-01-14 22:32:11 +01:00
*-m*, *--to-monitor* 'MONITOR_SEL' [*--follow*]::
Send the selected desktop to the given monitor. If *--follow* is passed, the focused desktop will stay focused.
*-s*, *--swap* 'DESKTOP_SEL' [*--follow*]::
Swap the selected desktop with the given desktop. If *--follow* is passed, the focused desktop will stay focused.
2013-06-26 21:50:01 +02:00
*-l*, *--layout* 'CYCLE_DIR'|monocle|tiled::
2014-01-21 20:48:49 +01:00
Set or cycle the layout of the selected desktop.
2013-06-26 21:50:01 +02:00
*-n*, *--rename* <new_name>::
2014-01-21 20:48:49 +01:00
Rename the selected desktop.
2013-06-26 21:50:01 +02:00
2015-05-26 23:31:19 +02:00
*-b*, *--bubble* 'CYCLE_DIR'::
Bubble the selected desktop in the given direction.
*-r*, *--remove*::
2014-01-21 20:48:49 +01:00
Remove the selected desktop.
2013-06-26 21:50:01 +02:00
Monitor
~~~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
monitor ['MONITOR_SEL'] 'COMMANDS'
2013-06-26 21:50:01 +02:00
2016-05-09 13:37:45 +02:00
If 'MONITOR_SEL' is omitted, *focused* is assumed.
2015-12-22 19:25:45 +01:00
Commands
^^^^^^^^
*-f*, *--focus* ['MONITOR_SEL']::
2014-01-21 20:48:49 +01:00
Focus the selected or given monitor.
2013-06-26 21:50:01 +02:00
*-s*, *--swap* 'MONITOR_SEL'::
Swap the selected monitor with the given monitor.
*-a*, *--add-desktops* <name>...::
2014-01-21 20:48:49 +01:00
Create desktops with the given names in the selected monitor.
2013-06-26 21:50:01 +02:00
2013-11-19 15:25:49 +01:00
*-o*, *--reorder-desktops* <name>...::
2014-01-21 20:48:49 +01:00
Reorder the desktops of the selected monitor to match the given order.
2013-06-26 21:50:01 +02:00
*-d*, *--reset-desktops* <name>...::
Rename, add or remove desktops depending on whether the number of given names is equal, superior or inferior to the number of existing desktops.
*-g*, *--rectangle* WxH+X+Y::
Set the rectangle of the selected monitor.
2013-11-19 15:25:49 +01:00
*-n*, *--rename* <new_name>::
2014-01-21 20:48:49 +01:00
Rename the selected monitor.
2013-11-19 15:25:49 +01:00
*-r*, *--remove*::
Remove the selected monitor.
Query
~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
query 'COMMANDS' ['OPTIONS']
2013-06-28 15:16:56 +02:00
2015-12-22 19:25:45 +01:00
Commands
^^^^^^^^
The optional selectors are references.
*-N*, *--nodes* ['NODE_SEL']::
2015-12-22 19:25:45 +01:00
List the IDs of the matching nodes.
2013-06-26 21:50:01 +02:00
*-D*, *--desktops* ['DESKTOP_SEL']::
List the IDs (or names) of the matching desktops.
2013-06-26 21:50:01 +02:00
*-M*, *--monitors* ['MONITOR_SEL']::
List the IDs (or names) of the matching monitors.
2013-06-26 21:50:01 +02:00
*-T*, *--tree*::
Print a JSON representation of the matching item.
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
Options
^^^^^^^
*-m*,*--monitor* ['MONITOR_SEL']::
*-d*,*--desktop* ['DESKTOP_SEL']::
*-n*, *--node* ['NODE_SEL']::
2015-12-22 19:25:45 +01:00
Constrain matches to the selected monitor, desktop or node. The descriptor can be omitted for '-M', '-D' and '-N'.
2013-06-26 21:50:01 +02:00
*--names*::
Print names instead of IDs. Can only be used with '-M' and '-D'.
2015-12-22 19:25:45 +01:00
Wm
~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
wm 'COMMANDS'
2015-12-22 19:25:45 +01:00
Commands
^^^^^^^^
2015-12-22 19:25:45 +01:00
*-d*, *--dump-state*::
Dump the current world state on standard output.
2015-12-22 19:25:45 +01:00
*-l*, *--load-state* <file_path>::
Load a world state from the given file.
2015-12-22 19:25:45 +01:00
*-a*, *--add-monitor* <name> WxH+X+Y::
Add a monitor for the given name and rectangle.
2017-07-30 14:48:03 +02:00
*-O*, *--reorder-monitors* <name>...::
Reorder the list of monitors to match the given order.
2015-12-22 19:25:45 +01:00
*-o*, *--adopt-orphans*::
2014-01-21 20:48:49 +01:00
Manage all the unmanaged windows remaining from a previous session.
2015-12-22 19:25:45 +01:00
*-h*, *--record-history* on|off::
Enable or disable the recording of node focus history.
2015-12-22 19:25:45 +01:00
*-g*, *--get-status*::
Print the current status information.
Rule
~~~~
General Syntax
^^^^^^^^^^^^^^
2015-12-22 19:25:45 +01:00
rule 'COMMANDS'
2015-12-22 19:25:45 +01:00
Commands
^^^^^^^^
*-a*, *--add* (<class_name>|\*)[:(<instance_name>|\*)] [*-o*|*--one-shot*] [monitor=MONITOR_SEL|desktop=DESKTOP_SEL|node=NODE_SEL] [state=STATE] [layer=LAYER] [split_dir=DIR] [split_ratio=RATIO] [(hidden|sticky|private|locked|marked|center|follow|manage|focus|border)=(on|off)] [rectangle=WxH+X+Y]::
2014-01-21 20:48:49 +01:00
Create a new rule.
*-r*, *--remove* ^<n>|head|tail|(<class_name>|\*)[:(<instance_name>|*)]...::
2014-01-21 20:48:49 +01:00
Remove the given rules.
2015-12-22 19:25:45 +01:00
*-l*, *--list*::
2014-01-21 20:48:49 +01:00
List the rules.
Config
~~~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
config [-m 'MONITOR_SEL'|-d 'DESKTOP_SEL'|-n 'NODE_SEL'] <setting> [<value>]::
Get or set the value of <setting>.
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
Subscribe
~~~~~~~~~
General Syntax
^^^^^^^^^^^^^^
2017-07-23 10:33:15 +02:00
subscribe ['OPTIONS'] (all|report|monitor|desktop|node|...)*::
2017-07-24 20:28:22 +02:00
Continuously print events. See the *EVENTS* section for the description of each event.
2017-07-23 10:33:15 +02:00
Options
^^^^^^^
2017-07-24 20:28:22 +02:00
*-f*, *--fifo*::
Print a path to a FIFO from which events can be read and return.
2017-07-23 10:33:15 +02:00
*-c*, *--count* 'COUNT'::
Stop the corresponding *bspc* process after having received 'COUNT' events.
2015-12-22 19:25:45 +01:00
Quit
~~~~
2013-06-26 21:50:01 +02:00
General Syntax
^^^^^^^^^^^^^^
2013-06-26 21:50:01 +02:00
quit [<status>]::
2014-01-21 20:48:49 +01:00
Quit with an optional exit status.
2013-06-26 21:50:01 +02:00
2014-02-17 11:55:34 +01:00
Exit Codes
----------
If the server can't handle a message, *bspc* will return with a non-zero exit code.
2014-02-17 11:55:34 +01:00
2013-06-26 21:50:01 +02:00
Settings
--------
2015-12-22 19:25:45 +01:00
Colors are in the form '#RRGGBB', booleans are 'true', 'on', 'false' or 'off'.
2013-06-26 21:50:01 +02:00
2015-01-15 14:18:25 +01:00
All the boolean settings are 'false' by default unless stated otherwise.
2013-06-26 21:50:01 +02:00
2013-09-15 11:51:12 +02:00
Global Settings
~~~~~~~~~~~~~~~
2013-06-26 21:50:01 +02:00
'normal_border_color'::
2014-01-21 20:48:49 +01:00
Color of the border of an unfocused window.
2013-06-26 21:50:01 +02:00
2015-12-22 19:25:45 +01:00
'active_border_color'::
Color of the border of a focused window of an unfocused monitor.
2013-10-12 21:16:51 +02:00
2015-12-22 19:25:45 +01:00
'focused_border_color'::
Color of the border of a focused window of a focused monitor.
2013-10-12 21:16:51 +02:00
2015-12-22 19:25:45 +01:00
'presel_feedback_color'::
Color of the *node --presel-{dir,ratio}* message feedback area.
2013-06-26 21:50:01 +02:00
'split_ratio'::
2014-01-21 20:48:49 +01:00
Default split ratio.
2013-06-26 21:50:01 +02:00
'status_prefix'::
2014-01-21 20:48:49 +01:00
Prefix prepended to each of the status lines.
'external_rules_command'::
External command used to retrieve rule consequences. The command will receive the following arguments: window ID, class name, instance name, and intermediate consequences. The output of that command must have the following format: *key1=value1 key2=value2 ...* (the valid key/value pairs are given in the description of the 'rule' command).
'initial_polarity'::
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: *first_child*, *second_child*.
'directional_focus_tightness'::
The tightness of the algorithm used to decide whether a window is on the 'DIR' side of another window. Accept the following values: *high*, *low*.
'borderless_monocle'::
Remove borders of tiled windows for the *monocle* desktop layout.
2013-06-26 21:50:01 +02:00
'gapless_monocle'::
Remove gaps of tiled windows for the *monocle* desktop layout.
2013-06-26 21:50:01 +02:00
'paddingless_monocle'::
Remove padding space for the *monocle* desktop layout.
2015-12-22 19:25:45 +01:00
'single_monocle'::
Set the desktop layout to *monocle* if there's only one tiled window in the tree.
'pointer_motion_interval'::
The minimum interval, in milliseconds, between two motion notify events.
2016-04-07 18:08:32 +02:00
'pointer_modifier'::
Keyboard modifier used for moving or resizing windows. Accept the following values: *shift*, *control*, *lock*, *mod1*, *mod2*, *mod3*, *mod4*, *mod5*.
'pointer_action1'::
'pointer_action2'::
'pointer_action3'::
Action performed when pressing 'pointer_modifier' + 'button<n>'. Accept the following values: *move*, *resize_side*, *resize_corner*, *focus*, *none*.
2016-04-07 18:08:32 +02:00
'click_to_focus'::
Button used for focusing a window (or a monitor). The possible values are: *button1*, *button2*, *button3*, *any*, *none*.
2016-04-07 18:08:32 +02:00
2016-11-17 18:07:26 +01:00
'swallow_first_click'::
Don't replay the click that makes a window focused if 'click_to_focus' isn't *none*.
2016-11-17 18:07:26 +01:00
'focus_follows_pointer'::
2014-01-21 20:48:49 +01:00
Focus the window under the pointer.
2013-06-26 21:50:01 +02:00
2014-10-22 11:24:51 +02:00
'pointer_follows_focus'::
When focusing a window, put the pointer at its center.
'pointer_follows_monitor'::
2014-01-21 20:48:49 +01:00
When focusing a monitor, put the pointer at its center.
2013-06-26 21:50:01 +02:00
2013-10-26 17:54:44 +02:00
'ignore_ewmh_focus'::
Ignore EWMH focus requests coming from applications.
2013-09-23 11:45:00 +02:00
2015-01-15 14:18:25 +01:00
'center_pseudo_tiled'::
Center pseudo tiled windows into their tiling rectangles. Defaults to 'true'.
2016-04-07 18:08:32 +02:00
'honor_size_hints'::
Apply ICCCM window size hints.
2014-05-05 11:58:12 +02:00
'remove_disabled_monitors'::
2014-01-21 20:48:49 +01:00
Consider disabled monitors as disconnected.
2013-11-10 12:07:14 +01:00
'remove_unplugged_monitors'::
Remove unplugged monitors.
2014-04-29 11:50:09 +02:00
'merge_overlapping_monitors'::
Merge overlapping monitors (the bigger remains).
Monitor and Desktop Settings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2013-09-15 11:51:12 +02:00
'top_padding'::
'right_padding'::
'bottom_padding'::
'left_padding'::
2014-01-21 20:48:49 +01:00
Padding space added at the sides of the monitor or desktop.
Desktop Settings
~~~~~~~~~~~~~~~~
'window_gap'::
2014-01-21 20:48:49 +01:00
Size of the gap that separates windows.
2013-09-15 11:51:12 +02:00
Node Settings
~~~~~~~~~~~~~
'border_width'::
Window border width.
2016-04-07 18:08:32 +02:00
Pointer Bindings
----------------
'click_to_focus'::
Focus the window (or the monitor) under the pointer if the value isn't *none*.
2016-04-07 18:08:32 +02:00
'pointer_modifier' + 'button1'::
Move the window under the pointer.
'pointer_modifier' + 'button2'::
Resize the window under the pointer by dragging the nearest side.
'pointer_modifier' + 'button3'::
Resize the window under the pointer by dragging the nearest corner.
2013-06-26 21:50:01 +02:00
The behavior of 'pointer_modifier' + 'button<n>' can be modified through the 'pointer_action<n>' setting.
Events
------
'report'::
See the next section for the description of the format.
'monitor_add <monitor_id> <monitor_name> <monitor_geometry>'::
A monitor is added.
'monitor_rename <monitor_id> <old_name> <new_name>'::
A monitor is renamed.
'monitor_remove <monitor_id>'::
A monitor is removed.
'monitor_swap <src_monitor_id> <dst_monitor_id>'::
2016-02-01 11:46:03 +01:00
A monitor is swapped.
'monitor_focus <monitor_id>'::
A monitor is focused.
'monitor_geometry <monitor_id> <monitor_geometry>'::
The geometry of a monitor changed.
'desktop_add <monitor_id> <desktop_id> <desktop_name>'::
A desktop is added.
'desktop_rename <monitor_id> <desktop_id> <old_name> <new_name>'::
A desktop is renamed.
'desktop_remove <monitor_id> <desktop_id>'::
A desktop is removed.
'desktop_swap <src_monitor_id> <src_desktop_id> <dst_monitor_id> <dst_desktop_id>'::
A desktop is swapped.
'desktop_transfer <src_monitor_id> <src_desktop_id> <dst_monitor_id>'::
A desktop is transferred.
'desktop_focus <monitor_id> <desktop_id>'::
A desktop is focused.
'desktop_activate <monitor_id> <desktop_id>'::
2015-12-22 19:25:45 +01:00
A desktop is activated.
'desktop_layout <monitor_id> <desktop_id> tiled|monocle'::
The layout of a desktop changed.
'node_add <monitor_id> <desktop_id> <ip_id> <node_id>'::
A node is added.
'node_remove <monitor_id> <desktop_id> <node_id>'::
A node is removed.
'node_swap <src_monitor_id> <src_desktop_id> <src_node_id> <dst_monitor_id> <dst_desktop_id> <dst_node_id>'::
2015-12-22 19:25:45 +01:00
A node is swapped.
'node_transfer <src_monitor_id> <src_desktop_id> <src_node_id> <dst_monitor_id> <dst_desktop_id> <dst_node_id>'::
2015-12-22 19:25:45 +01:00
A node is transferred.
'node_focus <monitor_id> <desktop_id> <node_id>'::
2015-12-22 19:25:45 +01:00
A node is focused.
'node_activate <monitor_id> <desktop_id> <node_id>'::
2015-12-22 19:25:45 +01:00
A node is activated.
'node_presel <monitor_id> <desktop_id> <node_id> (dir DIR|ratio RATIO|cancel)'::
2015-12-22 19:25:45 +01:00
A node is preselected.
2015-12-22 19:25:45 +01:00
'node_stack <node_id_1> below|above <node_id_2>'::
A node is stacked below or above another node.
'node_geometry <monitor_id> <desktop_id> <node_id> <node_geometry>'::
The geometry of a window changed.
'node_state <monitor_id> <desktop_id> <node_id> tiled|pseudo_tiled|floating|fullscreen on|off'::
The state of a window changed.
'node_flag <monitor_id> <desktop_id> <node_id> hidden|sticky|private|locked|marked|urgent on|off'::
2015-12-22 19:25:45 +01:00
One of the flags of a node changed.
'node_layer <monitor_id> <desktop_id> <node_id> below|normal|above'::
The layer of a window changed.
'pointer_action <monitor_id> <desktop_id> <node_id> move|resize_corner|resize_side begin|end'::
A pointer action occured.
Please note that *bspwm* initializes monitors before it reads messages on its socket, therefore the initial monitor events can't be received.
Report Format
-------------
2013-10-11 12:23:26 +02:00
Each report event message is composed of items separated by colons.
2013-10-11 12:23:26 +02:00
2013-11-26 00:08:03 -05:00
Each item has the form '<type><value>' where '<type>' is the first character of the item.
2013-10-11 12:23:26 +02:00
'M<monitor_name>'::
2014-01-21 20:48:49 +01:00
Focused monitor.
2013-10-11 12:23:26 +02:00
'm<monitor_name>'::
2014-01-21 20:48:49 +01:00
Unfocused monitor.
2013-10-11 12:23:26 +02:00
'O<desktop_name>'::
2014-01-21 20:48:49 +01:00
Occupied focused desktop.
2013-10-11 12:23:26 +02:00
'o<desktop_name>'::
2014-01-21 20:48:49 +01:00
Occupied unfocused desktop.
2013-10-11 12:23:26 +02:00
'F<desktop_name>'::
2014-01-21 20:48:49 +01:00
Free focused desktop.
2013-10-11 12:23:26 +02:00
'f<desktop_name>'::
2014-01-21 20:48:49 +01:00
Free unfocused desktop.
2013-10-11 12:23:26 +02:00
'U<desktop_name>'::
2014-01-21 20:48:49 +01:00
Urgent focused desktop.
2013-10-11 12:23:26 +02:00
'u<desktop_name>'::
2014-01-21 20:48:49 +01:00
Urgent unfocused desktop.
2013-10-11 12:23:26 +02:00
'L(T|M)'::
Layout of the focused desktop of a monitor.
2013-10-11 12:23:26 +02:00
2015-12-22 19:25:45 +01:00
'T(T|P|F|=|@)'::
State of the focused node of a focused desktop.
'G(S?P?L?)'::
Active flags of the focused node of a focused desktop.
2013-06-26 21:50:01 +02:00
Environment Variables
---------------------
'BSPWM_SOCKET'::
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<host_name>_<display_number>_<screen_number>-socket'.
2013-06-26 21:50:01 +02:00
Contributors
------------
2013-07-03 09:25:27 +02:00
* Steven Allen <steven at stebalien.com>
2013-06-26 21:50:01 +02:00
* Thomas Adam <thomas at xteddy.org>
2013-07-03 09:25:27 +02:00
* Ivan Kanakarakis <ivan.kanak at gmail.com>
2013-06-26 21:50:01 +02:00
Author
------
2013-09-20 19:00:41 +02:00
Bastien Dejean <nihilhill at gmail.com>