]> git.lizzy.rs Git - bspwm.git/blob - doc/bspwm.1
Merge pull request #305 from Vrakfall/master
[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/09/2015
6 .\"    Manual: Bspwm Manual
7 .\"    Source: Bspwm 0.9
8 .\"  Language: English
9 .\"
10 .TH "BSPWM" "1" "11/09/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\&. See the
970 \fBEVENTS\fR
971 section for the detailed description of each event\&.
972 .RE
973 .PP
974 \fB\-\-get\-status\fR
975 .RS 4
976 Print the current status information\&.
977 .RE
978 .RE
979 .SS "Pointer"
980 .sp
981 .it 1 an-trap
982 .nr an-no-space-flag 1
983 .nr an-break-flag 1
984 .br
985 .ps +1
986 \fBGeneral Syntax\fR
987 .RS 4
988 .sp
989 pointer \fIOPTIONS\fR
990 .RE
991 .sp
992 .it 1 an-trap
993 .nr an-no-space-flag 1
994 .nr an-break-flag 1
995 .br
996 .ps +1
997 \fBOptions\fR
998 .RS 4
999 .PP
1000 \fB\-g\fR, \fB\-\-grab\fR focus|move|resize_side|resize_corner
1001 .RS 4
1002 Initiate the given pointer action\&.
1003 .RE
1004 .PP
1005 \fB\-t\fR, \fB\-\-track\fR <x> <y>
1006 .RS 4
1007 Pass the pointer root coordinates for the current pointer action\&.
1008 .RE
1009 .PP
1010 \fB\-u\fR, \fB\-\-ungrab\fR
1011 .RS 4
1012 Terminate the current pointer action\&.
1013 .RE
1014 .RE
1015 .SS "Rule"
1016 .sp
1017 .it 1 an-trap
1018 .nr an-no-space-flag 1
1019 .nr an-break-flag 1
1020 .br
1021 .ps +1
1022 \fBGeneral Syntax\fR
1023 .RS 4
1024 .sp
1025 rule \fIOPTIONS\fR
1026 .RE
1027 .sp
1028 .it 1 an-trap
1029 .nr an-no-space-flag 1
1030 .nr an-break-flag 1
1031 .br
1032 .ps +1
1033 \fBOptions\fR
1034 .RS 4
1035 .PP
1036 \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)]
1037 .RS 4
1038 Create a new rule\&.
1039 .RE
1040 .PP
1041 \fB\-r\fR, \fB\-\-remove\fR ^<n>|head|tail|<class_name>|<instance_name>|*\&...
1042 .RS 4
1043 Remove the given rules\&.
1044 .RE
1045 .PP
1046 \fB\-l\fR, \fB\-\-list\fR [<class_name>|<instance_name>|*]
1047 .RS 4
1048 List the rules\&.
1049 .RE
1050 .RE
1051 .SS "Config"
1052 .sp
1053 .it 1 an-trap
1054 .nr an-no-space-flag 1
1055 .nr an-break-flag 1
1056 .br
1057 .ps +1
1058 \fBGeneral Syntax\fR
1059 .RS 4
1060 .PP
1061 config [\-m \fIMONITOR_SEL\fR|\-d \fIDESKTOP_SEL\fR|\-w \fIWINDOW_SEL\fR] <key> [<value>]
1062 .RS 4
1063 Get or set the value of <key>\&.
1064 .RE
1065 .RE
1066 .SS "Quit"
1067 .sp
1068 .it 1 an-trap
1069 .nr an-no-space-flag 1
1070 .nr an-break-flag 1
1071 .br
1072 .ps +1
1073 \fBGeneral Syntax\fR
1074 .RS 4
1075 .PP
1076 quit [<status>]
1077 .RS 4
1078 Quit with an optional exit status\&.
1079 .RE
1080 .RE
1081 .SH "EXIT CODES"
1082 .sp
1083 If the server can\(cqt handle a message, \fBbspc\fR will return with one of the following exit codes:
1084 .PP
1085 1
1086 .RS 4
1087 Failure\&.
1088 .RE
1089 .PP
1090 2
1091 .RS 4
1092 Syntax error\&.
1093 .RE
1094 .PP
1095 3
1096 .RS 4
1097 Unknown command\&.
1098 .RE
1099 .SH "SETTINGS"
1100 .sp
1101 Colors are either \fI#RRGGBB\fR or X color names, booleans are \fItrue\fR, \fIon\fR, \fIfalse\fR or \fIoff\fR\&.
1102 .sp
1103 All the boolean settings are \fIfalse\fR by default unless stated otherwise\&.
1104 .SS "Global Settings"
1105 .PP
1106 \fIfocused_border_color\fR
1107 .RS 4
1108 Color of the border of a focused window of a focused monitor\&.
1109 .RE
1110 .PP
1111 \fIactive_border_color\fR
1112 .RS 4
1113 Color of the border of a focused window of an unfocused monitor\&.
1114 .RE
1115 .PP
1116 \fInormal_border_color\fR
1117 .RS 4
1118 Color of the border of an unfocused window\&.
1119 .RE
1120 .PP
1121 \fIpresel_border_color\fR
1122 .RS 4
1123 Color of the
1124 \fBpresel\fR
1125 message feedback\&.
1126 .RE
1127 .PP
1128 \fIfocused_locked_border_color\fR
1129 .RS 4
1130 Color of the border of a focused locked window of a focused monitor\&.
1131 .RE
1132 .PP
1133 \fIactive_locked_border_color\fR
1134 .RS 4
1135 Color of the border of a focused locked window of an unfocused monitor\&.
1136 .RE
1137 .PP
1138 \fInormal_locked_border_color\fR
1139 .RS 4
1140 Color of the border of an unfocused locked window\&.
1141 .RE
1142 .PP
1143 \fIfocused_sticky_border_color\fR
1144 .RS 4
1145 Color of the border of a focused sticky window of a focused monitor\&.
1146 .RE
1147 .PP
1148 \fIactive_sticky_border_color\fR
1149 .RS 4
1150 Color of the border of a focused sticky window of an unfocused monitor\&.
1151 .RE
1152 .PP
1153 \fInormal_sticky_border_color\fR
1154 .RS 4
1155 Color of the border of an unfocused sticky window\&.
1156 .RE
1157 .PP
1158 \fIfocused_private_border_color\fR
1159 .RS 4
1160 Color of the border of a focused private window of a focused monitor\&.
1161 .RE
1162 .PP
1163 \fIactive_private_border_color\fR
1164 .RS 4
1165 Color of the border of a focused private window of an unfocused monitor\&.
1166 .RE
1167 .PP
1168 \fInormal_private_border_color\fR
1169 .RS 4
1170 Color of the border of an unfocused private window\&.
1171 .RE
1172 .PP
1173 \fIurgent_border_color\fR
1174 .RS 4
1175 Color of the border of an urgent window\&.
1176 .RE
1177 .PP
1178 \fIsplit_ratio\fR
1179 .RS 4
1180 Default split ratio\&.
1181 .RE
1182 .PP
1183 \fIstatus_prefix\fR
1184 .RS 4
1185 Prefix prepended to each of the status lines\&.
1186 .RE
1187 .PP
1188 \fIexternal_rules_command\fR
1189 .RS 4
1190 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:
1191 \fBkey1=value1 key2=value2 \&...\fR
1192 (the valid key/value pairs are given in the description of the
1193 \fIrule\fR
1194 command)\&.
1195 .RE
1196 .PP
1197 \fIinitial_polarity\fR
1198 .RS 4
1199 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:
1200 \fBfirst_child\fR,
1201 \fBsecond_child\fR\&.
1202 .RE
1203 .PP
1204 \fIhistory_aware_focus\fR
1205 .RS 4
1206 Give priority to the focus history when focusing nodes\&.
1207 .RE
1208 .PP
1209 \fIfocus_by_distance\fR
1210 .RS 4
1211 Base focusing on distances between windows\&.
1212 .RE
1213 .PP
1214 \fIborderless_monocle\fR
1215 .RS 4
1216 Remove borders of tiled windows for the
1217 \fBmonocle\fR
1218 desktop layout\&.
1219 .RE
1220 .PP
1221 \fIgapless_monocle\fR
1222 .RS 4
1223 Remove gaps of tiled windows for the
1224 \fBmonocle\fR
1225 desktop layout\&.
1226 .RE
1227 .PP
1228 \fIleaf_monocle\fR
1229 .RS 4
1230 Set the desktop layout to
1231 \fBmonocle\fR
1232 if there\(cqs only one tiled window in the tree\&.
1233 .RE
1234 .PP
1235 \fIfocus_follows_pointer\fR
1236 .RS 4
1237 Focus the window under the pointer\&.
1238 .RE
1239 .PP
1240 \fIpointer_follows_focus\fR
1241 .RS 4
1242 When focusing a window, put the pointer at its center\&.
1243 .RE
1244 .PP
1245 \fIpointer_follows_monitor\fR
1246 .RS 4
1247 When focusing a monitor, put the pointer at its center\&.
1248 .RE
1249 .PP
1250 \fIauto_alternate\fR
1251 .RS 4
1252 Interpret two consecutive identical
1253 \fBuse\fR
1254 messages as an
1255 \fBalternate\fR
1256 message\&.
1257 .RE
1258 .PP
1259 \fIauto_cancel\fR
1260 .RS 4
1261 Interpret two consecutive identical
1262 \fBpresel\fR
1263 messages as a
1264 \fBcancel\fR
1265 message\&.
1266 .RE
1267 .PP
1268 \fIapply_floating_atom\fR
1269 .RS 4
1270 Set the value of the
1271 \fI_BSPWM_FLOATING_WINDOW\fR
1272 atom of each window according to its floating state\&.
1273 .RE
1274 .PP
1275 \fIignore_ewmh_focus\fR
1276 .RS 4
1277 Ignore EWMH focus requests coming from applications\&.
1278 .RE
1279 .PP
1280 \fIcenter_pseudo_tiled\fR
1281 .RS 4
1282 Center pseudo tiled windows into their tiling rectangles\&. Defaults to
1283 \fItrue\fR\&.
1284 .RE
1285 .PP
1286 \fIremove_disabled_monitors\fR
1287 .RS 4
1288 Consider disabled monitors as disconnected\&.
1289 .RE
1290 .PP
1291 \fIremove_unplugged_monitors\fR
1292 .RS 4
1293 Remove unplugged monitors\&.
1294 .RE
1295 .PP
1296 \fImerge_overlapping_monitors\fR
1297 .RS 4
1298 Merge overlapping monitors (the bigger remains)\&.
1299 .RE
1300 .SS "Monitor and Desktop Settings"
1301 .PP
1302 \fItop_padding\fR, \fIright_padding\fR, \fIbottom_padding\fR, \fIleft_padding\fR
1303 .RS 4
1304 Padding space added at the sides of the monitor or desktop\&.
1305 .RE
1306 .SS "Default, Desktop Default and Window Settings"
1307 .PP
1308 \fIborder_width\fR
1309 .RS 4
1310 Window border width\&.
1311 .RE
1312 .SS "Default and Desktop Settings"
1313 .PP
1314 \fIwindow_gap\fR
1315 .RS 4
1316 Size of the gap that separates windows\&.
1317 .RE
1318 .SH "EVENTS"
1319 .PP
1320 \fIreport\fR
1321 .RS 4
1322 See the next section for the description of the format\&.
1323 .RE
1324 .PP
1325 \fImonitor_add <monitor_name> <monitor_id> <monitor_geometry>\fR
1326 .RS 4
1327 A monitor is added\&.
1328 .RE
1329 .PP
1330 \fImonitor_rename <old_name> <new_name>\fR
1331 .RS 4
1332 A monitor is renamed\&.
1333 .RE
1334 .PP
1335 \fImonitor_remove <monitor_name>\fR
1336 .RS 4
1337 A monitor is removed\&.
1338 .RE
1339 .PP
1340 \fImonitor_focus <monitor_name>\fR
1341 .RS 4
1342 A monitor is focused\&.
1343 .RE
1344 .PP
1345 \fImonitor_geometry <monitor_name> <monitor_geometry>\fR
1346 .RS 4
1347 The geometry of a monitor changed\&.
1348 .RE
1349 .PP
1350 \fIdesktop_add <monitor_name> <desktop_name>\fR
1351 .RS 4
1352 A desktop is added\&.
1353 .RE
1354 .PP
1355 \fIdesktop_rename <monitor_name> <old_name> <new_name>\fR
1356 .RS 4
1357 A desktop is renamed\&.
1358 .RE
1359 .PP
1360 \fIdesktop_remove <monitor_name> <desktop_name>\fR
1361 .RS 4
1362 A desktop is removed\&.
1363 .RE
1364 .PP
1365 \fIdesktop_swap <src_monitor_name> <src_desktop_name> <dst_monitor_name> <dst_desktop_name>\fR
1366 .RS 4
1367 A desktop is swapped\&.
1368 .RE
1369 .PP
1370 \fIdesktop_transfer <src_monitor_name> <src_desktop_name> <dst_monitor_name>\fR
1371 .RS 4
1372 A desktop is transferred\&.
1373 .RE
1374 .PP
1375 \fIdesktop_focus <monitor_name> <desktop_name>\fR
1376 .RS 4
1377 A desktop is focused\&.
1378 .RE
1379 .PP
1380 \fIdesktop_layout <monitor_name> <desktop_name> tiled|monocle\fR
1381 .RS 4
1382 The layout of a desktop changed\&.
1383 .RE
1384 .PP
1385 \fIwindow_manage <monitor_name> <desktop_name> <window_id> <ip_id>\fR
1386 .RS 4
1387 A window is managed\&.
1388 .RE
1389 .PP
1390 \fIwindow_manage <monitor_name> <desktop_name> <window_id> <ip_id>\fR
1391 .RS 4
1392 A window is managed\&.
1393 .RE
1394 .PP
1395 \fIwindow_unmanage <monitor_name> <desktop_name> <window_id>\fR
1396 .RS 4
1397 A window is unmanaged\&.
1398 .RE
1399 .PP
1400 \fIwindow_swap <src_monitor_name> <src_desktop_name> <src_window_id> <dst_monitor_name> <dst_desktop_name> <dst_window_id>\fR
1401 .RS 4
1402 A window is swapped\&.
1403 .RE
1404 .PP
1405 \fIwindow_transfer <src_monitor_name> <src_desktop_name> <src_window_id> <dst_monitor_name> <dst_desktop_name> <dst_window_id>\fR
1406 .RS 4
1407 A window is transferred\&.
1408 .RE
1409 .PP
1410 \fIwindow_focus <monitor_name> <desktop_name> <window_id>\fR
1411 .RS 4
1412 A window is focused\&.
1413 .RE
1414 .PP
1415 \fIwindow_activate <monitor_name> <desktop_name> <window_id>\fR
1416 .RS 4
1417 A window is activated\&.
1418 .RE
1419 .PP
1420 \fIwindow_geometry <monitor_name> <desktop_name> <window_id> <window_geometry>\fR
1421 .RS 4
1422 The geometry of a window changed\&.
1423 .RE
1424 .PP
1425 \fIwindow_state <monitor_name> <desktop_name> <window_id> tiled|pseudo_tiled|floating|fullscreen on|off\fR
1426 .RS 4
1427 The state of a window changed\&.
1428 .RE
1429 .PP
1430 \fIwindow_flag <monitor_name> <desktop_name> <window_id> sticky|private|locked|urgent on|off\fR
1431 .RS 4
1432 One of the flags of a window changed\&.
1433 .RE
1434 .PP
1435 \fIwindow_layer <monitor_name> <desktop_name> <window_id> below|normal|above\fR
1436 .RS 4
1437 The layer of a window changed\&.
1438 .RE
1439 .sp
1440 Please note that \fBbspwm\fR initializes monitors before it reads messages on its socket, therefore the initial monitor events can\(cqt be received\&.
1441 .SH "REPORT FORMAT"
1442 .sp
1443 Each report event message is composed of items separated by colons\&.
1444 .sp
1445 Each item has the form \fI<type><value>\fR where \fI<type>\fR is the first character of the item\&.
1446 .PP
1447 \fIM<monitor_name>\fR
1448 .RS 4
1449 Focused monitor\&.
1450 .RE
1451 .PP
1452 \fIm<monitor_name>\fR
1453 .RS 4
1454 Unfocused monitor\&.
1455 .RE
1456 .PP
1457 \fIO<desktop_name>\fR
1458 .RS 4
1459 Occupied focused desktop\&.
1460 .RE
1461 .PP
1462 \fIo<desktop_name>\fR
1463 .RS 4
1464 Occupied unfocused desktop\&.
1465 .RE
1466 .PP
1467 \fIF<desktop_name>\fR
1468 .RS 4
1469 Free focused desktop\&.
1470 .RE
1471 .PP
1472 \fIf<desktop_name>\fR
1473 .RS 4
1474 Free unfocused desktop\&.
1475 .RE
1476 .PP
1477 \fIU<desktop_name>\fR
1478 .RS 4
1479 Urgent focused desktop\&.
1480 .RE
1481 .PP
1482 \fIu<desktop_name>\fR
1483 .RS 4
1484 Urgent unfocused desktop\&.
1485 .RE
1486 .PP
1487 \fIL(T|M)\fR
1488 .RS 4
1489 Layout of the focused desktop of a monitor\&.
1490 .RE
1491 .SH "ENVIRONMENT VARIABLES"
1492 .PP
1493 \fIBSPWM_SOCKET\fR
1494 .RS 4
1495 The path of the socket used for the communication between
1496 \fBbspc\fR
1497 and
1498 \fBbspwm\fR\&. If it isn\(cqt defined, then the following path is used:
1499 \fI/tmp/bspwm<host_name>_<display_number>_<screen_number>\-socket\fR\&.
1500 .RE
1501 .SH "PANELS"
1502 .sp
1503 .RS 4
1504 .ie n \{\
1505 \h'-04'\(bu\h'+03'\c
1506 .\}
1507 .el \{\
1508 .sp -1
1509 .IP \(bu 2.3
1510 .\}
1511 Any EWMH compliant panel (e\&.g\&.:
1512 \fItint2\fR,
1513 \fIbmpanel2\fR, etc\&.)\&.
1514 .RE
1515 .sp
1516 .RS 4
1517 .ie n \{\
1518 \h'-04'\(bu\h'+03'\c
1519 .\}
1520 .el \{\
1521 .sp -1
1522 .IP \(bu 2.3
1523 .\}
1524 A custom panel (have a look at the files in
1525 \fIexamples/panel\fR)\&.
1526 .RE
1527 .SH "KEY FEATURES"
1528 .sp
1529 .RS 4
1530 .ie n \{\
1531 \h'-04'\(bu\h'+03'\c
1532 .\}
1533 .el \{\
1534 .sp -1
1535 .IP \(bu 2.3
1536 .\}
1537 Configured and controlled through messages\&.
1538 .RE
1539 .sp
1540 .RS 4
1541 .ie n \{\
1542 \h'-04'\(bu\h'+03'\c
1543 .\}
1544 .el \{\
1545 .sp -1
1546 .IP \(bu 2.3
1547 .\}
1548 Multiple monitors support\&.
1549 .RE
1550 .sp
1551 .RS 4
1552 .ie n \{\
1553 \h'-04'\(bu\h'+03'\c
1554 .\}
1555 .el \{\
1556 .sp -1
1557 .IP \(bu 2.3
1558 .\}
1559 EWMH support\&.
1560 .RE
1561 .sp
1562 .RS 4
1563 .ie n \{\
1564 \h'-04'\(bu\h'+03'\c
1565 .\}
1566 .el \{\
1567 .sp -1
1568 .IP \(bu 2.3
1569 .\}
1570 Hybrid tiling\&.
1571 .RE
1572 .SH "CONTRIBUTORS"
1573 .sp
1574 .RS 4
1575 .ie n \{\
1576 \h'-04'\(bu\h'+03'\c
1577 .\}
1578 .el \{\
1579 .sp -1
1580 .IP \(bu 2.3
1581 .\}
1582 Steven Allen <steven at stebalien\&.com>
1583 .RE
1584 .sp
1585 .RS 4
1586 .ie n \{\
1587 \h'-04'\(bu\h'+03'\c
1588 .\}
1589 .el \{\
1590 .sp -1
1591 .IP \(bu 2.3
1592 .\}
1593 Thomas Adam <thomas at xteddy\&.org>
1594 .RE
1595 .sp
1596 .RS 4
1597 .ie n \{\
1598 \h'-04'\(bu\h'+03'\c
1599 .\}
1600 .el \{\
1601 .sp -1
1602 .IP \(bu 2.3
1603 .\}
1604 Ivan Kanakarakis <ivan\&.kanak at gmail\&.com>
1605 .RE
1606 .SH "AUTHOR"
1607 .sp
1608 Bastien Dejean <nihilhill at gmail\&.com>
1609 .SH "MAILING LIST"
1610 .sp
1611 bspwm at librelist\&.com