Select a node.
----
-NODE_SEL := [NODE_SEL#](DIR|CYCLE_DIR|PATH|any|last|newest|
+NODE_SEL := [NODE_SEL#](DIR|CYCLE_DIR|PATH|any|first_ancestor|last|newest|
older|newer|focused|pointed|biggest|smallest|
<node_id>)[.[!]focused][.[!]active][.[!]automatic][.[!]local]
- [.[!]leaf][.[!]window][.[!]STATE][.[!]FLAG][.[!]LAYER]
+ [.[!]leaf][.[!]window][.[!]STATE][.[!]FLAG][.[!]LAYER][.[!]SPLIT_TYPE]
[.[!]same_class][.[!]descendant_of][.[!]ancestor_of]
STATE := tiled|pseudo_tiled|floating|fullscreen
LAYER := below|normal|above
+SPLIT_TYPE := horizontal|vertical
+
PATH := @[DESKTOP_SEL:][[/]JUMP](/JUMP)*
JUMP := first|1|second|2|brother|parent|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.
+ Selects the node in the given (cyclic) direction relative to the reference node within a depth-first in-order traversal of the tree.
'PATH'::
Selects the node at the given path.
any::
Selects the first node that matches the given selectors.
+first_ancestor::
+ Selects the first ancestor of the reference node that matches the given selectors.
+
last::
Selects the previously focused node relative to the reference node.
Selects the currently focused node.
pointed::
- Selects the window under the pointer.
+ Selects the leaf under the pointer.
biggest::
- Selects the biggest window.
+ Selects the biggest leaf.
smallest::
- Selects the smallest window.
+ Selects the smallest leaf.
<node_id>::
Selects the node with the given ID.
Modifiers
^^^^^^^^^
-
-
[!]focused::
Only consider the focused node.
[!](below|normal|above)::
Only consider windows in the given layer.
+[!](horizontal|vertical)::
+ Only consider nodes with the given split type.
+
+
Desktop
~~~~~~~
[MONITOR_SEL:](focused|^<n>)|
<desktop_id>|<desktop_name>)[.[!]focused][.[!]active]
[.[!]occupied][.[!]urgent][.[!]local]
+ [.[!]LAYOUT][.[!]user_LAYOUT]
+
+LAYOUT := tiled|monocle
----
Descriptors
[!]local::
Only consider desktops inside the reference monitor.
+[!](tiled|monocle)::
+ Only consider desktops with the given layout.
+
+[!](user_tiled|user_monocle)::
+ Only consider desktops which have the given layout as userLayout.
+
Monitor
~~~~~~~
-------------
tiled::
- Its size and position are determined by the splitting type and ratio of each node of its path in the window tree.
+ Its size and position are determined by the window tree.
pseudo_tiled::
- Has an unrestricted size while being centered in its tiling space.
+ A tiled window that automatically shrinks but doesn't stretch beyond its floating size.
floating::
- Can be moved/resized freely. Although it doesn't occupy any tiling space, it is still part of the window tree.
+ Can be moved/resized freely. Although it doesn't use any tiling space, it is still part of the window tree.
fullscreen::
- Fills its monitor rectangle and has no borders. It is send in the ABOVE layer by default.
+ Fills its monitor rectangle and has no borders.
Node Flags
*-g*, *--get-status*::
Print the current status information.
+*-r*, *--restart*::
+ Restart the window manager
+
Rule
~~~~
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]::
+*-a*, *--add* (<class_name>|\*)[:(<instance_name>|\*)[:(<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]::
Create a new rule.
-*-r*, *--remove* ^<n>|head|tail|(<class_name>|\*)[:(<instance_name>|*)]...::
+*-r*, *--remove* ^<n>|head|tail|(<class_name>|\*)[:(<instance_name>|\*)[:(<name>|*)]]...::
Remove the given rules.
*-l*, *--list*::
'removal_adjustment'::
Adjust the brother when unlinking a node from the tree in accordance with the automatic insertion scheme.
+'presel_feedback'::
+ Draw the preselection feedback area. Defaults to 'true'.
+
'borderless_monocle'::
Remove borders of tiled windows for the *monocle* desktop layout.
'ignore_ewmh_fullscreen'::
Block the fullscreen state transitions that originate from an EWMH request. The possible values are: *none*, *all*, or a comma separated list of the following values: *enter*, *exit*.
+'ignore_ewmh_struts'::
+ Ignore strut hinting from clients requesting to reserve space (i.e. task bars).
+
'center_pseudo_tiled'::
Center pseudo tiled windows into their tiling rectangles. Defaults to 'true'.
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.
+ A pointer action occurred.
Please note that *bspwm* initializes monitors before it reads messages on its socket, therefore the initial monitor events can't be received.
'T(T|P|F|=|@)'::
State of the focused node of a focused desktop.
-'G(S?P?L?)'::
+'G(S?P?L?M?)'::
Active flags of the focused node of a focused desktop.
Environment Variables