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