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