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