]> code.delx.au - spectrwm/blob - spectrwm.1
Man page fixes, mostly spacing related.
[spectrwm] / spectrwm.1
1 .\" Copyright (c) 2009-2012 Marco Peereboom <marco@peereboom.us>
2 .\" Copyright (c) 2009 Darrin Chandler <dwchandler@stilyagin.com>
3 .\" Copyright (c) 2011-2014 Reginald Kennedy <rk@rejii.com>
4 .\" Copyright (c) 2011-2012 Lawrence Teo <lteo@lteo.net>
5 .\" Copyright (c) 2011-2012 Tiago Cunha <tcunha@gmx.com>
6 .\" Copyright (c) 2012 David Hill <dhill@mindcry.org>
7 .\"
8 .\" Permission to use, copy, modify, and distribute this software for any
9 .\" purpose with or without fee is hereby granted, provided that the above
10 .\" copyright notice and this permission notice appear in all copies.
11 .\"
12 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 .\"
20 .Dd $Mdocdate: February 15 2012 $
21 .Dt SPECTRWM 1
22 .Os
23 .Sh NAME
24 .Nm spectrwm
25 .Nd window manager for X11
26 .Sh SYNOPSIS
27 .Nm spectrwm
28 .Sh DESCRIPTION
29 .Nm
30 is a minimalistic window manager that tries to stay out of the way so that
31 valuable screen real estate can be used for much more important stuff.
32 It has sane defaults and does not require one to learn a language to do any
33 configuration.
34 It was written by hackers for hackers and it strives to be small, compact and
35 fast.
36 .Pp
37 When
38 .Nm
39 starts up, it reads settings from its configuration file,
40 .Pa spectrwm.conf .
41 See the
42 .Sx CONFIGURATION FILES
43 section below.
44 .Pp
45 The following notation is used throughout this page:
46 .Pp
47 .Bl -tag -width Ds -offset indent -compact
48 .It Cm M
49 Meta
50 .It Cm S
51 Shift
52 .It Aq Cm Name
53 Named key
54 .It Cm M1
55 Mouse button 1
56 .It Cm M3
57 Mouse button 3
58 .El
59 .Pp
60 .Nm
61 is very simple in its use.
62 Most of the actions are initiated via key or mouse bindings.
63 See the
64 .Sx BINDINGS
65 section below for defaults and customizations.
66 .Sh CONFIGURATION FILES
67 .Nm
68 first tries to open the user specific file,
69 .Pa ~/.spectrwm.conf .
70 If that file is unavailable,
71 it then tries to open the global configuration file
72 .Pa /etc/spectrwm.conf .
73 .Pp
74 The format of the file is
75 .Pp
76 .Dl Ar keyword Li = Ar setting
77 .Pp
78 For example:
79 .Pp
80 .Dl color_focus = red
81 .Pp
82 Enabling or disabling an option is done by using 1 or 0 respectively.
83 .Pp
84 Colors need to be specified per the
85 .Xr XQueryColor 3
86 specification.
87 .Pp
88 Comments begin with a #.
89 When a literal
90 .Ql #
91 is desired in an option, then it must be escaped with a backslash, i.e. \e#
92 .Pp
93 The file supports the following keywords:
94 .Bl -tag -width 2m
95 .It Ic autorun
96 Launch an application in a specified workspace at start-of-day.
97 Defined in the format
98 .Li ws Ns Bo Ar idx Bc : Ns Ar application ,
99 e.g. ws[2]:xterm launches an
100 .Xr xterm 1
101 in workspace 2.
102 .It Ic bar_action
103 External script that populates additional information in the status bar,
104 such as battery life.
105 .It Ic bar_at_bottom
106 Place the statusbar at the bottom of each region instead of the top.
107 .It Ic bar_border Ns Bq Ar x
108 Border color of the status bar(s) in screen
109 .Ar x .
110 .It Ic bar_border_unfocus Ns Bq Ar x
111 Border color of the status bar(s) on unfocused region(s) in screen
112 .Ar x .
113 .It Ic bar_border_width
114 Set status bar border thickness in pixels.
115 Disable border by setting to 0.
116 .It Ic bar_color Ns Bq Ar x
117 Background color of the status bar(s) in screen
118 .Ar x .
119 .It Ic bar_enabled
120 Set default
121 .Ic bar_toggle
122 state; default is 1.
123 .It Ic bar_enabled_ws Ns Bq Ar x
124 Set default
125 .Ic bar_toggle_ws
126 state on workspace
127 .Ar x ;
128 default is 1.
129 .It Ic bar_font
130 Font used in the status bar.
131 Either Xft or X Logical Font Description (XLFD) may be used to specify fonts.
132 Fallback fonts may be specified by separating each font with a comma.
133 If all entries are in XLFD syntax, font set will be used.
134 If at least one entry is Xft, Xft will be used.
135 Note that if Xft is in use, only the first font that successfully loads will
136 be used regardless of missing glyphs.
137 The default is to use font set.
138 Also note that
139 .Xr dmenu 1
140 does not support Xft fonts.
141 .Pp
142 Xft examples:
143 .Bd -literal -offset indent
144 bar_font = Terminus:style=Regular:pixelsize=14:antialias=true
145
146 bar_font = -*-profont-medium-*-*-*-11-*-*-*-*-*-*-*,Terminus:pixelsize=14,\
147 -*-clean-medium-*-*-*-12-*-*-*-*-*-*-*
148 .Ed
149 .Pp
150 Font set examples:
151 .Bd -literal -offset indent
152 bar_font = -*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*
153
154 bar_font = -*-profont-medium-*-*-*-11-*-*-*-*-*-*-*,\
155 -*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*,\
156 -*-clean-medium-*-*-*-12-*-*-*-*-*-*-*
157 .Ed
158 .Pp
159 To list the available fonts in your system see
160 .Xr fc-list 1
161 or
162 .Xr xlsfonts 1
163 manpages.
164 The
165 .Xr xfontsel 1
166 application can help with the XLFD setting.
167 .It Ic bar_font_color Ns Bq Ar x
168 Color of the font in status bar in screen
169 .Ar x .
170 .It Ic bar_format
171 Set the bar format string, overriding
172 .Ic clock_format
173 and all of the
174 .Ic enabled
175 options.
176 The format is passed through
177 .Xr strftime 3
178 before being used.
179 It may contain the following character sequences:
180 .Bl -column "Character sequence" "Replaced with" -offset indent
181 .It Sy "Character sequence" Ta Sy "Replaced with"
182 .It Li "+<" Ta "Pad with a space"
183 .It Li "+A" Ta "Output of the external script"
184 .It Li "+C" Ta "Window class (from WM_CLASS)"
185 .It Li "+D" Ta "Workspace name"
186 .It Li "+F" Ta "Floating indicator"
187 .It Li "+I" Ta "Workspace index"
188 .It Li "+M" Ta "Number of iconic (minimized) windows in workspace"
189 .It Li "+N" Ta "Screen number"
190 .It Li "+P" Ta "Window class and instance separated by a colon"
191 .It Li "+S" Ta "Stacking algorithm"
192 .It Li "+T" Ta "Window instance (from WM_CLASS)"
193 .It Li "+U" Ta "Urgency hint"
194 .It Li "+V" Ta "Program version"
195 .It Li "+W" Ta "Window name (from _NET_WM_NAME/WM_NAME)"
196 .It Li "++" Ta "A literal" Ql +
197 .El
198 .Pp
199 All character sequences may limit its output to a specific length, for
200 example +64A.
201 Any characters that don't match the specification are copied as-is.
202 .It Ic bar_justify
203 Justify the status bar text.
204 Possible values are
205 .Ar left ,
206 .Ar center ,
207 and
208 .Ar right .
209 .Pp
210 Note that if the output is not left justified, it may not be properly
211 aligned in some circumstances, due to the white-spaces in the default
212 static format.
213 See the
214 .Ic bar_format
215 option for more details.
216 .It Ic bind Ns Bq Ar x
217 Bind key combo to action
218 .Ar x .
219 See the
220 .Sx BINDINGS
221 section below.
222 .It Ic border_width
223 Set window border thickness in pixels.
224 Disable all borders by setting to 0.
225 .It Ic boundary_width
226 Set region containment boundary width in pixels.
227 This is how far a window must be dragged/resized beyond the region edge
228 before it is allowed outside the region.
229 This has no effect when manipulating the window with key bindings.
230 Disable the window containment effect by setting to 0.
231 .It Ic clock_enabled
232 Enable or disable displaying the clock in the status bar.
233 Disable by setting to 0
234 so a custom clock could be used in the
235 .Ic bar_action
236 script.
237 .It Ic iconic_enabled
238 Display the number of iconic (minimized) windows in the status bar.
239 Enable by setting to 1.
240 .It Ic color_focus
241 Border color of the currently focused window.
242 Default is red.
243 .It Ic color_focus_maximized
244 Border color of the currently focused, maximized window.
245 Defaults to the value of
246 .Ic color_focus .
247 .It Ic color_unfocus
248 Border color of unfocused windows, default is rgb:88/88/88.
249 .It Ic color_unfocus_maximized
250 Border color of unfocused, maximized windows.
251 Defaults to the value of
252 .Ic color_unfocus .
253 .It Ic dialog_ratio
254 Some applications have dialogue windows that are too small to be useful.
255 This ratio is the screen size to what they will be resized.
256 For example, 0.6 is 60% of the physical screen size.
257 .It Ic disable_border
258 Remove border when bar is disabled and there is only one window on the
259 region.
260 .It Ic focus_close
261 Window to put focus when the focused window is closed.
262 Possible values are
263 .Ar first ,
264 .Ar next ,
265 .Ar previous
266 (default) and
267 .Ar last .
268 .Ar next
269 and
270 .Ar previous
271 are relative to the window that is closed.
272 .It Ic focus_close_wrap
273 Whether to allow the focus to jump to the last window when the first window
274 is closed or vice versa.
275 Disable by setting to 0.
276 .It Ic focus_default
277 Window to put focus when no window has been focused.
278 Possible values are
279 .Ar first
280 and
281 .Ar last
282 (default).
283 .It Ic focus_mode
284 Window focus behavior with respect to the mouse cursor.
285 Possible values:
286 .Pp
287 .Bl -tag -width "default" -offset indent -compact
288 .It Ar default
289 Set window focus on border crossings caused by cursor motion and
290 window interaction.
291 .It Ar follow
292 Set window focus on all cursor border crossings, including workspace switches
293 and changes to layout.
294 .It Ar manual
295 Set window focus on window interaction only.
296 .El
297 .It Ic java_workaround
298 Workaround a Java GUI rendering issue on non-reparenting window managers by
299 impersonating the LG3D window manager, written by Sun.
300 Default is 1.
301 .It Ic keyboard_mapping
302 Clear all key bindings and load new key bindings from the specified file.
303 This allows you to load pre-defined key bindings for your keyboard layout.
304 See the
305 .Sx KEYBOARD MAPPING FILES
306 section below for a list of keyboard mapping files that have been provided
307 for several keyboard layouts.
308 .It Ic layout
309 Select layout to use at start-of-day.
310 Defined in the format
311 .Li ws Ns Bo Ar idx Bc : Ns Ar master_grow : Ns Ar master_add : Ns Ar stack_inc : Ns Ar always_raise : Ns Ar stack_mode ,
312 e.g. ws[2]:-4:0:1:0:horizontal sets worskspace 2 to the horizontal stack
313 mode, shrinks the master area by 4 ticks and adds one window to the
314 stack, while maintaining default floating window behavior.
315 Possible
316 .Ar stack_mode
317 values are
318 .Ar vertical ,
319 .Ar vertical_flip ,
320 .Ar horizontal ,
321 .Ar horizontal_flip
322 and
323 .Ar fullscreen .
324 .Pp
325 See
326 .Ic master_grow ,
327 .Ic master_shrink ,
328 .Ic master_add ,
329 .Ic master_del ,
330 .Ic stack_inc ,
331 .Ic stack_dec ,
332 and
333 .Ic always_raise
334 for more information.
335 Note that the stacking options are complicated and have side-effects.
336 One should familiarize oneself with these commands before experimenting
337 with the
338 .Ic layout
339 option.
340 .Pp
341 This setting is not retained at restart.
342 .It Ic modkey
343 Change mod key.
344 Mod1 is generally the ALT key and Mod4 is the windows key on a PC.
345 .It Ic name
346 Set the name of a workspace at start-of-day.
347 Defined in the format
348 .Li ws Ns Bo Ar idx Bc : Ns Ar name ,
349 e.g. ws[1]:Console sets the name of workspace 1 to
350 .Dq Console .
351 .It Ic program Ns Bq Ar p
352 Define new action to spawn a program
353 .Ar p .
354 See the
355 .Sx PROGRAMS
356 section below.
357 .It Ic quirk Ns Bq Ar c Ns Li : Ns Ar i Ns Li : Ns Ar n
358 Add "quirk" for windows with class
359 .Ar c ,
360 instance
361 .Ar i
362 and name
363 .Ar n .
364 See the
365 .Sx QUIRKS
366 section below.
367 .It Ic region
368 Allocates a custom region, removing any autodetected regions which occupy the
369 same space on the screen.
370 Defined in the format
371 .Li screen Ns Bo Ar idx Ns Bc : Ns Ar width Ns x Ns Ar height Ns + Ns Ar x Ns + Ns Ar y ,
372 e.g. screen[1]:800x1200+0+0.
373 .Pp
374 To make a region span multiple monitors, create a region big enough to cover
375 them all, e.g. screen[1]:2048x768+0+0 makes the region span two monitors with
376 1024x768 resolution sitting one next to the other.
377 .It Ic region_padding
378 Pixel width of empty space within region borders.
379 Disable by setting to 0.
380 .It Ic spawn_position
381 Position in stack to place newly spawned windows.
382 Possible values are
383 .Ar first ,
384 .Ar next ,
385 .Ar previous
386 and
387 .Ar last
388 (default).
389 .Ar next
390 and
391 .Ar previous
392 are relative to the focused window.
393 .It Ic stack_enabled
394 Enable or disable displaying the current stacking algorithm in the status
395 bar.
396 .It Ic term_width
397 Set a preferred minimum width for the terminal.
398 If this value is greater than 0,
399 .Nm
400 will attempt to adjust the font sizes in the terminal to keep the terminal
401 width above this number as the window is resized.
402 Only
403 .Xr xterm 1
404 is currently supported.
405 The
406 .Xr xterm 1
407 binary must not be setuid or setgid, which it is by default on most systems.
408 Users may need to set program[term] (see the
409 .Sx PROGRAMS
410 section) to use an alternate copy of the
411 .Xr xterm 1
412 binary without the setgid bit set.
413 .It Ic tile_gap
414 Pixel width of empty space between tiled windows.
415 Negative values cause overlap.
416 Set this to the opposite of
417 .Ic border_width
418 to collapse the border between tiles.
419 Disable by setting to 0.
420 .It Ic urgent_collapse
421 Enables hiding of placeholders in the urgency hint indicator for workspaces that
422 do not have any urgent windows.
423 Enable by setting to 1.
424 .It Ic urgent_enabled
425 Enable or disable the urgency hint indicator in the status bar.
426 Note that many terminal emulators require an explicit setting for the bell
427 character to trigger urgency on the window.
428 In
429 .Xr xterm 1 ,
430 for example, one needs to add the following line to
431 .Pa .Xdefaults :
432 .Bd -literal -offset indent
433 xterm.bellIsUrgent: true
434 .Ed
435 .It Ic verbose_layout
436 Enable or disable displaying the current master window count and stack column/row
437 count in the status bar.
438 Enable by setting to 1.
439 See
440 .Ar master_add ,
441 .Ar master_del ,
442 .Ar stack_inc
443 and
444 .Ar stack_dec
445 for more information.
446 .It Ic window_class_enabled
447 Enable or disable displaying the window class name (from WM_CLASS) in the
448 status bar.
449 Enable by setting to 1.
450 .It Ic window_instance_enabled
451 Enable or disable displaying the window instance name (from WM_CLASS) in the
452 status bar.
453 Enable by setting to 1.
454 .It Ic window_name_enabled
455 Enable or disable displaying the window display name (from _NET_WM_NAME/WM_NAME)
456 in the status bar.
457 Enable by setting to 1.
458 .Pp
459 To prevent excessively large window names from pushing the remaining text off
460 the bar, it's limited to 64 characters, by default.
461 See the
462 .Ic bar_format
463 option for more details.
464 .It Ic warp_pointer
465 Centers the mouse pointer on the focused window when using key bindings to
466 change focus, switch workspaces, change regions, etc.
467 Enable by setting to 1.
468 .It Ic workspace_limit
469 Set the total number of workspaces available.
470 Minimum is 1, maximum is 22, default is 10.
471 .El
472 .Sh PROGRAMS
473 .Nm
474 allows you to define custom actions to launch programs of your choice and
475 then bind them the same as with built-in actions.
476 See the
477 .Sx BINDINGS
478 section below.
479 .Pp
480 Custom programs in the configuration file are specified as follows:
481 .Pp
482 .Dl program Ns Bo Ar action Bc = Ar progpath Op Ar arg Op Ar arg ...
483 .Pp
484 .Ar action
485 is any identifier that does not conflict with a built-in action or keyword,
486 .Ar progpath
487 is the desired program, and
488 .Ar arg
489 is zero or more arguments to the program.
490 .Pp
491 Remember that when using
492 .Ql #
493 in your program call, it must be escaped with a backslash, i.e. \e#
494 .Pp
495 The following argument variables will be substituted for values at the time the program
496 is spawned:
497 .Pp
498 .Bl -tag -width "$bar_font_color" -offset indent -compact
499 .It Cm $bar_border
500 .It Cm $bar_color
501 .It Cm $bar_font
502 .It Cm $bar_font_color
503 .It Cm $color_focus
504 .It Cm $color_unfocus
505 .It Cm $dmenu_bottom
506 \-b if
507 .Ic bar_at_bottom
508 is enabled.
509 .It Cm $region_index
510 .It Cm $workspace_index
511 .El
512 .Pp
513 Example:
514 .Bd -literal -offset indent
515 program[ff] = /usr/local/bin/firefox http://spectrwm.org/
516 bind[ff] = MOD+Shift+b # Now M-S-b launches firefox
517 .Ed
518 .Pp
519 To cancel the previous, unbind it:
520 .Bd -literal -offset indent
521 bind[] = MOD+Shift+b
522 .Ed
523 .Pp
524 Default programs:
525 .Bl -tag -width "screenshot_wind" -offset indent -compact
526 .It Cm lock
527 xlock
528 .It Cm menu
529 dmenu_run $dmenu_bottom \-fn $bar_font \-nb $bar_color \-nf $bar_font_color \-sb
530 $bar_border \-sf $bar_color
531 .It Cm term
532 xterm
533 .It Cm initscr
534 initscreen.sh # optional
535 .It Cm screenshot_all
536 screenshot.sh full # optional
537 .It Cm screenshot_wind
538 screenshot.sh window # optional
539 .El
540 .Pp
541 Note that optional default programs will not be validated unless overridden.
542 If a default program fails validation, you can resolve the exception
543 by installing the program, modifying the program call or disabling the program
544 by freeing the respective key binding.
545 .Pp
546 For example, to override
547 .Ic lock :
548 .Bd -literal -offset indent
549 program[lock] = xscreensaver\-command \-lock
550 .Ed
551 .Pp
552 To unbind
553 .Ic lock
554 and prevent it from being validated:
555 .Bd -literal -offset indent
556 bind[] = MOD+Shift+Delete
557 .Ed
558 .Sh BINDINGS
559 .Nm
560 provides many functions (or actions) accessed via key or mouse bindings.
561 .Pp
562 The current mouse bindings are described below:
563 .Pp
564 .Bl -tag -width "M-j, M-<TAB>XXX" -offset indent -compact
565 .It Cm M1
566 Focus window
567 .It Cm M-M1
568 Move window
569 .It Cm M-M3
570 Resize window
571 .It Cm M-S-M3
572 Resize window while maintaining it centered
573 .El
574 .Pp
575 The default key bindings are described below:
576 .Pp
577 .Bl -tag -width "M-j, M-<TAB>XXXXXX" -offset indent -compact
578 .It Cm M-S- Ns Aq Cm Return
579 term
580 .It Cm M-p
581 menu
582 .It Cm M-S-q
583 quit
584 .It Cm M-q
585 restart
586 .It Cm M- Ns Aq Cm Space
587 cycle_layout
588 .It Cm M-S-\e
589 flip_layout
590 .It Cm M-S- Ns Aq Cm Space
591 stack_reset
592 .It Cm M-h
593 master_shrink
594 .It Cm M-l
595 master_grow
596 .It Cm M-,
597 master_add
598 .It Cm M-.
599 master_del
600 .It Cm M-S-,
601 stack_inc
602 .It Cm M-S-.
603 stack_dec
604 .It Cm M- Ns Aq Cm Return
605 swap_main
606 .It Xo
607 .Cm M-j ,
608 .Cm M- Ns Aq Cm TAB
609 .Xc
610 focus_next
611 .It Xo
612 .Cm M-k ,
613 .Cm M-S- Ns Aq Cm TAB
614 .Xc
615 focus_prev
616 .It Cm M-m
617 focus_main
618 .It Cm M-u
619 focus_urgent
620 .It Cm M-S-j
621 swap_next
622 .It Cm M-S-k
623 swap_prev
624 .It Cm M-b
625 bar_toggle
626 .It Cm M-S-b
627 bar_toggle_ws
628 .It Cm M-x
629 wind_del
630 .It Cm M-S-x
631 wind_kill
632 .It Cm M- Ns Aq Ar 1-9,0,F1-F12
633 .Pf ws_ Aq Ar 1-22
634 .It Cm M-S- Ns Aq Ar 1-9,0,F1-F12
635 .Pf mvws_ Ns Aq Ar 1-22
636 .It Cm M- Ns Aq Ar Keypad 1-9
637 .Pf rg_ Aq Ar 1-9
638 .It Cm M-S- Ns Aq Ar Keypad 1-9
639 .Pf mvrg_ Aq Ar 1-9
640 .It Cm M- Ns Aq Cm Right
641 ws_next
642 .It Cm M- Ns Aq Cm Left
643 ws_prev
644 .It Cm M- Ns Aq Cm Up
645 ws_next_all
646 .It Cm M- Ns Aq Cm Down
647 ws_prev_all
648 .It Cm M-a
649 ws_next_move
650 .It Cm M-S- Ns Aq Cm Left
651 ws_prev_move
652 .It Cm M-S- Ns Aq Cm Up
653 ws_prior
654 .It Cm M-S- Ns Aq Cm Right
655 rg_next
656 .It Cm M-S- Ns Aq Cm Left
657 rg_prev
658 .It Cm M-s
659 screenshot_all
660 .It Cm M-S-s
661 screenshot_wind
662 .It Cm M-S-v
663 version
664 .It Cm M-t
665 float_toggle
666 .It Cm M-S- Ns Aq Cm Delete
667 lock
668 .It Cm M-S-i
669 initscr
670 .It Cm M-w
671 iconify
672 .It Cm M-S-w
673 uniconify
674 .It Cm M-e
675 maximize_toggle
676 .It Cm M-S-r
677 always_raise
678 .It Cm M-v
679 button2
680 .It Cm M--
681 width_shrink
682 .It Cm M-=
683 width_grow
684 .It Cm M-S--
685 height_shrink
686 .It Cm M-S-=
687 height_grow
688 .It Cm M-[
689 move_left
690 .It Cm M-]
691 move_right
692 .It Cm M-S-[
693 move_up
694 .It Cm M-S-]
695 move_down
696 .It Cm M-S-/
697 name_workspace
698 .It Cm M-/
699 search_workspace
700 .It Cm M-f
701 search_win
702 .El
703 .Pp
704 The action names and descriptions are listed below:
705 .Pp
706 .Bl -tag -width "M-j, M-<TAB>XXXX" -offset indent -compact
707 .It Cm term
708 Spawn a new terminal
709 (see
710 .Sx PROGRAMS
711 above).
712 .It Cm menu
713 Menu
714 (see
715 .Sx PROGRAMS
716 above).
717 .It Cm quit
718 Quit
719 .Nm .
720 .It Cm restart
721 Restart
722 .Nm .
723 .It Cm cycle_layout
724 Cycle layout.
725 .It Cm flip_layout
726 Swap the master and stacking areas.
727 .It Cm stack_reset
728 Reset layout.
729 .It Cm master_shrink
730 Shrink master area.
731 .It Cm master_grow
732 Grow master area.
733 .It Cm master_add
734 Add windows to master area.
735 .It Cm master_del
736 Remove windows from master area.
737 .It Cm stack_inc
738 Add columns/rows to stacking area.
739 .It Cm stack_dec
740 Remove columns/rows from stacking area.
741 .It Cm swap_main
742 Move current window to master area.
743 .It Cm focus_next
744 Focus next window in workspace.
745 .It Cm focus_prev
746 Focus previous window in workspace.
747 .It Cm focus_main
748 Focus on main window in workspace.
749 .It Cm focus_urgent
750 Focus on next window with the urgency hint flag set.
751 The workspace is switched if needed.
752 .It Cm swap_next
753 Swap with next window in workspace.
754 .It Cm swap_prev
755 Swap with previous window in workspace.
756 .It Cm bar_toggle
757 Toggle overall visibility of status bars.
758 .It Cm bar_toggle_ws
759 Toggle status bar on current workspace.
760 .It Cm wind_del
761 Delete current window in workspace.
762 .It Cm wind_kill
763 Destroy current window in workspace.
764 .It Cm ws_ Ns Ar n
765 Switch to workspace
766 .Ar n ,
767 where
768 .Ar n
769 is 1 through
770 .Ic workspace_limit .
771 .It Cm mvws_ Ns Ar n
772 Move current window to workspace
773 .Ar n ,
774 where
775 .Ar n
776 is 1 through
777 .Ic workspace_limit .
778 .It Cm rg_ Ns Ar n
779 Focus on region
780 .Ar n ,
781 where
782 .Ar n
783 is 1 through 9.
784 .It Cm mvrg_ Ns Ar n
785 Move current window to region
786 .Ar n ,
787 where
788 .Ar n
789 is 1 through 9.
790 .It Cm ws_next
791 Switch to next workspace with a window in it.
792 .It Cm ws_prev
793 Switch to previous workspace with a window in it.
794 .It Cm ws_next_all
795 Switch to next workspace.
796 .It Cm ws_prev_all
797 Switch to previous workspace.
798 .It Cm ws_next_move
799 Switch to next workspace with the current window.
800 .It Cm ws_prev_move
801 Switch to previous workspace with the current window.
802 .It Cm ws_prior
803 Switch to last visited workspace.
804 .It Cm rg_next
805 Switch to next region.
806 .It Cm rg_prev
807 Switch to previous region.
808 .It Cm screenshot_all
809 Take screenshot of entire screen (if enabled)
810 (see
811 .Sx PROGRAMS
812 above).
813 .It Cm screenshot_wind
814 Take screenshot of selected window (if enabled)
815 (see
816 .Sx PROGRAMS
817 above).
818 .It Cm version
819 Toggle version in status bar.
820 .It Cm float_toggle
821 Toggle focused window between tiled and floating.
822 .It Cm lock
823 Lock screen
824 (see
825 .Sx PROGRAMS
826 above).
827 .It Cm initscr
828 Reinitialize physical screens
829 (see
830 .Sx PROGRAMS
831 above).
832 .It Cm iconify
833 Minimize (unmap) currently focused window.
834 .It Cm uniconify
835 Restore (map) window returned by
836 .Xr dmenu 1
837 selection.
838 .It Cm maximize_toggle
839 Toggle maximization of focused window.
840 .It Cm always_raise
841 When set tiled windows are allowed to obscure floating windows.
842 .It Cm button2
843 Fake a middle mouse button click (mouse button 2).
844 .It Cm width_shrink
845 Shrink the width of a floating window.
846 .It Cm width_grow
847 Grow the width of a floating window.
848 .It Cm height_shrink
849 Shrink the height of a floating window.
850 .It Cm height_grow
851 Grow the height of a floating window.
852 .It Cm move_left
853 Move a floating window a step to the left.
854 .It Cm move_right
855 Move a floating window a step to the right.
856 .It Cm move_up
857 Move a floating window a step upwards.
858 .It Cm move_down
859 Move a floating window a step downwards.
860 .It Cm name_workspace
861 Name the current workspace.
862 .It Cm search_workspace
863 Search for a workspace.
864 .It Cm search_win
865 Search the windows in the current workspace.
866 .El
867 .Pp
868 Custom bindings in the configuration file are specified as follows:
869 .Pp
870 .Dl bind Ns Bo Ar action Bc = Ar keys
871 .Pp
872 .Ar action
873 is one of the actions listed above (or empty to unbind) and
874 .Ar keys
875 is in the form of zero or more modifier keys
876 (MOD, Mod1, Shift, etc.) and one or more normal keys
877 (b, Space, etc.), separated by
878 .Ql + .
879 .Pp
880 Example:
881 .Bd -literal -offset indent
882 bind[reset] = Mod4+q # bind Windows-key + q to reset
883 bind[] = Mod1+q # unbind Alt + q
884 .Ed
885 .Pp
886 To use the currently defined
887 .Ic modkey ,
888 specify MOD as the modifier key.
889 .Pp
890 Multiple key combinations may be bound to the same action.
891 .Pp
892 To bind non-latin characters such as \[oa] or \[*p] you must enter the xkb
893 character name instead of the character itself.
894 Run
895 .Xr xev 1 ,
896 focus the window and press the specific key and in the terminal output read
897 the symbol name.
898 In the following example for \[oa]:
899 .Bd -literal -offset indent
900 KeyPress event, serial 41, synthetic NO, window 0x2600001,
901 root 0x15a, subw 0x0, time 106213808, (11,5), root:(359,823),
902 state 0x0, keycode 24 (keysym 0xe5, aring), same_screen YES,
903 XLookupString gives 2 bytes: (c3 a5) "\[oa]"
904 XmbLookupString gives 2 bytes: (c3 a5) "\[oa]"
905 XFilterEvent returns: False
906 .Ed
907 .Pp
908 The xkb name is aring.
909 In other words, in
910 .Pa spectrwm.conf
911 add:
912 .Bd -literal -offset indent
913 bind[program] = MOD+aring
914 .Ed
915 .Sh KEYBOARD MAPPING FILES
916 Keyboard mapping files for several keyboard layouts are listed
917 below.
918 These files can be used with the
919 .Ic keyboard_mapping
920 setting to load pre-defined key bindings for the specified
921 keyboard layout.
922 .Pp
923 .Bl -tag -width "spectrwm_XX.confXXX" -offset indent -compact
924 .It Cm spectrwm_cz.conf
925 Czech Republic keyboard layout
926 .It Cm spectrwm_es.conf
927 Spanish keyboard layout
928 .It Cm spectrwm_fr.conf
929 French keyboard layout
930 .It Cm spectrwm_fr_ch.conf
931 Swiss French keyboard layout
932 .It Cm spectrwm_se.conf
933 Swedish keyboard layout
934 .It Cm spectrwm_us.conf
935 United States keyboard layout
936 .El
937 .Sh QUIRKS
938 .Nm
939 provides "quirks" which handle windows that must be treated specially
940 in a tiling window manager, such as some dialogs and fullscreen apps.
941 .Pp
942 The default quirks are described below:
943 .Pp
944 .Bl -tag -width "OpenOffice.org N.M:VCLSalFrame<TAB>XXX" -offset indent \
945 -compact
946 .It Firefox\-bin:firefox\-bin
947 TRANSSZ
948 .It Firefox:Dialog
949 FLOAT
950 .It Gimp:gimp
951 FLOAT + ANYWHERE
952 .It MPlayer:xv
953 FLOAT + FULLSCREEN + FOCUSPREV
954 .It OpenOffice.org 2.4:VCLSalFrame
955 FLOAT
956 .It OpenOffice.org 3.1:VCLSalFrame
957 FLOAT
958 .It pcb:pcb
959 FLOAT
960 .It xine:Xine Window
961 FLOAT + ANYWHERE
962 .It xine:xine Panel
963 FLOAT + ANYWHERE
964 .It xine:xine Video Fullscreen Window
965 FULLSCREEN + FLOAT
966 .It Xitk:Xitk Combo
967 FLOAT + ANYWHERE
968 .It Xitk:Xine Window
969 FLOAT + ANYWHERE
970 .It XTerm:xterm
971 XTERM_FONTADJ
972 .El
973 .Pp
974 The quirks themselves are described below:
975 .Pp
976 .Bl -tag -width "XTERM_FONTADJ<TAB>XXX" -offset indent -compact
977 .It FLOAT
978 This window should not be tiled, but allowed to float freely.
979 .It TRANSSZ
980 Adjusts size on transient windows that are too small using
981 .Ic dialog_ratio
982 (see
983 .Sx CONFIGURATION FILES ) .
984 .It ANYWHERE
985 Allow window to position itself, uncentered.
986 .It XTERM_FONTADJ
987 Adjust
988 .Xr xterm 1
989 fonts when resizing.
990 .It FULLSCREEN
991 Remove border to allow window to use full region size.
992 .It FOCUSPREV
993 On exit force focus on previously focused application not previous
994 application in the stack.
995 .It NOFOCUSONMAP
996 Don't change focus to the window when it first appears on the screen.
997 Has no effect when
998 .Ic focus_mode
999 is set to
1000 .Ar follow .
1001 .It FOCUSONMAP_SINGLE
1002 When the window first appears on the screen, change focus to the window
1003 if there are no other windows on the workspace with the same WM_CLASS
1004 class/instance value.
1005 Has no effect when
1006 .Ic focus_mode
1007 is set to
1008 .Ar follow .
1009 .It OBEYAPPFOCUSREQ
1010 When an application requests focus on the window via a _NET_ACTIVE_WINDOW
1011 client message (source indication of 1), comply with the request.
1012 Note that a source indication of 0 (unspecified) or 2 (pager) are always
1013 obeyed.
1014 .It IGNOREPID
1015 Ignore the PID when determining the initial workspace for a new window.
1016 Especially useful for terminal windows that share a process.
1017 .It IGNORESPAWNWS
1018 Ignore the spawn workspace when determining the initial workspace for a
1019 new window.
1020 .It WS Ns Bq Ar n
1021 Force a new window to appear on workspace
1022 .Ar n .
1023 .El
1024 .Pp
1025 Custom quirks in the configuration file are specified as follows:
1026 .Pp
1027 .Dl quirk Ns Bo Ar class Ns Bo : Ns Ar instance Ns Bo : Ns Ar name Bc Bc Bc = Ar quirk Op + Ar quirk ...
1028 .Pp
1029 .Ar class ,
1030 .Ar instance
1031 (optional) and
1032 .Ar name
1033 (optional) are patterns used to determine which window(s) the quirk(s) apply
1034 to and
1035 .Ar quirk
1036 is one of the quirks from the list above.
1037 .Pp
1038 Note that patterns are interpreted as POSIX Extended Regular Expressions.
1039 Any ':', '[' or ']' must be escaped with '\\'.
1040 See
1041 .Xr regex 7
1042 for more information on POSIX Extended Regular Expressions.
1043 .Pp
1044 For example:
1045 .Bd -literal -offset indent
1046 quirk[MPlayer] = FLOAT + FULLSCREEN + FOCUSPREV # Float all windows having a \
1047 class of 'MPlayer'
1048 quirk[.*] = FLOAT # Float all windows by default.
1049 quirk[.*:.*:.*] = FLOAT # Same as above.
1050 quirk[Firefox:Navigator] = FLOAT # Float all Firefox browser windows.
1051 quirk[::Console] = FLOAT # Float windows with WM_CLASS not set and a \
1052 window name of 'Console'.
1053 quirk[\\[0-9\\].*:.*:\\[\\[\\:alnum\\:\\]\\]*] = FLOAT # Float windows with WM_CLASS \
1054 class beginning with a number, any WM_CLASS instance and a \
1055 _NET_WM_NAME/WM_NAME either blank or containing alphanumeric characters without spaces.
1056 quirk[pcb:pcb] = NONE # remove existing quirk
1057 .Ed
1058 .Pp
1059 You can obtain
1060 .Ar class ,
1061 .Ar instance
1062 and
1063 .Ar name
1064 by running
1065 .Xr xprop 1
1066 and then clicking on the desired window.
1067 In the following example the main window of Firefox was clicked:
1068 .Bd -literal -offset indent
1069 $ xprop | grep \-E "^(WM_CLASS|_NET_WM_NAME|WM_NAME)"
1070 WM_CLASS(STRING) = "Navigator", "Firefox"
1071 WM_NAME(STRING) = "spectrwm - ConformalOpenSource"
1072 _NET_WM_NAME(UTF8_STRING) = "spectrwm - ConformalOpenSource"
1073 .Ed
1074 .Pp
1075 Note that
1076 .Xr xprop 1
1077 displays WM_CLASS as:
1078 .Bd -literal -offset indent
1079 WM_CLASS(STRING) = "<instance>", "<class>"
1080 .Ed
1081 .Pp
1082 In the example above the quirk entry would be:
1083 .Bd -literal -offset indent
1084 quirk[Firefox:Navigator] = FLOAT
1085 .Ed
1086 .Pp
1087 .Nm
1088 also automatically assigns quirks to windows based on the value
1089 of the window's _NET_WM_WINDOW_TYPE property as follows:
1090 .Pp
1091 .Bl -tag -width "_NET_WM_WINDOW_TYPE_TOOLBAR<TAB>XXX" -offset indent -compact
1092 .It _NET_WM_WINDOW_TYPE_DOCK
1093 FLOAT + ANYWHERE
1094 .It _NET_WM_WINDOW_TYPE_TOOLBAR
1095 FLOAT + ANYWHERE
1096 .It _NET_WM_WINDOW_TYPE_UTILITY
1097 FLOAT + ANYWHERE
1098 .It _NET_WM_WINDOW_TYPE_SPLASH
1099 FLOAT
1100 .It _NET_WM_WINDOW_TYPE_DIALOG
1101 FLOAT
1102 .El
1103 .Pp
1104 In all other cases, no automatic quirks are assigned to the window.
1105 Quirks specified in the configuration file override the automatic quirks.
1106 .Sh EWMH
1107 .Nm
1108 partially implements the Extended Window Manager Hints (EWMH) specification.
1109 This enables controlling windows as well as
1110 .Nm
1111 itself from external scripts and programs.
1112 This is achieved by
1113 .Nm
1114 responding to certain ClientMessage events.
1115 From the terminal these events
1116 can be conveniently sent using tools such as
1117 .Xr wmctrl 1
1118 and
1119 .Xr xdotool 1 .
1120 For the
1121 actual format of these ClientMessage events, see the EWMH specification.
1122 .Pp
1123 The id of the currently focused window is stored in the _NET_ACTIVE_WINDOW
1124 property of the root window.
1125 This can be used for example to retrieve the
1126 title of the currently active window with
1127 .Xr xprop 1
1128 and
1129 .Xr grep 1 :
1130 .Bd -literal -offset indent
1131 $ WINDOWID=`xprop \-root _NET_ACTIVE_WINDOW | grep \-o "0x.*"`
1132 $ xprop \-id $WINDOWID _NET_WM_NAME | grep \-o "\\".*\\""
1133 .Ed
1134 .Pp
1135 A window can be focused by sending a _NET_ACTIVE_WINDOW client message
1136 to the root window.
1137 For example, using
1138 .Xr wmctrl 1
1139 to send the message
1140 (assuming 0x4a0000b is the id of the window to be focused):
1141 .Bd -literal -offset indent
1142 $ wmctrl \-i \-a 0x4a0000b
1143 .Ed
1144 .Pp
1145 Windows can be closed by sending a _NET_CLOSE_WINDOW client message
1146 to the root window.
1147 For example, using
1148 .Xr wmctrl 1
1149 to send the message
1150 (assuming 0x4a0000b is the id of the window to be closed):
1151 .Bd -literal -offset indent
1152 $ wmctrl \-i \-c 0x4a0000b
1153 .Ed
1154 .Pp
1155 Windows can be floated and un-floated by adding or removing the
1156 _NET_WM_STATE_ABOVE atom from the _NET_WM_STATE property of the window.
1157 This can be achieved by sending a _NET_WM_STATE client message to the
1158 root window.
1159 For example, the following toggles the floating state of
1160 a window using
1161 .Xr wmctrl 1
1162 to send the message (assuming 0x4a0000b is the id of the window to be
1163 floated or un-floated):
1164 .Bd -literal -offset indent
1165 $ wmctrl \-i \-r 0x4a0000b \-b toggle,_NET_WM_STATE_ABOVE
1166 .Ed
1167 .Pp
1168 Windows can also be iconified and un-iconified by substituting
1169 _NET_WM_STATE_HIDDEN for _NET_WM_STATE_ABOVE in the previous example:
1170 .Bd -literal -offset indent
1171 $ wmctrl \-i \-r 0x4a0000b \-b toggle,_NET_WM_STATE_HIDDEN
1172 .Ed
1173 .Pp
1174 Floating windows can also be resized and moved by sending a
1175 _NET_MOVERESIZE_WINDOW client message to the root window.
1176 For example,
1177 using
1178 .Xr wmctrl 1
1179 to send the message (assuming 0x4a0000b is the id of
1180 the window to be resize/moved):
1181 .Bd -literal -offset indent
1182 $ wmctrl \-i \-r 0x4a0000b \-e 0,100,50,640,480
1183 .Ed
1184 .Pp
1185 This moves the window to (100,50) and resizes it to 640x480.
1186 .Pp
1187 Any _NET_MOVERESIZE_WINDOW events received for stacked windows are ignored.
1188 .Sh SIGNALS
1189 Sending
1190 .Nm
1191 a HUP signal will restart it.
1192 .Sh FILES
1193 .Bl -tag -width "/etc/spectrwm.confXXX" -compact
1194 .It Pa ~/.spectrwm.conf
1195 .Nm
1196 user specific settings.
1197 .It Pa /etc/spectrwm.conf
1198 .Nm
1199 global settings.
1200 .El
1201 .Sh HISTORY
1202 .Nm
1203 was inspired by xmonad & dwm.
1204 .Sh AUTHORS
1205 .An -nosplit
1206 .Nm
1207 was written by:
1208 .Pp
1209 .Bl -tag -width "Ryan Thomas McBride Aq mcbride@countersiege.com " -offset \
1210 indent -compact
1211 .It Cm Marco Peereboom Aq marco@peereboom.us
1212 .It Cm Ryan Thomas McBride Aq mcbride@countersiege.com
1213 .It Cm Darrin Chandler Aq dwchandler@stilyagin.com
1214 .It Cm Pierre-Yves Ritschard Aq pyr@spootnik.org
1215 .It Cm Tuukka Kataja Aq stuge@xor.fi
1216 .It Cm Jason L. Wright Aq jason@thought.net
1217 .It Cm Reginald Kennedy Aq rk@rejii.com
1218 .It Cm Lawrence Teo Aq lteo@lteo.net
1219 .It Cm Tiago Cunha Aq tcunha@gmx.com
1220 .It Cm David Hill Aq dhill@mindcry.org
1221 .El