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