]> git.lizzy.rs Git - bspwm.git/blob - doc/bspwm.1
ae4f24b84b42ec2b3cfafc365a067321a671fb08
[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: 01/10/2016
6 .\"    Manual: Bspwm Manual
7 .\"    Source: Bspwm 0.9-125-g74166b0
8 .\"  Language: English
9 .\"
10 .TH "BSPWM" "1" "01/10/2016" "Bspwm 0\&.9\-125\-g74166b0" "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)\&. If
525 \fB~\fR
526 is prepended to
527 \fIDIR\fR
528 and the current preselection direction matches
529 \fIDIR\fR, then the argument is interpreted as
530 \fBcancel\fR\&.
531 .RE
532 .PP
533 \fB\-o\fR, \fB\-\-presel\-ratio\fR \fIRATIO\fR
534 .RS 4
535 Set the splitting ratio of the preselection area\&.
536 .RE
537 .PP
538 \fB\-r\fR, \fB\-\-ratio\fR \fIRATIO\fR|(+|\-)\fIPIXELS\fR
539 .RS 4
540 Set the splitting ratio of the selected node (0 <
541 \fIRATIO\fR
542 < 1)\&.
543 .RE
544 .PP
545 \fB\-R\fR, \fB\-\-rotate\fR \fI90|270|180\fR
546 .RS 4
547 Rotate the tree rooted at the selected node\&.
548 .RE
549 .PP
550 \fB\-F\fR, \fB\-\-flip\fR \fIhorizontal|vertical\fR
551 .RS 4
552 Flip the the tree rooted at selected node\&.
553 .RE
554 .PP
555 \fB\-E\fR, \fB\-\-equalize\fR
556 .RS 4
557 Reset the split ratios of the tree rooted at the selected node to their default value\&.
558 .RE
559 .PP
560 \fB\-B\fR, \fB\-\-balance\fR
561 .RS 4
562 Adjust the split ratios of the tree rooted at the selected node so that all windows occupy the same area\&.
563 .RE
564 .PP
565 \fB\-C\fR, \fB\-\-circulate\fR forward|backward
566 .RS 4
567 Circulate the windows of the tree rooted at the selected node\&.
568 .RE
569 .PP
570 \fB\-t\fR, \fB\-\-state\fR [~](tiled|pseudo_tiled|floating|fullscreen)
571 .RS 4
572 Set the state of the selected window\&. If
573 \fB~\fR
574 is present and the current state matches the given state, then the argument is interpreted as the last state\&.
575 .RE
576 .PP
577 \fB\-g\fR, \fB\-\-flag\fR locked|sticky|private[=on|off]
578 .RS 4
579 Set or toggle the given flag for the selected node\&.
580 .RE
581 .PP
582 \fB\-l\fR, \fB\-\-layer\fR below|normal|above
583 .RS 4
584 Set the stacking layer of the selected window\&.
585 .RE
586 .PP
587 \fB\-c\fR, \fB\-\-close\fR
588 .RS 4
589 Close the windows rooted at the selected node\&.
590 .RE
591 .PP
592 \fB\-k\fR, \fB\-\-kill\fR
593 .RS 4
594 Kill the windows rooted at the selected node\&.
595 .RE
596 .RE
597 .SS "Desktop"
598 .sp
599 .it 1 an-trap
600 .nr an-no-space-flag 1
601 .nr an-break-flag 1
602 .br
603 .ps +1
604 \fBGeneral Syntax\fR
605 .RS 4
606 .sp
607 desktop [\fIDESKTOP_SEL\fR] \fICOMMANDS\fR
608 .RE
609 .sp
610 .it 1 an-trap
611 .nr an-no-space-flag 1
612 .nr an-break-flag 1
613 .br
614 .ps +1
615 \fBCOMMANDS\fR
616 .RS 4
617 .PP
618 \fB\-f\fR, \fB\-\-focus\fR [\fIDESKTOP_SEL\fR]
619 .RS 4
620 Focus the selected or given desktop\&.
621 .RE
622 .PP
623 \fB\-a\fR, \fB\-\-activate\fR [\fIDESKTOP_SEL\fR]
624 .RS 4
625 Activate the selected or given desktop\&.
626 .RE
627 .PP
628 \fB\-m\fR, \fB\-\-to\-monitor\fR \fIMONITOR_SEL\fR
629 .RS 4
630 Send the selected desktop to the given monitor\&.
631 .RE
632 .PP
633 \fB\-l\fR, \fB\-\-layout\fR \fICYCLE_DIR\fR|monocle|tiled
634 .RS 4
635 Set or cycle the layout of the selected desktop\&.
636 .RE
637 .PP
638 \fB\-n\fR, \fB\-\-rename\fR <new_name>
639 .RS 4
640 Rename the selected desktop\&.
641 .RE
642 .PP
643 \fB\-s\fR, \fB\-\-swap\fR \fIDESKTOP_SEL\fR
644 .RS 4
645 Swap the selected desktop with the given desktop\&.
646 .RE
647 .PP
648 \fB\-b\fR, \fB\-\-bubble\fR \fICYCLE_DIR\fR
649 .RS 4
650 Bubble the selected desktop in the given direction\&.
651 .RE
652 .PP
653 \fB\-r\fR, \fB\-\-remove\fR
654 .RS 4
655 Remove the selected desktop\&.
656 .RE
657 .RE
658 .SS "Monitor"
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 \fBGeneral Syntax\fR
666 .RS 4
667 .sp
668 monitor [\fIMONITOR_SEL\fR] \fICOMMANDS\fR
669 .RE
670 .sp
671 .it 1 an-trap
672 .nr an-no-space-flag 1
673 .nr an-break-flag 1
674 .br
675 .ps +1
676 \fBCommands\fR
677 .RS 4
678 .PP
679 \fB\-f\fR, \fB\-\-focus\fR [\fIMONITOR_SEL\fR]
680 .RS 4
681 Focus the selected or given monitor\&.
682 .RE
683 .PP
684 \fB\-a\fR, \fB\-\-add\-desktops\fR <name>\&...
685 .RS 4
686 Create desktops with the given names in the selected monitor\&.
687 .RE
688 .PP
689 \fB\-r\fR, \fB\-\-remove\-desktops\fR <name>\&...
690 .RS 4
691 Remove desktops with the given names\&.
692 .RE
693 .PP
694 \fB\-o\fR, \fB\-\-reorder\-desktops\fR <name>\&...
695 .RS 4
696 Reorder the desktops of the selected monitor to match the given order\&.
697 .RE
698 .PP
699 \fB\-d\fR, \fB\-\-reset\-desktops\fR <name>\&...
700 .RS 4
701 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\&.
702 .RE
703 .PP
704 \fB\-g\fR, \fB\-\-rectangle\fR WxH+X+Y
705 .RS 4
706 Set the rectangle of the selected monitor\&.
707 .RE
708 .PP
709 \fB\-n\fR, \fB\-\-rename\fR <new_name>
710 .RS 4
711 Rename the selected monitor\&.
712 .RE
713 .PP
714 \fB\-s\fR, \fB\-\-swap\fR \fIMONITOR_SEL\fR
715 .RS 4
716 Swap the selected monitor with the given monitor\&.
717 .RE
718 .RE
719 .SS "Query"
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 \fBGeneral Syntax\fR
727 .RS 4
728 .sp
729 query \fICOMMANDS\fR [\fIOPTIONS\fR]
730 .RE
731 .sp
732 .it 1 an-trap
733 .nr an-no-space-flag 1
734 .nr an-break-flag 1
735 .br
736 .ps +1
737 \fBCommands\fR
738 .RS 4
739 .PP
740 \fB\-N\fR, \fB\-\-nodes\fR
741 .RS 4
742 List the IDs of the matching nodes\&.
743 .RE
744 .PP
745 \fB\-D\fR, \fB\-\-desktops\fR
746 .RS 4
747 List the names of the matching desktops\&.
748 .RE
749 .PP
750 \fB\-M\fR, \fB\-\-monitors\fR
751 .RS 4
752 List the names of the matching monitors\&.
753 .RE
754 .PP
755 \fB\-T\fR, \fB\-\-tree\fR
756 .RS 4
757 Print a JSON representation of the matching item\&.
758 .RE
759 .RE
760 .sp
761 .it 1 an-trap
762 .nr an-no-space-flag 1
763 .nr an-break-flag 1
764 .br
765 .ps +1
766 \fBOptions\fR
767 .RS 4
768 .PP
769 [\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]]
770 .RS 4
771 Constrain matches to the selected monitor, desktop or node\&. The descriptor can be omitted for
772 \fI\-M\fR,
773 \fI\-D\fR
774 and
775 \fI\-N\fR\&.
776 .RE
777 .RE
778 .SS "Wm"
779 .sp
780 .it 1 an-trap
781 .nr an-no-space-flag 1
782 .nr an-break-flag 1
783 .br
784 .ps +1
785 \fBGeneral Syntax\fR
786 .RS 4
787 .sp
788 wm \fICOMMANDS\fR
789 .RE
790 .sp
791 .it 1 an-trap
792 .nr an-no-space-flag 1
793 .nr an-break-flag 1
794 .br
795 .ps +1
796 \fBCommands\fR
797 .RS 4
798 .PP
799 \fB\-d\fR, \fB\-\-dump\-state\fR
800 .RS 4
801 Dump the current world state on standard output\&.
802 .RE
803 .PP
804 \fB\-l\fR, \fB\-\-load\-state\fR <file_path>
805 .RS 4
806 Load a world state from the given file\&.
807 .RE
808 .PP
809 \fB\-a\fR, \fB\-\-add\-monitor\fR <name> WxH+X+Y
810 .RS 4
811 Add a monitor for the given name and rectangle\&.
812 .RE
813 .PP
814 \fB\-r\fR, \fB\-\-remove\-monitor\fR <name>
815 .RS 4
816 Remove the monitor with the given name\&.
817 .RE
818 .PP
819 \fB\-o\fR, \fB\-\-adopt\-orphans\fR
820 .RS 4
821 Manage all the unmanaged windows remaining from a previous session\&.
822 .RE
823 .PP
824 \fB\-h\fR, \fB\-\-record\-history\fR on|off
825 .RS 4
826 Enable or disable the recording of node focus history\&.
827 .RE
828 .PP
829 \fB\-g\fR, \fB\-\-get\-status\fR
830 .RS 4
831 Print the current status information\&.
832 .RE
833 .RE
834 .SS "Pointer"
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 \fBGeneral Syntax\fR
842 .RS 4
843 .sp
844 pointer \fICOMMANDS\fR
845 .RE
846 .sp
847 .it 1 an-trap
848 .nr an-no-space-flag 1
849 .nr an-break-flag 1
850 .br
851 .ps +1
852 \fBCommands\fR
853 .RS 4
854 .PP
855 \fB\-g\fR, \fB\-\-grab\fR focus|move|resize_side|resize_corner
856 .RS 4
857 Initiate the given pointer action\&.
858 .RE
859 .PP
860 \fB\-t\fR, \fB\-\-track\fR <x> <y>
861 .RS 4
862 Pass the pointer root coordinates for the current pointer action\&.
863 .RE
864 .PP
865 \fB\-u\fR, \fB\-\-ungrab\fR
866 .RS 4
867 Terminate the current pointer action\&.
868 .RE
869 .RE
870 .SS "Rule"
871 .sp
872 .it 1 an-trap
873 .nr an-no-space-flag 1
874 .nr an-break-flag 1
875 .br
876 .ps +1
877 \fBGeneral Syntax\fR
878 .RS 4
879 .sp
880 rule \fICOMMANDS\fR
881 .RE
882 .sp
883 .it 1 an-trap
884 .nr an-no-space-flag 1
885 .nr an-break-flag 1
886 .br
887 .ps +1
888 \fBCommands\fR
889 .RS 4
890 .PP
891 \fB\-a\fR, \fB\-\-add\fR (<class_name>|*)[:(<instance_name>|*)] [\fB\-o\fR|\fB\-\-one\-shot\fR] [monitor=MONITOR_SEL|desktop=DESKTOP_SEL|node=NODE_SEL] [state=STATE] [layer=LAYER] [split_dir=DIR] [split_ratio=RATIO] [(locked|sticky|private|center|follow|manage|focus|border)=(on|off)]
892 .RS 4
893 Create a new rule\&.
894 .RE
895 .PP
896 \fB\-r\fR, \fB\-\-remove\fR ^<n>|head|tail|(<class_name>|*)[:(<instance_name>|*)]\&...
897 .RS 4
898 Remove the given rules\&.
899 .RE
900 .PP
901 \fB\-l\fR, \fB\-\-list\fR
902 .RS 4
903 List the rules\&.
904 .RE
905 .RE
906 .SS "Config"
907 .sp
908 .it 1 an-trap
909 .nr an-no-space-flag 1
910 .nr an-break-flag 1
911 .br
912 .ps +1
913 \fBGeneral Syntax\fR
914 .RS 4
915 .PP
916 config [\-m \fIMONITOR_SEL\fR|\-d \fIDESKTOP_SEL\fR|\-n \fINODE_SEL\fR] <key> [<value>]
917 .RS 4
918 Get or set the value of <key>\&.
919 .RE
920 .RE
921 .SS "Subscribe"
922 .sp
923 .it 1 an-trap
924 .nr an-no-space-flag 1
925 .nr an-break-flag 1
926 .br
927 .ps +1
928 \fBGeneral Syntax\fR
929 .RS 4
930 .PP
931 subscribe (all|report|monitor|desktop|node|\&...)*
932 .RS 4
933 Continuously print status information\&. See the
934 \fBEVENTS\fR
935 section for the detailed description of each event\&.
936 .RE
937 .RE
938 .SS "Quit"
939 .sp
940 .it 1 an-trap
941 .nr an-no-space-flag 1
942 .nr an-break-flag 1
943 .br
944 .ps +1
945 \fBGeneral Syntax\fR
946 .RS 4
947 .PP
948 quit [<status>]
949 .RS 4
950 Quit with an optional exit status\&.
951 .RE
952 .RE
953 .SH "EXIT CODES"
954 .sp
955 If the server can\(cqt handle a message, \fBbspc\fR will return with one of the following exit codes:
956 .PP
957 1
958 .RS 4
959 Failure\&.
960 .RE
961 .PP
962 2
963 .RS 4
964 Syntax error\&.
965 .RE
966 .PP
967 3
968 .RS 4
969 Unknown command\&.
970 .RE
971 .SH "SETTINGS"
972 .sp
973 Colors are in the form \fI#RRGGBB\fR, booleans are \fItrue\fR, \fIon\fR, \fIfalse\fR or \fIoff\fR\&.
974 .sp
975 All the boolean settings are \fIfalse\fR by default unless stated otherwise\&.
976 .SS "Global Settings"
977 .PP
978 \fInormal_border_color\fR
979 .RS 4
980 Color of the border of an unfocused window\&.
981 .RE
982 .PP
983 \fIactive_border_color\fR
984 .RS 4
985 Color of the border of a focused window of an unfocused monitor\&.
986 .RE
987 .PP
988 \fIfocused_border_color\fR
989 .RS 4
990 Color of the border of a focused window of a focused monitor\&.
991 .RE
992 .PP
993 \fIpresel_feedback_color\fR
994 .RS 4
995 Color of the
996 \fBnode \-\-presel\-{dir,ratio}\fR
997 message feedback area\&.
998 .RE
999 .PP
1000 \fIsplit_ratio\fR
1001 .RS 4
1002 Default split ratio\&.
1003 .RE
1004 .PP
1005 \fIstatus_prefix\fR
1006 .RS 4
1007 Prefix prepended to each of the status lines\&.
1008 .RE
1009 .PP
1010 \fIexternal_rules_command\fR
1011 .RS 4
1012 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:
1013 \fBkey1=value1 key2=value2 \&...\fR
1014 (the valid key/value pairs are given in the description of the
1015 \fIrule\fR
1016 command)\&.
1017 .RE
1018 .PP
1019 \fIinitial_polarity\fR
1020 .RS 4
1021 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:
1022 \fBfirst_child\fR,
1023 \fBsecond_child\fR\&.
1024 .RE
1025 .PP
1026 \fIhistory_aware_focus\fR
1027 .RS 4
1028 Give priority to the focus history when focusing nodes\&.
1029 .RE
1030 .PP
1031 \fIfocus_by_distance\fR
1032 .RS 4
1033 Base focusing on distances between windows\&.
1034 .RE
1035 .PP
1036 \fIborderless_monocle\fR
1037 .RS 4
1038 Remove borders of tiled windows for the
1039 \fBmonocle\fR
1040 desktop layout\&.
1041 .RE
1042 .PP
1043 \fIgapless_monocle\fR
1044 .RS 4
1045 Remove gaps of tiled windows for the
1046 \fBmonocle\fR
1047 desktop layout\&.
1048 .RE
1049 .PP
1050 \fIpaddingless_monocle\fR
1051 .RS 4
1052 Remove padding space for the
1053 \fBmonocle\fR
1054 desktop layout\&.
1055 .RE
1056 .PP
1057 \fIsingle_monocle\fR
1058 .RS 4
1059 Set the desktop layout to
1060 \fBmonocle\fR
1061 if there\(cqs only one tiled window in the tree\&.
1062 .RE
1063 .PP
1064 \fIfocus_follows_pointer\fR
1065 .RS 4
1066 Focus the window under the pointer\&.
1067 .RE
1068 .PP
1069 \fIpointer_follows_focus\fR
1070 .RS 4
1071 When focusing a window, put the pointer at its center\&.
1072 .RE
1073 .PP
1074 \fIpointer_follows_monitor\fR
1075 .RS 4
1076 When focusing a monitor, put the pointer at its center\&.
1077 .RE
1078 .PP
1079 \fIignore_ewmh_focus\fR
1080 .RS 4
1081 Ignore EWMH focus requests coming from applications\&.
1082 .RE
1083 .PP
1084 \fIcenter_pseudo_tiled\fR
1085 .RS 4
1086 Center pseudo tiled windows into their tiling rectangles\&. Defaults to
1087 \fItrue\fR\&.
1088 .RE
1089 .PP
1090 \fIremove_disabled_monitors\fR
1091 .RS 4
1092 Consider disabled monitors as disconnected\&.
1093 .RE
1094 .PP
1095 \fIremove_unplugged_monitors\fR
1096 .RS 4
1097 Remove unplugged monitors\&.
1098 .RE
1099 .PP
1100 \fImerge_overlapping_monitors\fR
1101 .RS 4
1102 Merge overlapping monitors (the bigger remains)\&.
1103 .RE
1104 .SS "Monitor and Desktop Settings"
1105 .PP
1106 \fItop_padding\fR, \fIright_padding\fR, \fIbottom_padding\fR, \fIleft_padding\fR
1107 .RS 4
1108 Padding space added at the sides of the monitor or desktop\&.
1109 .RE
1110 .SS "Default, Desktop Default and Window Settings"
1111 .PP
1112 \fIborder_width\fR
1113 .RS 4
1114 Window border width\&.
1115 .RE
1116 .SS "Default and Desktop Settings"
1117 .PP
1118 \fIwindow_gap\fR
1119 .RS 4
1120 Size of the gap that separates windows\&.
1121 .RE
1122 .SH "EVENTS"
1123 .PP
1124 \fIreport\fR
1125 .RS 4
1126 See the next section for the description of the format\&.
1127 .RE
1128 .PP
1129 \fImonitor_add <monitor_name> <monitor_id> <monitor_geometry>\fR
1130 .RS 4
1131 A monitor is added\&.
1132 .RE
1133 .PP
1134 \fImonitor_rename <old_name> <new_name>\fR
1135 .RS 4
1136 A monitor is renamed\&.
1137 .RE
1138 .PP
1139 \fImonitor_remove <monitor_name>\fR
1140 .RS 4
1141 A monitor is removed\&.
1142 .RE
1143 .PP
1144 \fImonitor_focus <monitor_name>\fR
1145 .RS 4
1146 A monitor is focused\&.
1147 .RE
1148 .PP
1149 \fImonitor_geometry <monitor_name> <monitor_geometry>\fR
1150 .RS 4
1151 The geometry of a monitor changed\&.
1152 .RE
1153 .PP
1154 \fIdesktop_add <monitor_name> <desktop_name>\fR
1155 .RS 4
1156 A desktop is added\&.
1157 .RE
1158 .PP
1159 \fIdesktop_rename <monitor_name> <old_name> <new_name>\fR
1160 .RS 4
1161 A desktop is renamed\&.
1162 .RE
1163 .PP
1164 \fIdesktop_remove <monitor_name> <desktop_name>\fR
1165 .RS 4
1166 A desktop is removed\&.
1167 .RE
1168 .PP
1169 \fIdesktop_swap <src_monitor_name> <src_desktop_name> <dst_monitor_name> <dst_desktop_name>\fR
1170 .RS 4
1171 A desktop is swapped\&.
1172 .RE
1173 .PP
1174 \fIdesktop_transfer <src_monitor_name> <src_desktop_name> <dst_monitor_name>\fR
1175 .RS 4
1176 A desktop is transferred\&.
1177 .RE
1178 .PP
1179 \fIdesktop_focus <monitor_name> <desktop_name>\fR
1180 .RS 4
1181 A desktop is focused\&.
1182 .RE
1183 .PP
1184 \fIdesktop_activate <monitor_name> <desktop_name>\fR
1185 .RS 4
1186 A desktop is activated\&.
1187 .RE
1188 .PP
1189 \fIdesktop_layout <monitor_name> <desktop_name> tiled|monocle\fR
1190 .RS 4
1191 The layout of a desktop changed\&.
1192 .RE
1193 .PP
1194 \fInode_manage <monitor_name> <desktop_name> <node_id> <ip_id>\fR
1195 .RS 4
1196 A window is managed\&.
1197 .RE
1198 .PP
1199 \fInode_unmanage <monitor_name> <desktop_name> <node_id>\fR
1200 .RS 4
1201 A window is unmanaged\&.
1202 .RE
1203 .PP
1204 \fInode_swap <src_monitor_name> <src_desktop_name> <src_node_id> <dst_monitor_name> <dst_desktop_name> <dst_node_id>\fR
1205 .RS 4
1206 A node is swapped\&.
1207 .RE
1208 .PP
1209 \fInode_transfer <src_monitor_name> <src_desktop_name> <src_node_id> <dst_monitor_name> <dst_desktop_name> <dst_node_id>\fR
1210 .RS 4
1211 A node is transferred\&.
1212 .RE
1213 .PP
1214 \fInode_focus <monitor_name> <desktop_name> <node_id>\fR
1215 .RS 4
1216 A node is focused\&.
1217 .RE
1218 .PP
1219 \fInode_activate <monitor_name> <desktop_name> <node_id>\fR
1220 .RS 4
1221 A node is activated\&.
1222 .RE
1223 .PP
1224 \fInode_presel <monitor_name> <desktop_name> <node_id> (dir DIR|ratio RATIO|cancel)\fR
1225 .RS 4
1226 A node is preselected\&.
1227 .RE
1228 .PP
1229 \fInode_stack <node_id_1> below|above <node_id_2>\fR
1230 .RS 4
1231 A node is stacked below or above another node\&.
1232 .RE
1233 .PP
1234 \fInode_geometry <monitor_name> <desktop_name> <node_id> <node_geometry>\fR
1235 .RS 4
1236 The geometry of a window changed\&.
1237 .RE
1238 .PP
1239 \fInode_state <monitor_name> <desktop_name> <node_id> tiled|pseudo_tiled|floating|fullscreen on|off\fR
1240 .RS 4
1241 The state of a window changed\&.
1242 .RE
1243 .PP
1244 \fInode_flag <monitor_name> <desktop_name> <node_id> sticky|private|locked|urgent on|off\fR
1245 .RS 4
1246 One of the flags of a node changed\&.
1247 .RE
1248 .PP
1249 \fInode_layer <monitor_name> <desktop_name> <node_id> below|normal|above\fR
1250 .RS 4
1251 The layer of a window changed\&.
1252 .RE
1253 .sp
1254 Please note that \fBbspwm\fR initializes monitors before it reads messages on its socket, therefore the initial monitor events can\(cqt be received\&.
1255 .SH "REPORT FORMAT"
1256 .sp
1257 Each report event message is composed of items separated by colons\&.
1258 .sp
1259 Each item has the form \fI<type><value>\fR where \fI<type>\fR is the first character of the item\&.
1260 .PP
1261 \fIM<monitor_name>\fR
1262 .RS 4
1263 Focused monitor\&.
1264 .RE
1265 .PP
1266 \fIm<monitor_name>\fR
1267 .RS 4
1268 Unfocused monitor\&.
1269 .RE
1270 .PP
1271 \fIO<desktop_name>\fR
1272 .RS 4
1273 Occupied focused desktop\&.
1274 .RE
1275 .PP
1276 \fIo<desktop_name>\fR
1277 .RS 4
1278 Occupied unfocused desktop\&.
1279 .RE
1280 .PP
1281 \fIF<desktop_name>\fR
1282 .RS 4
1283 Free focused desktop\&.
1284 .RE
1285 .PP
1286 \fIf<desktop_name>\fR
1287 .RS 4
1288 Free unfocused desktop\&.
1289 .RE
1290 .PP
1291 \fIU<desktop_name>\fR
1292 .RS 4
1293 Urgent focused desktop\&.
1294 .RE
1295 .PP
1296 \fIu<desktop_name>\fR
1297 .RS 4
1298 Urgent unfocused desktop\&.
1299 .RE
1300 .PP
1301 \fIL(T|M)\fR
1302 .RS 4
1303 Layout of the focused desktop of a monitor\&.
1304 .RE
1305 .PP
1306 \fIT(T|P|F|=|@)\fR
1307 .RS 4
1308 State of the focused node of a focused desktop\&.
1309 .RE
1310 .PP
1311 \fIG(S?P?L?)\fR
1312 .RS 4
1313 Active flags of the focused node of a focused desktop\&.
1314 .RE
1315 .SH "ENVIRONMENT VARIABLES"
1316 .PP
1317 \fIBSPWM_SOCKET\fR
1318 .RS 4
1319 The path of the socket used for the communication between
1320 \fBbspc\fR
1321 and
1322 \fBbspwm\fR\&. If it isn\(cqt defined, then the following path is used:
1323 \fI/tmp/bspwm<host_name>_<display_number>_<screen_number>\-socket\fR\&.
1324 .RE
1325 .SH "CONTRIBUTORS"
1326 .sp
1327 .RS 4
1328 .ie n \{\
1329 \h'-04'\(bu\h'+03'\c
1330 .\}
1331 .el \{\
1332 .sp -1
1333 .IP \(bu 2.3
1334 .\}
1335 Steven Allen <steven at stebalien\&.com>
1336 .RE
1337 .sp
1338 .RS 4
1339 .ie n \{\
1340 \h'-04'\(bu\h'+03'\c
1341 .\}
1342 .el \{\
1343 .sp -1
1344 .IP \(bu 2.3
1345 .\}
1346 Thomas Adam <thomas at xteddy\&.org>
1347 .RE
1348 .sp
1349 .RS 4
1350 .ie n \{\
1351 \h'-04'\(bu\h'+03'\c
1352 .\}
1353 .el \{\
1354 .sp -1
1355 .IP \(bu 2.3
1356 .\}
1357 Ivan Kanakarakis <ivan\&.kanak at gmail\&.com>
1358 .RE
1359 .SH "AUTHOR"
1360 .sp
1361 Bastien Dejean <nihilhill at gmail\&.com>