]> git.lizzy.rs Git - bspwm.git/blob - doc/bspwm.1
Make mouse button actions configurable
[bspwm.git] / doc / bspwm.1
1 '\" t
2 .\"     Title: bspwm
3 .\"    Author: [see the "Author" section]
4 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
5 .\"      Date: 04/07/2016
6 .\"    Manual: Bspwm Manual
7 .\"    Source: Bspwm 0.9.1-11-ge1b5f77
8 .\"  Language: English
9 .\"
10 .TH "BSPWM" "1" "04/07/2016" "Bspwm 0\&.9\&.1\-11\-ge1b5f77" "Bspwm Manual"
11 .\" -----------------------------------------------------------------
12 .\" * Define some portability stuff
13 .\" -----------------------------------------------------------------
14 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 .\" http://bugs.debian.org/507673
16 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
17 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 .ie \n(.g .ds Aq \(aq
19 .el       .ds Aq '
20 .\" -----------------------------------------------------------------
21 .\" * set default formatting
22 .\" -----------------------------------------------------------------
23 .\" disable hyphenation
24 .nh
25 .\" disable justification (adjust text to left margin only)
26 .ad l
27 .\" -----------------------------------------------------------------
28 .\" * MAIN CONTENT STARTS HERE *
29 .\" -----------------------------------------------------------------
30 .SH "NAME"
31 bspwm \- Binary space partitioning window manager
32 .SH "SYNOPSIS"
33 .sp
34 \fBbspwm\fR [\fB\-h\fR|\fB\-v\fR|\fB\-c\fR \fICONFIG_PATH\fR]
35 .sp
36 \fBbspc\fR \fIDOMAIN\fR [\fISELECTOR\fR] \fICOMMANDS\fR
37 .sp
38 \fBbspc\fR \fICOMMAND\fR [\fIOPTIONS\fR] [\fIARGUMENTS\fR]
39 .SH "DESCRIPTION"
40 .sp
41 \fBbspwm\fR is a tiling window manager that represents windows as the leaves of a full binary tree\&.
42 .sp
43 It is controlled and configured via \fBbspc\fR\&.
44 .SH "OPTIONS"
45 .PP
46 \fB\-h\fR
47 .RS 4
48 Print the synopsis and exit\&.
49 .RE
50 .PP
51 \fB\-v\fR
52 .RS 4
53 Print the version and exit\&.
54 .RE
55 .PP
56 \fB\-c\fR \fICONFIG_PATH\fR
57 .RS 4
58 Use the given configuration file\&.
59 .RE
60 .SH "COMMON DEFINITIONS"
61 .sp
62 .if n \{\
63 .RS 4
64 .\}
65 .nf
66 DIR         := north | west | south | east
67 CYCLE_DIR   := next | prev
68 .fi
69 .if n \{\
70 .RE
71 .\}
72 .SH "SELECTORS"
73 .sp
74 Selectors are used to select a target node, desktop, or monitor\&. A selector can either describe the target relatively or name it globally\&.
75 .sp
76 Selectors consist of a descriptor and any number of non\-conflicting modifiers as follows:
77 .sp
78 .if n \{\
79 .RS 4
80 .\}
81 .nf
82 DESCRIPTOR(\&.MODIFIER)*
83 .fi
84 .if n \{\
85 .RE
86 .\}
87 .sp
88 An exclamation mark can be prepended to certain modifiers in order to reverse their meaning\&.
89 .SS "Node"
90 .sp
91 Select a node\&.
92 .sp
93 .if n \{\
94 .RS 4
95 .\}
96 .nf
97 NODE_SEL := (DIR|CYCLE_DIR|PATH|last|older|newer|focused|biggest|<node_id>)[\&.[!]focused][\&.[!]automatic][\&.[!]local][\&.[!]leaf][\&.[!]window][\&.[!]STATE][\&.[!]FLAG][\&.[!]LAYER][\&.[!]same_class]
98
99 STATE := tiled|pseudo_tiled|floating|fullscreen
100
101 FLAG := urgent|sticky|private|locked
102
103 LAYER := below|normal|above
104
105 PATH := @[DESKTOP_SEL:][[/]JUMP](/JUMP)*
106
107 JUMP := first|1|second|2|brother|parent|DIR
108 .fi
109 .if n \{\
110 .RE
111 .\}
112 .sp
113 .it 1 an-trap
114 .nr an-no-space-flag 1
115 .nr an-break-flag 1
116 .br
117 .ps +1
118 \fBDescriptors\fR
119 .RS 4
120 .PP
121 \fIDIR\fR
122 .RS 4
123 Selects the window in the given (spacial) direction relative to the active node\&.
124 .RE
125 .PP
126 \fICYCLE_DIR\fR
127 .RS 4
128 Selects the window in the given (cyclic) direction\&.
129 .RE
130 .PP
131 \fIPATH\fR
132 .RS 4
133 Selects the node at the given path\&.
134 .RE
135 .PP
136 last
137 .RS 4
138 Selects the previously focused node\&.
139 .RE
140 .PP
141 older
142 .RS 4
143 Selects the node older than the focused node in the history\&.
144 .RE
145 .PP
146 newer
147 .RS 4
148 Selects the node newer than the focused node in the history\&.
149 .RE
150 .PP
151 focused
152 .RS 4
153 Selects the currently focused node\&.
154 .RE
155 .PP
156 biggest
157 .RS 4
158 Selects the biggest window on the current desktop\&.
159 .RE
160 .PP
161 <node_id>
162 .RS 4
163 Selects the node with the given ID\&.
164 .RE
165 .RE
166 .sp
167 .it 1 an-trap
168 .nr an-no-space-flag 1
169 .nr an-break-flag 1
170 .br
171 .ps +1
172 \fBPath Jumps\fR
173 .RS 4
174 .sp
175 The initial node is the focused node (or the root if the path starts with \fI/\fR) of the focused desktop (or the selected desktop if the path has a \fIDESKTOP_SEL\fR prefix)\&.
176 .PP
177 1|first
178 .RS 4
179 Jumps to the first child\&.
180 .RE
181 .PP
182 2|second
183 .RS 4
184 Jumps to the second child\&.
185 .RE
186 .PP
187 brother
188 .RS 4
189 Jumps to the brother node\&.
190 .RE
191 .PP
192 parent
193 .RS 4
194 Jumps to the parent node\&.
195 .RE
196 .PP
197 \fIDIR\fR
198 .RS 4
199 Jumps to the node holding the edge in the given direction\&.
200 .RE
201 .RE
202 .sp
203 .it 1 an-trap
204 .nr an-no-space-flag 1
205 .nr an-break-flag 1
206 .br
207 .ps +1
208 \fBModifiers\fR
209 .RS 4
210 .PP
211 [!]focused
212 .RS 4
213 Only consider focused or unfocused nodes\&.
214 .RE
215 .PP
216 [!]automatic
217 .RS 4
218 Only consider nodes in automatic or manual insertion mode\&.
219 .RE
220 .PP
221 [!]local
222 .RS 4
223 Only consider nodes in or not in the current desktop\&.
224 .RE
225 .PP
226 [!]leaf
227 .RS 4
228 Only consider leaves or internal nodes\&.
229 .RE
230 .PP
231 [!]window
232 .RS 4
233 Only consider nodes that hold or don\(cqt hold a window\&.
234 .RE
235 .PP
236 [!](tiled|pseudo_tiled|floating|fullscreen)
237 .RS 4
238 Only consider windows in or not in the given state\&.
239 .RE
240 .PP
241 [!]same_class
242 .RS 4
243 Only consider windows that have or don\(cqt have the same class as the current window\&.
244 .RE
245 .PP
246 [!](private|urgent|sticky|locked)
247 .RS 4
248 Only consider windows that have or don\(cqt have the given flag set\&.
249 .RE
250 .PP
251 [!](below|normal|above)
252 .RS 4
253 Only consider windows in or not in the given layer\&.
254 .RE
255 .RE
256 .SS "Desktop"
257 .sp
258 Select a desktop\&.
259 .sp
260 .if n \{\
261 .RS 4
262 .\}
263 .nf
264 DESKTOP_SEL := (CYCLE_DIR|last|older|newer|[MONITOR_SEL:](focused|^<n>)|<desktop_id>|<desktop_name>)[\&.[!]occupied][\&.[!]focused][\&.[!]urgent][\&.[!]local]
265 .fi
266 .if n \{\
267 .RE
268 .\}
269 .sp
270 .it 1 an-trap
271 .nr an-no-space-flag 1
272 .nr an-break-flag 1
273 .br
274 .ps +1
275 \fBDescriptors\fR
276 .RS 4
277 .PP
278 \fICYCLE_DIR\fR
279 .RS 4
280 Selects the desktop in the given direction relative to the active desktop\&.
281 .RE
282 .PP
283 last
284 .RS 4
285 Selects the previously focused desktop\&.
286 .RE
287 .PP
288 older
289 .RS 4
290 Selects the desktop older than the focused desktop in the history\&.
291 .RE
292 .PP
293 newer
294 .RS 4
295 Selects the desktop newer than the focused desktop in the history\&.
296 .RE
297 .PP
298 focused
299 .RS 4
300 Selects the currently focused desktop\&.
301 .RE
302 .PP
303 ^<n>
304 .RS 4
305 Selects the nth desktop\&.
306 .RE
307 .PP
308 <desktop_id>
309 .RS 4
310 Selects the desktop with the given ID\&.
311 .RE
312 .PP
313 <desktop_name>
314 .RS 4
315 Selects the desktop with the given name\&.
316 .RE
317 .RE
318 .sp
319 .it 1 an-trap
320 .nr an-no-space-flag 1
321 .nr an-break-flag 1
322 .br
323 .ps +1
324 \fBModifiers\fR
325 .RS 4
326 .PP
327 [!]occupied
328 .RS 4
329 Only consider occupied or free desktops\&.
330 .RE
331 .PP
332 [!]focused
333 .RS 4
334 Only consider focused or unfocused desktops\&.
335 .RE
336 .PP
337 [!]urgent
338 .RS 4
339 Only consider urgent or non urgent desktops\&.
340 .RE
341 .PP
342 [!]local
343 .RS 4
344 Only consider inside or outside of the current monitor\&.
345 .RE
346 .RE
347 .SS "Monitor"
348 .sp
349 Select a monitor\&.
350 .sp
351 .if n \{\
352 .RS 4
353 .\}
354 .nf
355 MONITOR_SEL := (DIR|CYCLE_DIR|last|older|newer|focused|primary|^<n>|<monitor_id>|<monitor_name>)[\&.[!]occupied][\&.[!]focused]
356 .fi
357 .if n \{\
358 .RE
359 .\}
360 .sp
361 .it 1 an-trap
362 .nr an-no-space-flag 1
363 .nr an-break-flag 1
364 .br
365 .ps +1
366 \fBDescriptors\fR
367 .RS 4
368 .PP
369 \fIDIR\fR
370 .RS 4
371 Selects the monitor in the given (spacial) direction relative to the active monitor\&.
372 .RE
373 .PP
374 \fICYCLE_DIR\fR
375 .RS 4
376 Selects the monitor in the given (cyclic) direction relative to the active monitor\&.
377 .RE
378 .PP
379 last
380 .RS 4
381 Selects the previously focused monitor\&.
382 .RE
383 .PP
384 older
385 .RS 4
386 Selects the monitor older than the focused monitor in the history\&.
387 .RE
388 .PP
389 newer
390 .RS 4
391 Selects the monitor newer than the focused monitor in the history\&.
392 .RE
393 .PP
394 focused
395 .RS 4
396 Selects the currently focused monitor\&.
397 .RE
398 .PP
399 primary
400 .RS 4
401 Selects the primary monitor\&.
402 .RE
403 .PP
404 ^<n>
405 .RS 4
406 Selects the nth monitor\&.
407 .RE
408 .PP
409 <monitor_id>
410 .RS 4
411 Selects the monitor with the given ID\&.
412 .RE
413 .PP
414 <monitor_name>
415 .RS 4
416 Selects the monitor with the given name\&.
417 .RE
418 .RE
419 .sp
420 .it 1 an-trap
421 .nr an-no-space-flag 1
422 .nr an-break-flag 1
423 .br
424 .ps +1
425 \fBModifiers\fR
426 .RS 4
427 .PP
428 [!]occupied
429 .RS 4
430 Only consider monitors where the focused desktop is occupied or free\&.
431 .RE
432 .PP
433 [!]focused
434 .RS 4
435 Only consider focused or unfocused monitors\&.
436 .RE
437 .RE
438 .SH "WINDOW STATES"
439 .PP
440 tiled
441 .RS 4
442 Its size and position are determined by the splitting type and ratio of each node of its path in the window tree\&.
443 .RE
444 .PP
445 pseudo_tiled
446 .RS 4
447 Has an unrestricted size while being centered in its tiling space\&.
448 .RE
449 .PP
450 floating
451 .RS 4
452 Can be moved/resized freely\&. Although it doesn\(cqt occupy any tiling space, it is still part of the window tree\&.
453 .RE
454 .PP
455 fullscreen
456 .RS 4
457 Fills its monitor rectangle and has no borders\&. It is send in the ABOVE layer by default\&.
458 .RE
459 .SH "NODE FLAGS"
460 .PP
461 locked
462 .RS 4
463 Ignores the
464 \fBnode \-\-close\fR
465 message\&.
466 .RE
467 .PP
468 sticky
469 .RS 4
470 Stays in the focused desktop of its monitor\&.
471 .RE
472 .PP
473 private
474 .RS 4
475 Tries to keep the same tiling position/size\&.
476 .RE
477 .PP
478 urgent
479 .RS 4
480 Has its urgency hint set\&. This flag is set externally\&.
481 .RE
482 .SH "STACKING LAYERS"
483 .sp
484 There\(cqs three stacking layers: BELOW, NORMAL and ABOVE\&.
485 .sp
486 In each layer, the window are orderered as follow: tiled & pseudo\-tiled < fullscreen < floating\&.
487 .SH "DOMAINS"
488 .SS "Node"
489 .sp
490 .it 1 an-trap
491 .nr an-no-space-flag 1
492 .nr an-break-flag 1
493 .br
494 .ps +1
495 \fBGeneral Syntax\fR
496 .RS 4
497 .sp
498 node [\fINODE_SEL\fR] \fICOMMANDS\fR
499 .RE
500 .sp
501 .it 1 an-trap
502 .nr an-no-space-flag 1
503 .nr an-break-flag 1
504 .br
505 .ps +1
506 \fBCommands\fR
507 .RS 4
508 .PP
509 \fB\-f\fR, \fB\-\-focus\fR [\fINODE_SEL\fR]
510 .RS 4
511 Focus the selected or given node\&.
512 .RE
513 .PP
514 \fB\-a\fR, \fB\-\-activate\fR [\fINODE_SEL\fR]
515 .RS 4
516 Activate the selected or given node\&.
517 .RE
518 .PP
519 \fB\-d\fR, \fB\-\-to\-desktop\fR \fIDESKTOP_SEL\fR
520 .RS 4
521 Send the selected node to the given desktop\&.
522 .RE
523 .PP
524 \fB\-m\fR, \fB\-\-to\-monitor\fR \fIMONITOR_SEL\fR
525 .RS 4
526 Send the selected node to the given monitor\&.
527 .RE
528 .PP
529 \fB\-n\fR, \fB\-\-to\-node\fR \fINODE_SEL\fR
530 .RS 4
531 Transplant the selected node to the given node\&.
532 .RE
533 .PP
534 \fB\-s\fR, \fB\-\-swap\fR \fINODE_SEL\fR
535 .RS 4
536 Swap the selected node with the given node\&.
537 .RE
538 .PP
539 \fB\-p\fR, \fB\-\-presel\-dir\fR [~]\fIDIR\fR|cancel
540 .RS 4
541 Preselect the splitting area of the selected node (or cancel the preselection)\&. If
542 \fB~\fR
543 is prepended to
544 \fIDIR\fR
545 and the current preselection direction matches
546 \fIDIR\fR, then the argument is interpreted as
547 \fBcancel\fR\&.
548 .RE
549 .PP
550 \fB\-o\fR, \fB\-\-presel\-ratio\fR \fIRATIO\fR
551 .RS 4
552 Set the splitting ratio of the preselection area\&.
553 .RE
554 .PP
555 \fB\-v\fR, \fB\-\-move\fR \fIdx\fR \fIdy\fR
556 .RS 4
557 Move the selected window by
558 \fIdx\fR
559 pixels horizontally and
560 \fIdy\fR
561 pixels vertically\&.
562 .RE
563 .PP
564 \fB\-z\fR, \fB\-\-resize\fR top|left|bottom|right|top_left|top_right|bottom_right|bottom_left \fIdx\fR \fIdy\fR
565 .RS 4
566 Resize the selected window by moving the given handle by
567 \fIdx\fR
568 pixels horizontally and
569 \fIdy\fR
570 pixels vertically\&.
571 .RE
572 .PP
573 \fB\-r\fR, \fB\-\-ratio\fR \fIRATIO\fR|(+|\-)\fIPIXELS\fR
574 .RS 4
575 Set the splitting ratio of the selected node (0 <
576 \fIRATIO\fR
577 < 1)\&.
578 .RE
579 .PP
580 \fB\-R\fR, \fB\-\-rotate\fR \fI90|270|180\fR
581 .RS 4
582 Rotate the tree rooted at the selected node\&.
583 .RE
584 .PP
585 \fB\-F\fR, \fB\-\-flip\fR \fIhorizontal|vertical\fR
586 .RS 4
587 Flip the the tree rooted at selected node\&.
588 .RE
589 .PP
590 \fB\-E\fR, \fB\-\-equalize\fR
591 .RS 4
592 Reset the split ratios of the tree rooted at the selected node to their default value\&.
593 .RE
594 .PP
595 \fB\-B\fR, \fB\-\-balance\fR
596 .RS 4
597 Adjust the split ratios of the tree rooted at the selected node so that all windows occupy the same area\&.
598 .RE
599 .PP
600 \fB\-C\fR, \fB\-\-circulate\fR forward|backward
601 .RS 4
602 Circulate the windows of the tree rooted at the selected node\&.
603 .RE
604 .PP
605 \fB\-t\fR, \fB\-\-state\fR [~](tiled|pseudo_tiled|floating|fullscreen)
606 .RS 4
607 Set the state of the selected window\&. If
608 \fB~\fR
609 is present and the current state matches the given state, then the argument is interpreted as the last state\&.
610 .RE
611 .PP
612 \fB\-g\fR, \fB\-\-flag\fR locked|sticky|private[=on|off]
613 .RS 4
614 Set or toggle the given flag for the selected node\&.
615 .RE
616 .PP
617 \fB\-l\fR, \fB\-\-layer\fR below|normal|above
618 .RS 4
619 Set the stacking layer of the selected window\&.
620 .RE
621 .PP
622 \fB\-i\fR, \fB\-\-insert\-receptacle\fR
623 .RS 4
624 Insert a receptacle node at the selected node\&.
625 .RE
626 .PP
627 \fB\-c\fR, \fB\-\-close\fR
628 .RS 4
629 Close the windows rooted at the selected node\&.
630 .RE
631 .PP
632 \fB\-k\fR, \fB\-\-kill\fR
633 .RS 4
634 Kill the windows rooted at the selected node\&.
635 .RE
636 .RE
637 .SS "Desktop"
638 .sp
639 .it 1 an-trap
640 .nr an-no-space-flag 1
641 .nr an-break-flag 1
642 .br
643 .ps +1
644 \fBGeneral Syntax\fR
645 .RS 4
646 .sp
647 desktop [\fIDESKTOP_SEL\fR] \fICOMMANDS\fR
648 .RE
649 .sp
650 .it 1 an-trap
651 .nr an-no-space-flag 1
652 .nr an-break-flag 1
653 .br
654 .ps +1
655 \fBCOMMANDS\fR
656 .RS 4
657 .PP
658 \fB\-f\fR, \fB\-\-focus\fR [\fIDESKTOP_SEL\fR]
659 .RS 4
660 Focus the selected or given desktop\&.
661 .RE
662 .PP
663 \fB\-a\fR, \fB\-\-activate\fR [\fIDESKTOP_SEL\fR]
664 .RS 4
665 Activate the selected or given desktop\&.
666 .RE
667 .PP
668 \fB\-m\fR, \fB\-\-to\-monitor\fR \fIMONITOR_SEL\fR
669 .RS 4
670 Send the selected desktop to the given monitor\&.
671 .RE
672 .PP
673 \fB\-l\fR, \fB\-\-layout\fR \fICYCLE_DIR\fR|monocle|tiled
674 .RS 4
675 Set or cycle the layout of the selected desktop\&.
676 .RE
677 .PP
678 \fB\-n\fR, \fB\-\-rename\fR <new_name>
679 .RS 4
680 Rename the selected desktop\&.
681 .RE
682 .PP
683 \fB\-s\fR, \fB\-\-swap\fR \fIDESKTOP_SEL\fR
684 .RS 4
685 Swap the selected desktop with the given desktop\&.
686 .RE
687 .PP
688 \fB\-b\fR, \fB\-\-bubble\fR \fICYCLE_DIR\fR
689 .RS 4
690 Bubble the selected desktop in the given direction\&.
691 .RE
692 .PP
693 \fB\-r\fR, \fB\-\-remove\fR
694 .RS 4
695 Remove the selected desktop\&.
696 .RE
697 .RE
698 .SS "Monitor"
699 .sp
700 .it 1 an-trap
701 .nr an-no-space-flag 1
702 .nr an-break-flag 1
703 .br
704 .ps +1
705 \fBGeneral Syntax\fR
706 .RS 4
707 .sp
708 monitor [\fIMONITOR_SEL\fR] \fICOMMANDS\fR
709 .RE
710 .sp
711 .it 1 an-trap
712 .nr an-no-space-flag 1
713 .nr an-break-flag 1
714 .br
715 .ps +1
716 \fBCommands\fR
717 .RS 4
718 .PP
719 \fB\-f\fR, \fB\-\-focus\fR [\fIMONITOR_SEL\fR]
720 .RS 4
721 Focus the selected or given monitor\&.
722 .RE
723 .PP
724 \fB\-a\fR, \fB\-\-add\-desktops\fR <name>\&...
725 .RS 4
726 Create desktops with the given names in the selected monitor\&.
727 .RE
728 .PP
729 \fB\-o\fR, \fB\-\-reorder\-desktops\fR <name>\&...
730 .RS 4
731 Reorder the desktops of the selected monitor to match the given order\&.
732 .RE
733 .PP
734 \fB\-d\fR, \fB\-\-reset\-desktops\fR <name>\&...
735 .RS 4
736 Rename, add or remove desktops depending on whether the number of given names is equal, superior or inferior to the number of existing desktops\&.
737 .RE
738 .PP
739 \fB\-g\fR, \fB\-\-rectangle\fR WxH+X+Y
740 .RS 4
741 Set the rectangle of the selected monitor\&.
742 .RE
743 .PP
744 \fB\-n\fR, \fB\-\-rename\fR <new_name>
745 .RS 4
746 Rename the selected monitor\&.
747 .RE
748 .PP
749 \fB\-s\fR, \fB\-\-swap\fR \fIMONITOR_SEL\fR
750 .RS 4
751 Swap the selected monitor with the given monitor\&.
752 .RE
753 .PP
754 \fB\-r\fR, \fB\-\-remove\fR
755 .RS 4
756 Remove the selected monitor\&.
757 .RE
758 .RE
759 .SS "Query"
760 .sp
761 .it 1 an-trap
762 .nr an-no-space-flag 1
763 .nr an-break-flag 1
764 .br
765 .ps +1
766 \fBGeneral Syntax\fR
767 .RS 4
768 .sp
769 query \fICOMMANDS\fR [\fIOPTIONS\fR]
770 .RE
771 .sp
772 .it 1 an-trap
773 .nr an-no-space-flag 1
774 .nr an-break-flag 1
775 .br
776 .ps +1
777 \fBCommands\fR
778 .RS 4
779 .PP
780 \fB\-N\fR, \fB\-\-nodes\fR
781 .RS 4
782 List the IDs of the matching nodes\&.
783 .RE
784 .PP
785 \fB\-D\fR, \fB\-\-desktops\fR
786 .RS 4
787 List the IDs of the matching desktops\&.
788 .RE
789 .PP
790 \fB\-M\fR, \fB\-\-monitors\fR
791 .RS 4
792 List the IDs of the matching monitors\&.
793 .RE
794 .PP
795 \fB\-T\fR, \fB\-\-tree\fR
796 .RS 4
797 Print a JSON representation of the matching item\&.
798 .RE
799 .RE
800 .sp
801 .it 1 an-trap
802 .nr an-no-space-flag 1
803 .nr an-break-flag 1
804 .br
805 .ps +1
806 \fBOptions\fR
807 .RS 4
808 .PP
809 [\fB\-m\fR,\fB\-\-monitor\fR [\fIMONITOR_SEL\fR]] | [\fB\-d\fR,\fB\-\-desktop\fR [\fIDESKTOP_SEL\fR]] | [\fB\-n\fR, \fB\-\-node\fR [\fINODE_SEL\fR]]
810 .RS 4
811 Constrain matches to the selected monitor, desktop or node\&. The descriptor can be omitted for
812 \fI\-M\fR,
813 \fI\-D\fR
814 and
815 \fI\-N\fR\&.
816 .RE
817 .RE
818 .SS "Wm"
819 .sp
820 .it 1 an-trap
821 .nr an-no-space-flag 1
822 .nr an-break-flag 1
823 .br
824 .ps +1
825 \fBGeneral Syntax\fR
826 .RS 4
827 .sp
828 wm \fICOMMANDS\fR
829 .RE
830 .sp
831 .it 1 an-trap
832 .nr an-no-space-flag 1
833 .nr an-break-flag 1
834 .br
835 .ps +1
836 \fBCommands\fR
837 .RS 4
838 .PP
839 \fB\-d\fR, \fB\-\-dump\-state\fR
840 .RS 4
841 Dump the current world state on standard output\&.
842 .RE
843 .PP
844 \fB\-l\fR, \fB\-\-load\-state\fR <file_path>
845 .RS 4
846 Load a world state from the given file\&.
847 .RE
848 .PP
849 \fB\-a\fR, \fB\-\-add\-monitor\fR <name> WxH+X+Y
850 .RS 4
851 Add a monitor for the given name and rectangle\&.
852 .RE
853 .PP
854 \fB\-o\fR, \fB\-\-adopt\-orphans\fR
855 .RS 4
856 Manage all the unmanaged windows remaining from a previous session\&.
857 .RE
858 .PP
859 \fB\-h\fR, \fB\-\-record\-history\fR on|off
860 .RS 4
861 Enable or disable the recording of node focus history\&.
862 .RE
863 .PP
864 \fB\-g\fR, \fB\-\-get\-status\fR
865 .RS 4
866 Print the current status information\&.
867 .RE
868 .RE
869 .SS "Rule"
870 .sp
871 .it 1 an-trap
872 .nr an-no-space-flag 1
873 .nr an-break-flag 1
874 .br
875 .ps +1
876 \fBGeneral Syntax\fR
877 .RS 4
878 .sp
879 rule \fICOMMANDS\fR
880 .RE
881 .sp
882 .it 1 an-trap
883 .nr an-no-space-flag 1
884 .nr an-break-flag 1
885 .br
886 .ps +1
887 \fBCommands\fR
888 .RS 4
889 .PP
890 \fB\-a\fR, \fB\-\-add\fR (<class_name>|*)[:(<instance_name>|*)] [\fB\-o\fR|\fB\-\-one\-shot\fR] [monitor=MONITOR_SEL|desktop=DESKTOP_SEL|node=NODE_SEL] [state=STATE] [layer=LAYER] [split_dir=DIR] [split_ratio=RATIO] [(locked|sticky|private|center|follow|manage|focus|border)=(on|off)]
891 .RS 4
892 Create a new rule\&.
893 .RE
894 .PP
895 \fB\-r\fR, \fB\-\-remove\fR ^<n>|head|tail|(<class_name>|*)[:(<instance_name>|*)]\&...
896 .RS 4
897 Remove the given rules\&.
898 .RE
899 .PP
900 \fB\-l\fR, \fB\-\-list\fR
901 .RS 4
902 List the rules\&.
903 .RE
904 .RE
905 .SS "Config"
906 .sp
907 .it 1 an-trap
908 .nr an-no-space-flag 1
909 .nr an-break-flag 1
910 .br
911 .ps +1
912 \fBGeneral Syntax\fR
913 .RS 4
914 .PP
915 config [\-m \fIMONITOR_SEL\fR|\-d \fIDESKTOP_SEL\fR|\-n \fINODE_SEL\fR] <key> [<value>]
916 .RS 4
917 Get or set the value of <key>\&.
918 .RE
919 .RE
920 .SS "Subscribe"
921 .sp
922 .it 1 an-trap
923 .nr an-no-space-flag 1
924 .nr an-break-flag 1
925 .br
926 .ps +1
927 \fBGeneral Syntax\fR
928 .RS 4
929 .PP
930 subscribe (all|report|monitor|desktop|node|\&...)*
931 .RS 4
932 Continuously print status information\&. See the
933 \fBEVENTS\fR
934 section for the detailed description of each event\&.
935 .RE
936 .RE
937 .SS "Quit"
938 .sp
939 .it 1 an-trap
940 .nr an-no-space-flag 1
941 .nr an-break-flag 1
942 .br
943 .ps +1
944 \fBGeneral Syntax\fR
945 .RS 4
946 .PP
947 quit [<status>]
948 .RS 4
949 Quit with an optional exit status\&.
950 .RE
951 .RE
952 .SH "EXIT CODES"
953 .sp
954 If the server can\(cqt handle a message, \fBbspc\fR will return with a non\-zero exit code\&.
955 .SH "SETTINGS"
956 .sp
957 Colors are in the form \fI#RRGGBB\fR, booleans are \fItrue\fR, \fIon\fR, \fIfalse\fR or \fIoff\fR\&.
958 .sp
959 All the boolean settings are \fIfalse\fR by default unless stated otherwise\&.
960 .SS "Global Settings"
961 .PP
962 \fInormal_border_color\fR
963 .RS 4
964 Color of the border of an unfocused window\&.
965 .RE
966 .PP
967 \fIactive_border_color\fR
968 .RS 4
969 Color of the border of a focused window of an unfocused monitor\&.
970 .RE
971 .PP
972 \fIfocused_border_color\fR
973 .RS 4
974 Color of the border of a focused window of a focused monitor\&.
975 .RE
976 .PP
977 \fIpresel_feedback_color\fR
978 .RS 4
979 Color of the
980 \fBnode \-\-presel\-{dir,ratio}\fR
981 message feedback area\&.
982 .RE
983 .PP
984 \fIsplit_ratio\fR
985 .RS 4
986 Default split ratio\&.
987 .RE
988 .PP
989 \fIstatus_prefix\fR
990 .RS 4
991 Prefix prepended to each of the status lines\&.
992 .RE
993 .PP
994 \fIexternal_rules_command\fR
995 .RS 4
996 External command used to retrieve rule consequences\&. The command will receive the the ID of the window being processed as its first argument and the class and instance names as second and third arguments\&. The output of that command must have the following format:
997 \fBkey1=value1 key2=value2 \&...\fR
998 (the valid key/value pairs are given in the description of the
999 \fIrule\fR
1000 command)\&.
1001 .RE
1002 .PP
1003 \fIinitial_polarity\fR
1004 .RS 4
1005 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:
1006 \fBfirst_child\fR,
1007 \fBsecond_child\fR\&.
1008 .RE
1009 .PP
1010 \fIhistory_aware_focus\fR
1011 .RS 4
1012 Give priority to the focus history when focusing nodes\&.
1013 .RE
1014 .PP
1015 \fIfocus_by_distance\fR
1016 .RS 4
1017 Base focusing on distances between windows\&.
1018 .RE
1019 .PP
1020 \fIborderless_monocle\fR
1021 .RS 4
1022 Remove borders of tiled windows for the
1023 \fBmonocle\fR
1024 desktop layout\&.
1025 .RE
1026 .PP
1027 \fIgapless_monocle\fR
1028 .RS 4
1029 Remove gaps of tiled windows for the
1030 \fBmonocle\fR
1031 desktop layout\&.
1032 .RE
1033 .PP
1034 \fIpaddingless_monocle\fR
1035 .RS 4
1036 Remove padding space for the
1037 \fBmonocle\fR
1038 desktop layout\&.
1039 .RE
1040 .PP
1041 \fIsingle_monocle\fR
1042 .RS 4
1043 Set the desktop layout to
1044 \fBmonocle\fR
1045 if there\(cqs only one tiled window in the tree\&.
1046 .RE
1047 .PP
1048 \fIpointer_modifier\fR
1049 .RS 4
1050 Keyboard modifier used for moving or resizing windows\&. Accept the following values:
1051 \fBshift\fR,
1052 \fBcontrol\fR,
1053 \fBlock\fR,
1054 \fBmod1\fR,
1055 \fBmod2\fR,
1056 \fBmod3\fR,
1057 \fBmod4\fR,
1058 \fBmod5\fR\&.
1059 .RE
1060 .PP
1061 \fIpointer_action1\fR, \fIpointer_action2\fR, \fIpointer_action3\fR
1062 .RS 4
1063 Action performed when pressing mouse buttons 1,2 & 3\&. Accept the following values:
1064 \fBmove\fR,
1065 \fBresize_side\fR,
1066 \fBresize_corner\fR,
1067 \fBfocus\fR\&.
1068 .RE
1069 .PP
1070 \fIclick_to_focus\fR
1071 .RS 4
1072 Focus a window (or a monitor) by clicking it\&.
1073 .RE
1074 .PP
1075 \fIfocus_follows_pointer\fR
1076 .RS 4
1077 Focus the window under the pointer\&.
1078 .RE
1079 .PP
1080 \fIpointer_follows_focus\fR
1081 .RS 4
1082 When focusing a window, put the pointer at its center\&.
1083 .RE
1084 .PP
1085 \fIpointer_follows_monitor\fR
1086 .RS 4
1087 When focusing a monitor, put the pointer at its center\&.
1088 .RE
1089 .PP
1090 \fIignore_ewmh_focus\fR
1091 .RS 4
1092 Ignore EWMH focus requests coming from applications\&.
1093 .RE
1094 .PP
1095 \fIcenter_pseudo_tiled\fR
1096 .RS 4
1097 Center pseudo tiled windows into their tiling rectangles\&. Defaults to
1098 \fItrue\fR\&.
1099 .RE
1100 .PP
1101 \fIhonor_size_hints\fR
1102 .RS 4
1103 Apply ICCCM window size hints\&.
1104 .RE
1105 .PP
1106 \fIremove_disabled_monitors\fR
1107 .RS 4
1108 Consider disabled monitors as disconnected\&.
1109 .RE
1110 .PP
1111 \fIremove_unplugged_monitors\fR
1112 .RS 4
1113 Remove unplugged monitors\&.
1114 .RE
1115 .PP
1116 \fImerge_overlapping_monitors\fR
1117 .RS 4
1118 Merge overlapping monitors (the bigger remains)\&.
1119 .RE
1120 .SS "Monitor and Desktop Settings"
1121 .PP
1122 \fItop_padding\fR, \fIright_padding\fR, \fIbottom_padding\fR, \fIleft_padding\fR
1123 .RS 4
1124 Padding space added at the sides of the monitor or desktop\&.
1125 .RE
1126 .SS "Desktop Settings"
1127 .PP
1128 \fIwindow_gap\fR
1129 .RS 4
1130 Size of the gap that separates windows\&.
1131 .RE
1132 .SS "Node Settings"
1133 .PP
1134 \fIborder_width\fR
1135 .RS 4
1136 Window border width\&.
1137 .RE
1138 .SH "POINTER BINDINGS"
1139 .PP
1140 \fIbutton1\fR
1141 .RS 4
1142 Focus the window under the pointer if
1143 \fIclick_to_focus\fR
1144 is set\&.
1145 .RE
1146 .PP
1147 \fIpointer_modifier\fR + \fIbutton1\fR
1148 .RS 4
1149 Move the window under the pointer\&.
1150 .RE
1151 .PP
1152 \fIpointer_modifier\fR + \fIbutton2\fR
1153 .RS 4
1154 Resize the window under the pointer by dragging the nearest side\&.
1155 .RE
1156 .PP
1157 \fIpointer_modifier\fR + \fIbutton3\fR
1158 .RS 4
1159 Resize the window under the pointer by dragging the nearest corner\&.
1160 .RE
1161 .SH "EVENTS"
1162 .PP
1163 \fIreport\fR
1164 .RS 4
1165 See the next section for the description of the format\&.
1166 .RE
1167 .PP
1168 \fImonitor_add <monitor_id> <monitor_name> <monitor_geometry>\fR
1169 .RS 4
1170 A monitor is added\&.
1171 .RE
1172 .PP
1173 \fImonitor_rename <monitor_id> <old_name> <new_name>\fR
1174 .RS 4
1175 A monitor is renamed\&.
1176 .RE
1177 .PP
1178 \fImonitor_remove <monitor_id>\fR
1179 .RS 4
1180 A monitor is removed\&.
1181 .RE
1182 .PP
1183 \fImonitor_swap <src_monitor_id> <dst_monitor_id>\fR
1184 .RS 4
1185 A monitor is swapped\&.
1186 .RE
1187 .PP
1188 \fImonitor_focus <monitor_id>\fR
1189 .RS 4
1190 A monitor is focused\&.
1191 .RE
1192 .PP
1193 \fImonitor_geometry <monitor_id> <monitor_geometry>\fR
1194 .RS 4
1195 The geometry of a monitor changed\&.
1196 .RE
1197 .PP
1198 \fIdesktop_add <monitor_id> <desktop_id> <desktop_name>\fR
1199 .RS 4
1200 A desktop is added\&.
1201 .RE
1202 .PP
1203 \fIdesktop_rename <monitor_id> <desktop_id> <old_name> <new_name>\fR
1204 .RS 4
1205 A desktop is renamed\&.
1206 .RE
1207 .PP
1208 \fIdesktop_remove <monitor_id> <desktop_id>\fR
1209 .RS 4
1210 A desktop is removed\&.
1211 .RE
1212 .PP
1213 \fIdesktop_swap <src_monitor_id> <src_desktop_id> <dst_monitor_id> <dst_desktop_id>\fR
1214 .RS 4
1215 A desktop is swapped\&.
1216 .RE
1217 .PP
1218 \fIdesktop_transfer <src_monitor_id> <src_desktop_id> <dst_monitor_id>\fR
1219 .RS 4
1220 A desktop is transferred\&.
1221 .RE
1222 .PP
1223 \fIdesktop_focus <monitor_id> <desktop_id>\fR
1224 .RS 4
1225 A desktop is focused\&.
1226 .RE
1227 .PP
1228 \fIdesktop_activate <monitor_id> <desktop_id>\fR
1229 .RS 4
1230 A desktop is activated\&.
1231 .RE
1232 .PP
1233 \fIdesktop_layout <monitor_id> <desktop_id> tiled|monocle\fR
1234 .RS 4
1235 The layout of a desktop changed\&.
1236 .RE
1237 .PP
1238 \fInode_manage <monitor_id> <desktop_id> <node_id> <ip_id>\fR
1239 .RS 4
1240 A window is managed\&.
1241 .RE
1242 .PP
1243 \fInode_unmanage <monitor_id> <desktop_id> <node_id>\fR
1244 .RS 4
1245 A window is unmanaged\&.
1246 .RE
1247 .PP
1248 \fInode_swap <src_monitor_id> <src_desktop_id> <src_node_id> <dst_monitor_id> <dst_desktop_id> <dst_node_id>\fR
1249 .RS 4
1250 A node is swapped\&.
1251 .RE
1252 .PP
1253 \fInode_transfer <src_monitor_id> <src_desktop_id> <src_node_id> <dst_monitor_id> <dst_desktop_id> <dst_node_id>\fR
1254 .RS 4
1255 A node is transferred\&.
1256 .RE
1257 .PP
1258 \fInode_focus <monitor_id> <desktop_id> <node_id>\fR
1259 .RS 4
1260 A node is focused\&.
1261 .RE
1262 .PP
1263 \fInode_activate <monitor_id> <desktop_id> <node_id>\fR
1264 .RS 4
1265 A node is activated\&.
1266 .RE
1267 .PP
1268 \fInode_presel <monitor_id> <desktop_id> <node_id> (dir DIR|ratio RATIO|cancel)\fR
1269 .RS 4
1270 A node is preselected\&.
1271 .RE
1272 .PP
1273 \fInode_stack <node_id_1> below|above <node_id_2>\fR
1274 .RS 4
1275 A node is stacked below or above another node\&.
1276 .RE
1277 .PP
1278 \fInode_geometry <monitor_id> <desktop_id> <node_id> <node_geometry>\fR
1279 .RS 4
1280 The geometry of a window changed\&.
1281 .RE
1282 .PP
1283 \fInode_state <monitor_id> <desktop_id> <node_id> tiled|pseudo_tiled|floating|fullscreen on|off\fR
1284 .RS 4
1285 The state of a window changed\&.
1286 .RE
1287 .PP
1288 \fInode_flag <monitor_id> <desktop_id> <node_id> sticky|private|locked|urgent on|off\fR
1289 .RS 4
1290 One of the flags of a node changed\&.
1291 .RE
1292 .PP
1293 \fInode_layer <monitor_id> <desktop_id> <node_id> below|normal|above\fR
1294 .RS 4
1295 The layer of a window changed\&.
1296 .RE
1297 .sp
1298 Please note that \fBbspwm\fR initializes monitors before it reads messages on its socket, therefore the initial monitor events can\(cqt be received\&.
1299 .SH "REPORT FORMAT"
1300 .sp
1301 Each report event message is composed of items separated by colons\&.
1302 .sp
1303 Each item has the form \fI<type><value>\fR where \fI<type>\fR is the first character of the item\&.
1304 .PP
1305 \fIM<monitor_name>\fR
1306 .RS 4
1307 Focused monitor\&.
1308 .RE
1309 .PP
1310 \fIm<monitor_name>\fR
1311 .RS 4
1312 Unfocused monitor\&.
1313 .RE
1314 .PP
1315 \fIO<desktop_name>\fR
1316 .RS 4
1317 Occupied focused desktop\&.
1318 .RE
1319 .PP
1320 \fIo<desktop_name>\fR
1321 .RS 4
1322 Occupied unfocused desktop\&.
1323 .RE
1324 .PP
1325 \fIF<desktop_name>\fR
1326 .RS 4
1327 Free focused desktop\&.
1328 .RE
1329 .PP
1330 \fIf<desktop_name>\fR
1331 .RS 4
1332 Free unfocused desktop\&.
1333 .RE
1334 .PP
1335 \fIU<desktop_name>\fR
1336 .RS 4
1337 Urgent focused desktop\&.
1338 .RE
1339 .PP
1340 \fIu<desktop_name>\fR
1341 .RS 4
1342 Urgent unfocused desktop\&.
1343 .RE
1344 .PP
1345 \fIL(T|M)\fR
1346 .RS 4
1347 Layout of the focused desktop of a monitor\&.
1348 .RE
1349 .PP
1350 \fIT(T|P|F|=|@)\fR
1351 .RS 4
1352 State of the focused node of a focused desktop\&.
1353 .RE
1354 .PP
1355 \fIG(S?P?L?)\fR
1356 .RS 4
1357 Active flags of the focused node of a focused desktop\&.
1358 .RE
1359 .SH "ENVIRONMENT VARIABLES"
1360 .PP
1361 \fIBSPWM_SOCKET\fR
1362 .RS 4
1363 The path of the socket used for the communication between
1364 \fBbspc\fR
1365 and
1366 \fBbspwm\fR\&. If it isn\(cqt defined, then the following path is used:
1367 \fI/tmp/bspwm<host_name>_<display_number>_<screen_number>\-socket\fR\&.
1368 .RE
1369 .SH "CONTRIBUTORS"
1370 .sp
1371 .RS 4
1372 .ie n \{\
1373 \h'-04'\(bu\h'+03'\c
1374 .\}
1375 .el \{\
1376 .sp -1
1377 .IP \(bu 2.3
1378 .\}
1379 Steven Allen <steven at stebalien\&.com>
1380 .RE
1381 .sp
1382 .RS 4
1383 .ie n \{\
1384 \h'-04'\(bu\h'+03'\c
1385 .\}
1386 .el \{\
1387 .sp -1
1388 .IP \(bu 2.3
1389 .\}
1390 Thomas Adam <thomas at xteddy\&.org>
1391 .RE
1392 .sp
1393 .RS 4
1394 .ie n \{\
1395 \h'-04'\(bu\h'+03'\c
1396 .\}
1397 .el \{\
1398 .sp -1
1399 .IP \(bu 2.3
1400 .\}
1401 Ivan Kanakarakis <ivan\&.kanak at gmail\&.com>
1402 .RE
1403 .SH "AUTHOR"
1404 .sp
1405 Bastien Dejean <nihilhill at gmail\&.com>