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