]> git.lizzy.rs Git - bspwm.git/blob - doc/bspwm.1
Remove `apply_floating_atom` setting
[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/13/2015
6 .\"    Manual: Bspwm Manual
7 .\"    Source: Bspwm 0.9
8 .\"  Language: English
9 .\"
10 .TH "BSPWM" "1" "11/13/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 consecutive identical
1253 \fB\-\-focus\fR
1254 arguments as the
1255 \fBlast\fR
1256 selector for the
1257 \fBmonitor\fR
1258 and
1259 \fBdesktop\fR
1260 commands\&.
1261 .RE
1262 .PP
1263 \fIauto_cancel\fR
1264 .RS 4
1265 Interpret consecutive identical
1266 \fB\-\-presel\fR
1267 arguments as
1268 \fB\-\-cancel\-presel\fR
1269 option\&.
1270 .RE
1271 .PP
1272 \fIignore_ewmh_focus\fR
1273 .RS 4
1274 Ignore EWMH focus requests coming from applications\&.
1275 .RE
1276 .PP
1277 \fIcenter_pseudo_tiled\fR
1278 .RS 4
1279 Center pseudo tiled windows into their tiling rectangles\&. Defaults to
1280 \fItrue\fR\&.
1281 .RE
1282 .PP
1283 \fIremove_disabled_monitors\fR
1284 .RS 4
1285 Consider disabled monitors as disconnected\&.
1286 .RE
1287 .PP
1288 \fIremove_unplugged_monitors\fR
1289 .RS 4
1290 Remove unplugged monitors\&.
1291 .RE
1292 .PP
1293 \fImerge_overlapping_monitors\fR
1294 .RS 4
1295 Merge overlapping monitors (the bigger remains)\&.
1296 .RE
1297 .SS "Monitor and Desktop Settings"
1298 .PP
1299 \fItop_padding\fR, \fIright_padding\fR, \fIbottom_padding\fR, \fIleft_padding\fR
1300 .RS 4
1301 Padding space added at the sides of the monitor or desktop\&.
1302 .RE
1303 .SS "Default, Desktop Default and Window Settings"
1304 .PP
1305 \fIborder_width\fR
1306 .RS 4
1307 Window border width\&.
1308 .RE
1309 .SS "Default and Desktop Settings"
1310 .PP
1311 \fIwindow_gap\fR
1312 .RS 4
1313 Size of the gap that separates windows\&.
1314 .RE
1315 .SH "EVENTS"
1316 .PP
1317 \fIreport\fR
1318 .RS 4
1319 See the next section for the description of the format\&.
1320 .RE
1321 .PP
1322 \fImonitor_add <monitor_name> <monitor_id> <monitor_geometry>\fR
1323 .RS 4
1324 A monitor is added\&.
1325 .RE
1326 .PP
1327 \fImonitor_rename <old_name> <new_name>\fR
1328 .RS 4
1329 A monitor is renamed\&.
1330 .RE
1331 .PP
1332 \fImonitor_remove <monitor_name>\fR
1333 .RS 4
1334 A monitor is removed\&.
1335 .RE
1336 .PP
1337 \fImonitor_focus <monitor_name>\fR
1338 .RS 4
1339 A monitor is focused\&.
1340 .RE
1341 .PP
1342 \fImonitor_geometry <monitor_name> <monitor_geometry>\fR
1343 .RS 4
1344 The geometry of a monitor changed\&.
1345 .RE
1346 .PP
1347 \fIdesktop_add <monitor_name> <desktop_name>\fR
1348 .RS 4
1349 A desktop is added\&.
1350 .RE
1351 .PP
1352 \fIdesktop_rename <monitor_name> <old_name> <new_name>\fR
1353 .RS 4
1354 A desktop is renamed\&.
1355 .RE
1356 .PP
1357 \fIdesktop_remove <monitor_name> <desktop_name>\fR
1358 .RS 4
1359 A desktop is removed\&.
1360 .RE
1361 .PP
1362 \fIdesktop_swap <src_monitor_name> <src_desktop_name> <dst_monitor_name> <dst_desktop_name>\fR
1363 .RS 4
1364 A desktop is swapped\&.
1365 .RE
1366 .PP
1367 \fIdesktop_transfer <src_monitor_name> <src_desktop_name> <dst_monitor_name>\fR
1368 .RS 4
1369 A desktop is transferred\&.
1370 .RE
1371 .PP
1372 \fIdesktop_focus <monitor_name> <desktop_name>\fR
1373 .RS 4
1374 A desktop is focused\&.
1375 .RE
1376 .PP
1377 \fIdesktop_layout <monitor_name> <desktop_name> tiled|monocle\fR
1378 .RS 4
1379 The layout of a desktop changed\&.
1380 .RE
1381 .PP
1382 \fIwindow_manage <monitor_name> <desktop_name> <window_id> <ip_id>\fR
1383 .RS 4
1384 A window is managed\&.
1385 .RE
1386 .PP
1387 \fIwindow_unmanage <monitor_name> <desktop_name> <window_id>\fR
1388 .RS 4
1389 A window is unmanaged\&.
1390 .RE
1391 .PP
1392 \fIwindow_swap <src_monitor_name> <src_desktop_name> <src_window_id> <dst_monitor_name> <dst_desktop_name> <dst_window_id>\fR
1393 .RS 4
1394 A window is swapped\&.
1395 .RE
1396 .PP
1397 \fIwindow_transfer <src_monitor_name> <src_desktop_name> <src_window_id> <dst_monitor_name> <dst_desktop_name> <dst_window_id>\fR
1398 .RS 4
1399 A window is transferred\&.
1400 .RE
1401 .PP
1402 \fIwindow_focus <monitor_name> <desktop_name> <window_id>\fR
1403 .RS 4
1404 A window is focused\&.
1405 .RE
1406 .PP
1407 \fIwindow_activate <monitor_name> <desktop_name> <window_id>\fR
1408 .RS 4
1409 A window is activated\&.
1410 .RE
1411 .PP
1412 \fIwindow_geometry <monitor_name> <desktop_name> <window_id> <window_geometry>\fR
1413 .RS 4
1414 The geometry of a window changed\&.
1415 .RE
1416 .PP
1417 \fIwindow_state <monitor_name> <desktop_name> <window_id> tiled|pseudo_tiled|floating|fullscreen on|off\fR
1418 .RS 4
1419 The state of a window changed\&.
1420 .RE
1421 .PP
1422 \fIwindow_flag <monitor_name> <desktop_name> <window_id> sticky|private|locked|urgent on|off\fR
1423 .RS 4
1424 One of the flags of a window changed\&.
1425 .RE
1426 .PP
1427 \fIwindow_layer <monitor_name> <desktop_name> <window_id> below|normal|above\fR
1428 .RS 4
1429 The layer of a window changed\&.
1430 .RE
1431 .sp
1432 Please note that \fBbspwm\fR initializes monitors before it reads messages on its socket, therefore the initial monitor events can\(cqt be received\&.
1433 .SH "REPORT FORMAT"
1434 .sp
1435 Each report event message is composed of items separated by colons\&.
1436 .sp
1437 Each item has the form \fI<type><value>\fR where \fI<type>\fR is the first character of the item\&.
1438 .PP
1439 \fIM<monitor_name>\fR
1440 .RS 4
1441 Focused monitor\&.
1442 .RE
1443 .PP
1444 \fIm<monitor_name>\fR
1445 .RS 4
1446 Unfocused monitor\&.
1447 .RE
1448 .PP
1449 \fIO<desktop_name>\fR
1450 .RS 4
1451 Occupied focused desktop\&.
1452 .RE
1453 .PP
1454 \fIo<desktop_name>\fR
1455 .RS 4
1456 Occupied unfocused desktop\&.
1457 .RE
1458 .PP
1459 \fIF<desktop_name>\fR
1460 .RS 4
1461 Free focused desktop\&.
1462 .RE
1463 .PP
1464 \fIf<desktop_name>\fR
1465 .RS 4
1466 Free unfocused desktop\&.
1467 .RE
1468 .PP
1469 \fIU<desktop_name>\fR
1470 .RS 4
1471 Urgent focused desktop\&.
1472 .RE
1473 .PP
1474 \fIu<desktop_name>\fR
1475 .RS 4
1476 Urgent unfocused desktop\&.
1477 .RE
1478 .PP
1479 \fIL(T|M)\fR
1480 .RS 4
1481 Layout of the focused desktop of a monitor\&.
1482 .RE
1483 .SH "ENVIRONMENT VARIABLES"
1484 .PP
1485 \fIBSPWM_SOCKET\fR
1486 .RS 4
1487 The path of the socket used for the communication between
1488 \fBbspc\fR
1489 and
1490 \fBbspwm\fR\&. If it isn\(cqt defined, then the following path is used:
1491 \fI/tmp/bspwm<host_name>_<display_number>_<screen_number>\-socket\fR\&.
1492 .RE
1493 .SH "PANELS"
1494 .sp
1495 .RS 4
1496 .ie n \{\
1497 \h'-04'\(bu\h'+03'\c
1498 .\}
1499 .el \{\
1500 .sp -1
1501 .IP \(bu 2.3
1502 .\}
1503 Any EWMH compliant panel (e\&.g\&.:
1504 \fItint2\fR,
1505 \fIbmpanel2\fR, etc\&.)\&.
1506 .RE
1507 .sp
1508 .RS 4
1509 .ie n \{\
1510 \h'-04'\(bu\h'+03'\c
1511 .\}
1512 .el \{\
1513 .sp -1
1514 .IP \(bu 2.3
1515 .\}
1516 A custom panel (have a look at the files in
1517 \fIexamples/panel\fR)\&.
1518 .RE
1519 .SH "KEY FEATURES"
1520 .sp
1521 .RS 4
1522 .ie n \{\
1523 \h'-04'\(bu\h'+03'\c
1524 .\}
1525 .el \{\
1526 .sp -1
1527 .IP \(bu 2.3
1528 .\}
1529 Configured and controlled through messages\&.
1530 .RE
1531 .sp
1532 .RS 4
1533 .ie n \{\
1534 \h'-04'\(bu\h'+03'\c
1535 .\}
1536 .el \{\
1537 .sp -1
1538 .IP \(bu 2.3
1539 .\}
1540 Multiple monitors support\&.
1541 .RE
1542 .sp
1543 .RS 4
1544 .ie n \{\
1545 \h'-04'\(bu\h'+03'\c
1546 .\}
1547 .el \{\
1548 .sp -1
1549 .IP \(bu 2.3
1550 .\}
1551 EWMH support\&.
1552 .RE
1553 .sp
1554 .RS 4
1555 .ie n \{\
1556 \h'-04'\(bu\h'+03'\c
1557 .\}
1558 .el \{\
1559 .sp -1
1560 .IP \(bu 2.3
1561 .\}
1562 Hybrid tiling\&.
1563 .RE
1564 .SH "CONTRIBUTORS"
1565 .sp
1566 .RS 4
1567 .ie n \{\
1568 \h'-04'\(bu\h'+03'\c
1569 .\}
1570 .el \{\
1571 .sp -1
1572 .IP \(bu 2.3
1573 .\}
1574 Steven Allen <steven at stebalien\&.com>
1575 .RE
1576 .sp
1577 .RS 4
1578 .ie n \{\
1579 \h'-04'\(bu\h'+03'\c
1580 .\}
1581 .el \{\
1582 .sp -1
1583 .IP \(bu 2.3
1584 .\}
1585 Thomas Adam <thomas at xteddy\&.org>
1586 .RE
1587 .sp
1588 .RS 4
1589 .ie n \{\
1590 \h'-04'\(bu\h'+03'\c
1591 .\}
1592 .el \{\
1593 .sp -1
1594 .IP \(bu 2.3
1595 .\}
1596 Ivan Kanakarakis <ivan\&.kanak at gmail\&.com>
1597 .RE
1598 .SH "AUTHOR"
1599 .sp
1600 Bastien Dejean <nihilhill at gmail\&.com>
1601 .SH "MAILING LIST"
1602 .sp
1603 bspwm at librelist\&.com