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