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