]> git.lizzy.rs Git - bspwm.git/blob - doc/bspwm.1.asciidoc
Allow cycling the splitting type of a node
[bspwm.git] / doc / bspwm.1.asciidoc
1 :man source:   Bspwm
2 :man version:  {revnumber}
3 :man manual:   Bspwm Manual
4
5 bspwm(1)
6 ========
7
8 Name
9 ----
10
11 bspwm - Binary space partitioning window manager
12
13 Synopsis
14 --------
15
16 *bspwm* [*-h*|*-v*|*-c* 'CONFIG_PATH']
17
18 *bspc* 'DOMAIN' ['SELECTOR'] 'COMMANDS'
19
20 *bspc* 'COMMAND' ['OPTIONS'] ['ARGUMENTS']
21
22 Description
23 -----------
24
25 *bspwm* is a tiling window manager that represents windows as the leaves of a full binary tree.
26
27 It is controlled and configured via *bspc*.
28
29
30 Options
31 -------
32
33 *-h*::
34         Print the synopsis and exit.
35
36 *-v*::
37         Print the version and exit.
38
39 *-c* 'CONFIG_PATH'::
40         Use the given configuration file.
41
42 Common Definitions
43 ------------------
44
45 ----
46 DIR         := north | west | south | east
47 CYCLE_DIR   := next | prev
48 ----
49
50 Selectors
51 ---------
52
53 Selectors are used to select a target node, desktop, or monitor. A selector
54 can either describe the target relatively or name it globally.
55
56 Selectors consist of an optional reference, a descriptor and any number of
57 non-conflicting modifiers as follows:
58
59         [REFERENCE#]DESCRIPTOR(.MODIFIER)*
60
61 The relative targets are computed in relation to the given reference (the
62 default reference value is *focused*).
63
64 An exclamation mark can be prepended to any modifier in order to reverse its
65 meaning.
66
67 The following characters cannot be used in monitor or desktop names: *#*, *:*, *.*.
68
69 The special selector *%<name>* can be used to select a monitor or a desktop with an invalid name.
70
71 Node
72 ~~~~
73
74 Select a node.
75
76 ----
77 NODE_SEL := [NODE_SEL#](DIR|CYCLE_DIR|PATH|any|first_ancestor|last|newest|
78                         older|newer|focused|pointed|biggest|smallest|
79                         <node_id>)[.[!]focused][.[!]active][.[!]automatic][.[!]local]
80                                   [.[!]leaf][.[!]window][.[!]STATE][.[!]FLAG][.[!]LAYER][.[!]SPLIT_TYPE]
81                                   [.[!]same_class][.[!]descendant_of][.[!]ancestor_of]
82
83 STATE := tiled|pseudo_tiled|floating|fullscreen
84
85 FLAG := hidden|sticky|private|locked|marked|urgent
86
87 LAYER := below|normal|above
88
89 SPLIT_TYPE := horizontal|vertical
90
91 PATH := @[DESKTOP_SEL:][[/]JUMP](/JUMP)*
92
93 JUMP := first|1|second|2|brother|parent|DIR
94 ----
95
96 Descriptors
97 ^^^^^^^^^^^
98
99 'DIR'::
100         Selects the window in the given (spacial) direction relative to the reference node.
101
102 'CYCLE_DIR'::
103         Selects the node in the given (cyclic) direction relative to the reference node within a depth-first in-order traversal of the tree.
104
105 'PATH'::
106         Selects the node at the given path.
107
108 any::
109         Selects the first node that matches the given selectors.
110
111 first_ancestor::
112         Selects the first ancestor of the reference node that matches the given selectors.
113
114 last::
115         Selects the previously focused node relative to the reference node.
116
117 newest::
118         Selects the newest node in the history of the focused node.
119
120 older::
121         Selects the node older than the reference node in the history.
122
123 newer::
124         Selects the node newer than the reference node in the history.
125
126 focused::
127         Selects the currently focused node.
128
129 pointed::
130         Selects the leaf under the pointer.
131
132 biggest::
133         Selects the biggest leaf.
134
135 smallest::
136         Selects the smallest leaf.
137
138 <node_id>::
139         Selects the node with the given ID.
140
141 Path Jumps
142 ^^^^^^^^^^
143
144 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).
145
146 1|first::
147         Jumps to the first child.
148
149 2|second::
150         Jumps to the second child.
151
152 brother::
153         Jumps to the brother node.
154
155 parent::
156         Jumps to the parent node.
157
158 'DIR'::
159         Jumps to the node holding the edge in the given direction.
160
161 Modifiers
162 ^^^^^^^^^
163
164 [!]focused::
165         Only consider the focused node.
166
167 [!]active::
168         Only consider nodes that are the focused node of their desktop.
169
170 [!]automatic::
171         Only consider nodes in automatic insertion mode. See also *--presel-dir* under *Node* in the *DOMAINS* section below.
172
173 [!]local::
174         Only consider nodes in the reference desktop.
175
176 [!]leaf::
177         Only consider leaf nodes.
178
179 [!]window::
180         Only consider nodes that hold a window.
181
182 [!](tiled|pseudo_tiled|floating|fullscreen)::
183         Only consider windows in the given state.
184
185 [!]same_class::
186         Only consider windows that have the same class as the reference window.
187
188 [!]descendant_of::
189         Only consider nodes that are descendants of the reference node.
190
191 [!]ancestor_of::
192         Only consider nodes that are ancestors of the reference node.
193
194 [!](hidden|sticky|private|locked|marked|urgent)::
195         Only consider windows that have the given flag set.
196
197 [!](below|normal|above)::
198         Only consider windows in the given layer.
199
200 [!](horizontal|vertical)::
201         Only consider nodes with the given split type.
202
203
204 Desktop
205 ~~~~~~~
206
207 Select a desktop.
208
209 ----
210 DESKTOP_SEL := [DESKTOP_SEL#](CYCLE_DIR|any|last|newest|older|newer|
211                               [MONITOR_SEL:](focused|^<n>)|
212                               <desktop_id>|<desktop_name>)[.[!]focused][.[!]active]
213                                                           [.[!]occupied][.[!]urgent][.[!]local]
214                                                           [.[!]LAYOUT][.[!]user_LAYOUT]
215
216 LAYOUT := tiled|monocle
217 ----
218
219 Descriptors
220 ^^^^^^^^^^^
221
222 'CYCLE_DIR'::
223         Selects the desktop in the given direction relative to the reference desktop.
224
225 any::
226         Selects the first desktop that matches the given selectors.
227
228 last::
229         Selects the previously focused desktop relative to the reference desktop.
230
231 newest::
232         Selects the newest desktop in the history of the focused desktops.
233
234 older::
235         Selects the desktop older than the reference desktop in the history.
236
237 newer::
238         Selects the desktop newer than the reference desktop in the history.
239
240 focused::
241         Selects the currently focused desktop.
242
243 ^<n>::
244         Selects the nth desktop. If *MONITOR_SEL* is given, selects the nth desktop on the selected monitor.
245
246 <desktop_id>::
247         Selects the desktop with the given ID.
248
249 <desktop_name>::
250         Selects the desktop with the given name.
251
252 Modifiers
253 ^^^^^^^^^
254
255 [!]focused::
256         Only consider the focused desktop.
257
258 [!]active::
259         Only consider desktops that are the focused desktop of their monitor.
260
261 [!]occupied::
262         Only consider occupied desktops.
263
264 [!]urgent::
265         Only consider urgent desktops.
266
267 [!]local::
268         Only consider desktops inside the reference monitor.
269
270 [!](tiled|monocle)::
271         Only consider desktops with the given layout.
272
273 [!](user_tiled|user_monocle)::
274         Only consider desktops which have the given layout as userLayout.
275
276 Monitor
277 ~~~~~~~
278
279 Select a monitor.
280
281 ----
282 MONITOR_SEL := [MONITOR_SEL#](DIR|CYCLE_DIR|any|last|newest|older|newer|
283                               focused|pointed|primary|^<n>|
284                               <monitor_id>|<monitor_name>)[.[!]focused][.[!]occupied]
285 ----
286
287 Descriptors
288 ^^^^^^^^^^^
289
290 'DIR'::
291         Selects the monitor in the given (spacial) direction relative to the reference monitor.
292
293 'CYCLE_DIR'::
294         Selects the monitor in the given (cyclic) direction relative to the reference monitor.
295
296 any::
297         Selects the first monitor that matches the given selectors.
298
299 last::
300         Selects the previously focused monitor relative to the reference monitor.
301
302 newest::
303         Selects the newest monitor in the history of the focused monitors.
304
305 older::
306         Selects the monitor older than the reference monitor in the history.
307
308 newer::
309         Selects the monitor newer than the reference monitor in the history.
310
311 focused::
312         Selects the currently focused monitor.
313
314 pointed::
315         Selects the monitor under the pointer.
316
317 primary::
318         Selects the primary monitor.
319
320 ^<n>::
321         Selects the nth monitor.
322
323 <monitor_id>::
324         Selects the monitor with the given ID.
325
326 <monitor_name>::
327         Selects the monitor with the given name.
328
329
330 Modifiers
331 ^^^^^^^^^
332
333 [!]focused::
334         Only consider the focused monitor.
335
336 [!]occupied::
337         Only consider monitors where the focused desktop is occupied.
338
339
340
341 Window States
342 -------------
343
344 tiled::
345         Its size and position are determined by the window tree.
346
347 pseudo_tiled::
348         A tiled window that automatically shrinks but doesn't stretch beyond its floating size.
349
350 floating::
351         Can be moved/resized freely. Although it doesn't use any tiling space, it is still part of the window tree.
352
353 fullscreen::
354         Fills its monitor rectangle and has no borders.
355
356
357 Node Flags
358 ----------
359
360 hidden::
361         Is hidden and doesn't occupy any tiling space.
362
363 sticky::
364         Stays in the focused desktop of its monitor.
365
366 private::
367         Tries to keep the same tiling position/size.
368
369 locked::
370         Ignores the *node --close* message.
371
372 marked::
373         Is marked (useful for deferred actions). A marked node becomes unmarked after being sent on a preselected node.
374
375 urgent::
376         Has its urgency hint set. This flag is set externally.
377
378
379 Stacking Layers
380 --------------
381
382 There's three stacking layers: BELOW, NORMAL and ABOVE.
383
384 In each layer, the window are orderered as follow: tiled & pseudo-tiled < floating < fullscreen.
385
386 Receptacles
387 -----------
388
389 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, preselected and killed. 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.
390
391
392 Domains
393 -------
394
395 Node
396 ~~~~
397
398 General Syntax
399 ^^^^^^^^^^^^^^
400
401 node ['NODE_SEL'] 'COMMANDS'
402
403 If 'NODE_SEL' is omitted, *focused* is assumed.
404
405 Commands
406 ^^^^^^^^
407 *-f*, *--focus* ['NODE_SEL']::
408         Focus the selected or given node.
409
410 *-a*, *--activate* ['NODE_SEL']::
411         Activate the selected or given node.
412
413 *-d*, *--to-desktop* 'DESKTOP_SEL' [*--follow*]::
414         Send the selected node to the given desktop. If *--follow* is passed, the focused node will stay focused.
415
416 *-m*, *--to-monitor* 'MONITOR_SEL' [*--follow*]::
417         Send the selected node to the given monitor. If *--follow* is passed, the focused node will stay focused.
418
419 *-n*, *--to-node* 'NODE_SEL' [*--follow*]::
420         Send the selected node on the given node. If *--follow* is passed, the focused node will stay focused.
421
422 *-s*, *--swap* 'NODE_SEL' [*--follow*]::
423         Swap the selected node with the given node. If *--follow* is passed, the focused node will stay focused.
424
425 *-p*, *--presel-dir* \[~]'DIR'|cancel::
426         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".
427
428 *-o*, *--presel-ratio* 'RATIO'::
429         Set the splitting ratio of the preselection area.
430
431 *-v*, *--move* 'dx' 'dy'::
432         Move the selected window by 'dx' pixels horizontally and 'dy' pixels vertically.
433
434 *-z*, *--resize* top|left|bottom|right|top_left|top_right|bottom_right|bottom_left 'dx' 'dy'::
435         Resize the selected window by moving the given handle by 'dx' pixels horizontally and 'dy' pixels vertically.
436
437 *-y*, *--type* 'CYCLE_DIR'|horizontal|vertical::
438         Set or cycle the splitting type of the selected node.
439
440 *-r*, *--ratio* 'RATIO'|(+|-)('PIXELS'|'FRACTION')::
441         Set the splitting ratio of the selected node (0 < 'RATIO' < 1).
442
443 *-R*, *--rotate* '90|270|180'::
444         Rotate the tree rooted at the selected node.
445
446 *-F*, *--flip* 'horizontal|vertical'::
447         Flip the tree rooted at selected node.
448
449 *-E*, *--equalize*::
450         Reset the split ratios of the tree rooted at the selected node to their default value.
451
452 *-B*, *--balance*::
453         Adjust the split ratios of the tree rooted at the selected node so that all windows occupy the same area.
454
455 *-C*, *--circulate* forward|backward::
456         Circulate the windows of the tree rooted at the selected node.
457
458 *-t*, *--state* \~|\[~]'STATE'::
459         Set the state of the selected window. If *\~* is present and the current state matches 'STATE', then the argument is interpreted as its last state. If the argument is just *~* with 'STATE' omitted, then the state of the selected window is set to its last state.
460
461 *-g*, *--flag* hidden|sticky|private|locked|marked[=on|off]::
462         Set or toggle the given flag for the selected node.
463
464 *-l*, *--layer* below|normal|above::
465         Set the stacking layer of the selected window.
466
467 *-i*, *--insert-receptacle*::
468         Insert a receptacle node at the selected node.
469
470 *-c*, *--close*::
471         Close the windows rooted at the selected node.
472
473 *-k*, *--kill*::
474         Kill the windows rooted at the selected node.
475
476 Desktop
477 ~~~~~~~
478
479 General Syntax
480 ^^^^^^^^^^^^^^
481
482 desktop ['DESKTOP_SEL'] 'COMMANDS'
483
484 If 'DESKTOP_SEL' is omitted, *focused* is assumed.
485
486 COMMANDS
487 ^^^^^^^^
488 *-f*, *--focus* ['DESKTOP_SEL']::
489         Focus the selected or given desktop.
490
491 *-a*, *--activate* ['DESKTOP_SEL']::
492         Activate the selected or given desktop.
493
494 *-m*, *--to-monitor* 'MONITOR_SEL' [*--follow*]::
495         Send the selected desktop to the given monitor. If *--follow* is passed, the focused desktop will stay focused.
496
497 *-s*, *--swap* 'DESKTOP_SEL' [*--follow*]::
498         Swap the selected desktop with the given desktop. If *--follow* is passed, the focused desktop will stay focused.
499
500 *-l*, *--layout* 'CYCLE_DIR'|monocle|tiled::
501         Set or cycle the layout of the selected desktop.
502
503 *-n*, *--rename* <new_name>::
504         Rename the selected desktop.
505
506 *-b*, *--bubble* 'CYCLE_DIR'::
507         Bubble the selected desktop in the given direction.
508
509 *-r*, *--remove*::
510         Remove the selected desktop.
511
512 Monitor
513 ~~~~~~~
514
515 General Syntax
516 ^^^^^^^^^^^^^^
517
518 monitor ['MONITOR_SEL'] 'COMMANDS'
519
520 If 'MONITOR_SEL' is omitted, *focused* is assumed.
521
522 Commands
523 ^^^^^^^^
524 *-f*, *--focus* ['MONITOR_SEL']::
525         Focus the selected or given monitor.
526
527 *-s*, *--swap* 'MONITOR_SEL'::
528         Swap the selected monitor with the given monitor.
529
530 *-a*, *--add-desktops* <name>...::
531         Create desktops with the given names in the selected monitor.
532
533 *-o*, *--reorder-desktops* <name>...::
534         Reorder the desktops of the selected monitor to match the given order.
535
536 *-d*, *--reset-desktops* <name>...::
537         Rename, add or remove desktops depending on whether the number of given names is equal, superior or inferior to the number of existing desktops.
538
539 *-g*, *--rectangle* WxH+X+Y::
540         Set the rectangle of the selected monitor.
541
542 *-n*, *--rename* <new_name>::
543         Rename the selected monitor.
544
545 *-r*, *--remove*::
546         Remove the selected monitor.
547
548 Query
549 ~~~~~
550
551 General Syntax
552 ^^^^^^^^^^^^^^
553
554 query 'COMMANDS' ['OPTIONS']
555
556 Commands
557 ^^^^^^^^
558
559 The optional selectors are references.
560
561 *-N*, *--nodes* ['NODE_SEL']::
562         List the IDs of the matching nodes.
563
564 *-D*, *--desktops* ['DESKTOP_SEL']::
565         List the IDs (or names) of the matching desktops.
566
567 *-M*, *--monitors* ['MONITOR_SEL']::
568         List the IDs (or names) of the matching monitors.
569
570 *-T*, *--tree*::
571         Print a JSON representation of the matching item.
572
573 Options
574 ^^^^^^^
575
576 *-m*,*--monitor* ['MONITOR_SEL'|'MONITOR_MODIFIERS']::
577 *-d*,*--desktop* ['DESKTOP_SEL'|'DESKTOP_MODIFIERS']::
578 *-n*, *--node* ['NODE_SEL'|'NODE_MODIFIERS']::
579         Constrain matches to the selected monitors, desktops or nodes.
580
581 *--names*::
582         Print names instead of IDs. Can only be used with '-M' and '-D'.
583
584 Wm
585 ~~
586
587 General Syntax
588 ^^^^^^^^^^^^^^
589
590 wm 'COMMANDS'
591
592 Commands
593 ^^^^^^^^
594
595 *-d*, *--dump-state*::
596         Dump the current world state on standard output.
597
598 *-l*, *--load-state* <file_path>::
599         Load a world state from the given file. The path must be absolute.
600
601 *-a*, *--add-monitor* <name> WxH+X+Y::
602         Add a monitor for the given name and rectangle.
603
604 *-O*, *--reorder-monitors* <name>...::
605         Reorder the list of monitors to match the given order.
606
607 *-o*, *--adopt-orphans*::
608         Manage all the unmanaged windows remaining from a previous session.
609
610 *-h*, *--record-history* on|off::
611         Enable or disable the recording of node focus history.
612
613 *-g*, *--get-status*::
614         Print the current status information.
615
616 *-r*, *--restart*::
617         Restart the window manager
618
619 Rule
620 ~~~~
621
622 General Syntax
623 ^^^^^^^^^^^^^^
624
625 rule 'COMMANDS'
626
627 Commands
628 ^^^^^^^^
629
630 *-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]::
631         Create a new rule.
632
633 *-r*, *--remove* ^<n>|head|tail|(<class_name>|\*)[:(<instance_name>|\*)[:(<name>|*)]]...::
634         Remove the given rules.
635
636 *-l*, *--list*::
637         List the rules.
638
639 Config
640 ~~~~~~
641
642 General Syntax
643 ^^^^^^^^^^^^^^
644
645 config [-m 'MONITOR_SEL'|-d 'DESKTOP_SEL'|-n 'NODE_SEL'] <setting> [<value>]::
646         Get or set the value of <setting>.
647
648 Subscribe
649 ~~~~~~~~~
650
651 General Syntax
652 ^^^^^^^^^^^^^^
653 subscribe ['OPTIONS'] (all|report|monitor|desktop|node|...)*::
654         Continuously print events. See the *EVENTS* section for the description of each event.
655
656 Options
657 ^^^^^^^
658
659 *-f*, *--fifo*::
660         Print a path to a FIFO from which events can be read and return.
661
662 *-c*, *--count* 'COUNT'::
663         Stop the corresponding *bspc* process after having received 'COUNT' events.
664
665 Quit
666 ~~~~
667
668 General Syntax
669 ^^^^^^^^^^^^^^
670
671 quit [<status>]::
672         Quit with an optional exit status.
673
674 Exit Codes
675 ----------
676
677 If the server can't handle a message, *bspc* will return with a non-zero exit code.
678
679 Settings
680 --------
681 Colors are in the form '#RRGGBB', booleans are 'true', 'on', 'false' or 'off'.
682
683 All the boolean settings are 'false' by default unless stated otherwise.
684
685 Global Settings
686 ~~~~~~~~~~~~~~~
687
688 'normal_border_color'::
689         Color of the border of an unfocused window.
690
691 'active_border_color'::
692         Color of the border of a focused window of an unfocused monitor.
693
694 'focused_border_color'::
695         Color of the border of a focused window of a focused monitor.
696
697 'presel_feedback_color'::
698         Color of the *node --presel-{dir,ratio}* message feedback area.
699
700 'split_ratio'::
701         Default split ratio.
702
703 'status_prefix'::
704         Prefix prepended to each of the status lines.
705
706 'external_rules_command'::
707         Absolute path to the 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).
708
709 'automatic_scheme'::
710         The insertion scheme used when the insertion point is in automatic mode. Accept the following values: *longest_side*, *alternate*, *spiral*.
711
712 'initial_polarity'::
713         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*.
714
715 'directional_focus_tightness'::
716         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*.
717
718 'removal_adjustment'::
719         Adjust the brother when unlinking a node from the tree in accordance with the automatic insertion scheme.
720
721 'presel_feedback'::
722         Draw the preselection feedback area. Defaults to 'true'.
723
724 'borderless_monocle'::
725         Remove borders of tiled windows for the *monocle* desktop layout.
726
727 'gapless_monocle'::
728         Remove gaps of tiled windows for the *monocle* desktop layout.
729
730 'top_monocle_padding'::
731 'right_monocle_padding'::
732 'bottom_monocle_padding'::
733 'left_monocle_padding'::
734         Padding space added at the sides of the screen for the *monocle* desktop layout.
735
736 'single_monocle'::
737         Set the desktop layout to *monocle* if there's only one tiled window in the tree.
738
739 'borderless_singleton'::
740         Remove borders of the only window on the only monitor regardless its layout.
741
742 'pointer_motion_interval'::
743         The minimum interval, in milliseconds, between two motion notify events.
744
745 'pointer_modifier'::
746         Keyboard modifier used for moving or resizing windows. Accept the following values: *shift*, *control*, *lock*, *mod1*, *mod2*, *mod3*, *mod4*, *mod5*.
747
748 'pointer_action1'::
749 'pointer_action2'::
750 'pointer_action3'::
751         Action performed when pressing 'pointer_modifier' + 'button<n>'. Accept the following values: *move*, *resize_side*, *resize_corner*, *focus*, *none*.
752
753 'click_to_focus'::
754         Button used for focusing a window (or a monitor). The possible values are: *button1*, *button2*, *button3*, *any*, *none*. Defaults to *button1*.
755
756 'swallow_first_click'::
757         Don't replay the click that makes a window focused if 'click_to_focus' isn't *none*.
758
759 'focus_follows_pointer'::
760         Focus the window under the pointer.
761
762 'pointer_follows_focus'::
763         When focusing a window, put the pointer at its center.
764
765 'pointer_follows_monitor'::
766         When focusing a monitor, put the pointer at its center.
767
768 'mapping_events_count'::
769         Handle the next *mapping_events_count* mapping notify events. A negative value implies that every event needs to be handled.
770
771 'ignore_ewmh_focus'::
772         Ignore EWMH focus requests coming from applications.
773
774 'ignore_ewmh_fullscreen'::
775         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*.
776
777 'ignore_ewmh_struts'::
778         Ignore strut hinting from clients requesting to reserve space (i.e. task bars).
779
780 'center_pseudo_tiled'::
781         Center pseudo tiled windows into their tiling rectangles. Defaults to 'true'.
782
783 'honor_size_hints'::
784         Apply ICCCM window size hints.
785
786 'remove_disabled_monitors'::
787         Consider disabled monitors as disconnected.
788
789 'remove_unplugged_monitors'::
790         Remove unplugged monitors.
791
792 'merge_overlapping_monitors'::
793         Merge overlapping monitors (the bigger remains).
794
795 Monitor and Desktop Settings
796 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
797
798 'top_padding'::
799 'right_padding'::
800 'bottom_padding'::
801 'left_padding'::
802         Padding space added at the sides of the monitor or desktop.
803
804 Desktop Settings
805 ~~~~~~~~~~~~~~~~
806
807 'window_gap'::
808         Size of the gap that separates windows.
809
810 Node Settings
811 ~~~~~~~~~~~~~
812
813 'border_width'::
814         Window border width.
815
816 Pointer Bindings
817 ----------------
818
819 'click_to_focus'::
820         Focus the window (or the monitor) under the pointer if the value isn't *none*.
821
822 'pointer_modifier' + 'button1'::
823         Move the window under the pointer.
824
825 'pointer_modifier' + 'button2'::
826         Resize the window under the pointer by dragging the nearest side.
827
828 'pointer_modifier' + 'button3'::
829         Resize the window under the pointer by dragging the nearest corner.
830
831 The behavior of 'pointer_modifier' + 'button<n>' can be modified through the 'pointer_action<n>' setting.
832
833 Events
834 ------
835
836 'report'::
837         See the next section for the description of the format.
838
839 'monitor_add <monitor_id> <monitor_name> <monitor_geometry>'::
840         A monitor is added.
841
842 'monitor_rename <monitor_id> <old_name> <new_name>'::
843         A monitor is renamed.
844
845 'monitor_remove <monitor_id>'::
846         A monitor is removed.
847
848 'monitor_swap <src_monitor_id> <dst_monitor_id>'::
849         A monitor is swapped.
850
851 'monitor_focus <monitor_id>'::
852         A monitor is focused.
853
854 'monitor_geometry <monitor_id> <monitor_geometry>'::
855         The geometry of a monitor changed.
856
857 'desktop_add <monitor_id> <desktop_id> <desktop_name>'::
858         A desktop is added.
859
860 'desktop_rename <monitor_id> <desktop_id> <old_name> <new_name>'::
861         A desktop is renamed.
862
863 'desktop_remove <monitor_id> <desktop_id>'::
864         A desktop is removed.
865
866 'desktop_swap <src_monitor_id> <src_desktop_id> <dst_monitor_id> <dst_desktop_id>'::
867         A desktop is swapped.
868
869 'desktop_transfer <src_monitor_id> <src_desktop_id> <dst_monitor_id>'::
870         A desktop is transferred.
871
872 'desktop_focus <monitor_id> <desktop_id>'::
873         A desktop is focused.
874
875 'desktop_activate <monitor_id> <desktop_id>'::
876         A desktop is activated.
877
878 'desktop_layout <monitor_id> <desktop_id> tiled|monocle'::
879         The layout of a desktop changed.
880
881 'node_add <monitor_id> <desktop_id> <ip_id> <node_id>'::
882         A node is added.
883
884 'node_remove <monitor_id> <desktop_id> <node_id>'::
885         A node is removed.
886
887 'node_swap <src_monitor_id> <src_desktop_id> <src_node_id> <dst_monitor_id> <dst_desktop_id> <dst_node_id>'::
888         A node is swapped.
889
890 'node_transfer <src_monitor_id> <src_desktop_id> <src_node_id> <dst_monitor_id> <dst_desktop_id> <dst_node_id>'::
891         A node is transferred.
892
893 'node_focus <monitor_id> <desktop_id> <node_id>'::
894         A node is focused.
895
896 'node_activate <monitor_id> <desktop_id> <node_id>'::
897         A node is activated.
898
899 'node_presel <monitor_id> <desktop_id> <node_id> (dir DIR|ratio RATIO|cancel)'::
900         A node is preselected.
901
902 'node_stack <node_id_1> below|above <node_id_2>'::
903         A node is stacked below or above another node.
904
905 'node_geometry <monitor_id> <desktop_id> <node_id> <node_geometry>'::
906         The geometry of a window changed.
907
908 'node_state <monitor_id> <desktop_id> <node_id> tiled|pseudo_tiled|floating|fullscreen on|off'::
909         The state of a window changed.
910
911 'node_flag <monitor_id> <desktop_id> <node_id> hidden|sticky|private|locked|marked|urgent on|off'::
912         One of the flags of a node changed.
913
914 'node_layer <monitor_id> <desktop_id> <node_id> below|normal|above'::
915         The layer of a window changed.
916
917 'pointer_action <monitor_id> <desktop_id> <node_id> move|resize_corner|resize_side begin|end'::
918         A pointer action occurred.
919
920 Please note that *bspwm* initializes monitors before it reads messages on its socket, therefore the initial monitor events can't be received.
921
922 Report Format
923 -------------
924
925 Each report event message is composed of items separated by colons.
926
927 Each item has the form '<type><value>' where '<type>' is the first character of the item.
928
929 'M<monitor_name>'::
930         Focused monitor.
931
932 'm<monitor_name>'::
933         Unfocused monitor.
934
935 'O<desktop_name>'::
936         Occupied focused desktop.
937
938 'o<desktop_name>'::
939         Occupied unfocused desktop.
940
941 'F<desktop_name>'::
942         Free focused desktop.
943
944 'f<desktop_name>'::
945         Free unfocused desktop.
946
947 'U<desktop_name>'::
948         Urgent focused desktop.
949
950 'u<desktop_name>'::
951         Urgent unfocused desktop.
952
953 'L(T|M)'::
954         Layout of the focused desktop of a monitor.
955
956 'T(T|P|F|=|@)'::
957         State of the focused node of a focused desktop.
958
959 'G(S?P?L?M?)'::
960         Active flags of the focused node of a focused desktop.
961
962 Environment Variables
963 ---------------------
964
965 'BSPWM_SOCKET'::
966         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'.
967
968 Contributors
969 ------------
970
971 * Steven Allen <steven at stebalien.com>
972 * Thomas Adam <thomas at xteddy.org>
973 * Ivan Kanakarakis <ivan.kanak at gmail.com>
974
975 Author
976 ------
977
978 Bastien Dejean <nihilhill at gmail.com>