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