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