JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
list keyboard mapping files in their own section
[spectrwm.git] / scrotwm.1
1 .\" Copyright (c) 2009 Marco Peereboom <marco@peereboom.us>
2 .\" Copyright (c) 2009 Darrin Chandler <dwchandler@stilyagin.com>
3 .\"
4 .\" Permission to use, copy, modify, and distribute this software for any
5 .\" purpose with or without fee is hereby granted, provided that the above
6 .\" copyright notice and this permission notice appear in all copies.
7 .\"
8 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 .\"
16 .Dd $Mdocdate: November 11 2011 $
17 .Dt SCROTWM 1
18 .Os
19 .Sh NAME
20 .Nm scrotwm
21 .Nd window manager for X11
22 .Sh SYNOPSIS
23 .Nm scrotwm
24 .Sh DESCRIPTION
25 .Nm
26 is a minimalistic window manager that tries to stay out of the way so that
27 valuable screen real estate can be used for much more important stuff.
28 It has sane defaults and does not require one to learn a language to do any
29 configuration.
30 It was written by hackers for hackers and it strives to be small, compact and
31 fast.
32 .Pp
33 When
34 .Nm
35 starts up, it reads settings from its configuration file,
36 .Pa scrotwm.conf .
37 See the
38 .Sx CONFIGURATION FILES
39 section below.
40 .Pp
41 The following notation is used throughout this page:
42 .Pp
43 .Bl -tag -width Ds -offset indent -compact
44 .It Cm M
45 Meta
46 .It Cm S
47 Shift
48 .It Aq Cm Name
49 Named key
50 .It Cm M1
51 Mouse button 1
52 .It Cm M3
53 Mouse button 3
54 .El
55 .Pp
56 .Nm
57 is very simple in its use.
58 Most of the actions are initiated via key or mouse bindings.
59 See the
60 .Sx BINDINGS
61 section below for defaults and customizations.
62 .Sh CONFIGURATION FILES
63 .Nm
64 first tries to open the user specific file,
65 .Pa ~/.scrotwm.conf .
66 If that file is unavailable,
67 it then tries to open the global configuration file
68 .Pa /etc/scrotwm.conf .
69 .Pp
70 The format of the file is \*(Ltkeyword\*(Gt = \*(Ltsetting\*(Gt.
71 For example:
72 .Pp
73 .Dl color_focus = red
74 .Pp
75 Enabling or disabling an option is done by using 1 or 0 respectively.
76 .Pp
77 The file supports the following keywords:
78 .Pp
79 .Bl -tag -width "title_class_enabledXXX" -offset indent -compact
80 .It Cm autorun
81 Launch an application in a specified workspace at start-of-day.
82 Defined in the format ws[<idx>]:application, e.g. ws[2]:xterm launches an
83 xterm in workspace 2.
84 .It Cm color_focus
85 Border color of the currently focussed window.
86 .It Cm color_unfocus
87 Border color of unfocussed windows.
88 .It Cm bar_enabled
89 Enable or disable status bar.
90 .It Cm bar_border Ns Bq Ar x
91 Color of the status bar border in screen
92 .Ar x .
93 .It Cm bar_border_width
94 Set status bar border thickness in pixels.
95 Disable border by setting to 0.
96 .It Cm bar_color Ns Bq Ar x
97 Color of the status bar window in screen
98 .Ar x .
99 .It Cm bar_font_color Ns Bq Ar x
100 Color of the font in status bar in screen
101 .Ar x .
102 .It Cm bar_font
103 Status bar font.
104 .It Cm bar_action
105 External script that populates additional information in the status bar,
106 such as battery life.
107 .It Cm bar_delay
108 Update frequency, in seconds, of external script that populates the status bar.
109 .It Cm bar_at_bottom
110 Place the statusbar at the bottom of each region instead of the top.
111 .It Cm stack_enabled
112 Enable or disable displaying the current stacking algorithm in the status bar.
113 .It Cm clock_enabled
114 Enable or disable displaying the clock in the status bar.
115 Disable by setting to 0
116 so a custom clock could be used in the
117 .Pa bar_action
118 script.
119 .It Cm dialog_ratio
120 Some applications have dialogue windows that are too small to be useful.
121 This ratio is the screen size to what they will be resized.
122 For example, 0.6 is 60% of the physical screen size.
123 .It Cm keyboard_mapping
124 Clear all key bindings and load new key bindings from the specified file.
125 This allows you to load pre-defined key bindings for your keyboard layout.
126 See the
127 .Sx KEYBOARD MAPPING FILES
128 section below for a list of keyboard mapping files that have been provided
129 for several keyboard layouts.
130 .It Cm layout
131 Select layout to use at start-of-day.
132 Defined in the format
133 ws[idx]:master_grow:master_add:stack_inc:layout:always_raise:stack_mode, e.g.
134 ws[2]:-4:0:1:0:horizontal sets worskspace 2 to the horizontal stack mode and
135 shrinks the master area by 4 ticks and adds one window to the stack, while
136 maintaining default floating window behavior.
137 Possible stack_mode values are
138 .Pa vertical ,
139 .Pa horizontal
140 and
141 .Pa fullscreen .
142 .Pp
143 See
144 .Pa master_grow ,
145 .Pa master_shrink ,
146 .Pa master_add ,
147 .Pa master_del ,
148 .Pa stack_inc ,
149 .Pa stack_del ,
150 and
151 .Pa always_raise
152 for more information.
153 Note that the stacking options are complicated and have side-effects.
154 One should familiarize oneself with these commands before experimenting with the
155 .Pa layout
156 option.
157 .Pp
158 This setting is not retained at restart.
159 .It Cm region
160 Allocates a custom region, removing any autodetected regions which occupy the same
161 space on the screen.
162 Defined in the format screen[<idx>]:WIDTHxHEIGHT+X+Y,
163 e.g.\& screen[1]:800x1200+0+0.
164 .Pp
165 To make a screen span multiple monitors, create a region big enough to cover
166 them all, e.g. screen[1]:2048x768+0+0 makes the screen span two monitors with
167 1024x768 resolution sitting one next to the other.
168 .It Cm term_width
169 Set a preferred minimum width for the terminal.
170 If this value is greater than 0,
171 .Nm
172 will attempt to adjust the font sizes in the terminal to keep the terminal
173 width above this number as the window is resized.
174 Only
175 .Xr xterm 1
176 is currently supported.
177 The
178 .Xr xterm 1
179 binary must not be setuid or setgid, which it is by default on most systems.
180 Users may need to set program[term] (see the
181 .Sx PROGRAMS
182 section) to use an alternate copy of the
183 .Xr xterm 1
184 binary without the setgid bit set.
185 .It Cm title_class_enabled
186 Enable or disable displaying the window class in the status bar.
187 Enable by setting to 1.
188 .It Cm title_name_enabled
189 Enable or disable displaying the window title in the status bar.
190 Enable by setting to 1.
191 .It Cm urgent_enabled
192 Enable or disable the urgency hint.
193 Note that many terminal emulators require this to be enabled for it to
194 propagate.  In xterm, for example, one needs to add the following line
195 .Pa xterm.urgentOnBell: true
196 to
197 .Pa .Xdefaults .
198 .It Cm window_name_enabled
199 Enable or disable displaying the window name in the status bar.
200 Enable by setting to 1.
201 .It Cm verbose_layout
202 Enable or disable displaying the current master and stack values in the status
203 bar.
204 Enable by setting to 1.
205 .It Cm modkey
206 Change mod key.
207 Mod1 is generally the ALT key and Mod4 is the windows key on a PC.
208 .It Cm focus_mode
209 Using a value of
210 .Pa follow_cursor
211 will make the window manager focus the window
212 under the mouse when switching workspaces and creating windows.
213 .It Cm disable_border
214 Remove border when bar is disabled and there is only one window on the screen.
215 .It Cm border_width
216 Set window border thickness in pixels.
217 Disable all borders by setting to 0.
218 .It Cm program Ns Bq Ar p
219 Define new action to spawn a program
220 .Ar p .
221 See the
222 .Sx PROGRAMS
223 section below.
224 .It Cm bind Ns Bq Ar x
225 Bind key combo to action
226 .Ar x .
227 See the
228 .Sx BINDINGS
229 section below.
230 .It Cm quirk Ns Bq Ar c:n
231 Add "quirk" for windows with class
232 .Ar c
233 and name
234 .Ar n .
235 See the
236 .Sx QUIRKS
237 section below.
238 .El
239 .Pp
240 Colors need to be specified per the
241 .Xr XQueryColor 3
242 specification and fonts need to be specified per the
243 .Xr XQueryFont 3
244 specification.
245 .Pp
246 To list the available fonts in your system see
247 .Xr fc-list 1
248 or
249 .Xr xlsfonts 1
250 manpages.
251 The
252 .Xr xfontsel 1
253 application can help you to show the X Logical Font Description ("XLFD") used
254 as setting in the keyword
255 .Pa bar_font .
256 .Sh PROGRAMS
257 .Nm
258 allows you to define custom actions to launch programs of your choice and then
259 bind them the same as with built-in actions.
260 See the
261 .Sx BINDINGS
262 section below.
263 .Pp
264 The default programs are described below:
265 .Pp
266 .Bl -tag -width "screenshot_wind" -offset indent -compact
267 .It Cm term
268 xterm
269 .It Cm screenshot_all
270 screenshot.sh full
271 .It Cm screenshot_wind
272 screenshot.sh window
273 .It Cm lock
274 xlock
275 .It Cm initscr
276 initscreen.sh
277 .It Cm menu
278 dmenu_run \-fn $bar_font \-nb $bar_color \-nf $bar_font_color \-sb $bar_border \-sf $bar_color
279 .El
280 .Pp
281 Custom programs in the configuration file are specified as follows:
282 .Pp
283 .Dl program[<name>] = <progpath> [<arg> [... <arg>]]
284 .Pp
285 .Aq name
286 is any identifier that does not conflict with a built-in action or keyword,
287 .Aq progpath
288 is the desired program, and
289 .Aq arg
290 is zero or more arguments to the program.
291 .Pp
292 The following variables represent settable values in
293 .Nm
294 (see the
295 .Sx CONFIGURATION FILES
296 section above),
297 and may be used in the
298 .Aq arg
299 fields and will be substituted for values at the time the program is spawned:
300 .Pp
301 .Bl -tag -width "$bar_font_color" -offset indent -compact
302 .It Cm $bar_border
303 .It Cm $bar_color
304 .It Cm $bar_font
305 .It Cm $bar_font_color
306 .It Cm $color_focus
307 .It Cm $color_unfocus
308 .El
309 .Pp
310 Example:
311 .Bd -literal -offset indent
312 program[ff] = /usr/local/bin/firefox http://scrotwm.org/
313 bind[ff] = Mod+f # Now Mod+F launched firefox
314 .Ed
315 .Pp
316 To undo the previous:
317 .Bd -literal -offset indent
318 bind[] = Mod+f
319 program[ff] =
320 .Ed
321 .Sh BINDINGS
322 .Nm
323 provides many functions (or actions) accessed via key or mouse bindings.
324 .Pp
325 The current mouse bindings are described below:
326 .Pp
327 .Bl -tag -width "M-j, M-<TAB>XXX" -offset indent -compact
328 .It Cm M1
329 Focus window
330 .It Cm M-M1
331 Move window
332 .It Cm M-M3
333 Resize window
334 .It Cm M-S-M3
335 Resize window while maintaining it centered
336 .El
337 .Pp
338 The default key bindings are described below:
339 .Pp
340 .Bl -tag -width "M-j, M-<TAB>XXX" -offset indent -compact
341 .It Cm M-S- Ns Aq Cm Return
342 term
343 .It Cm M-p
344 menu
345 .It Cm M-S-q
346 quit
347 .It Cm M-q
348 restart
349 .It Cm M- Ns Aq Cm Space
350 cycle_layout
351 .It Cm M-S- Ns Aq Cm Space
352 reset_layout
353 .It Cm M-h
354 master_shrink
355 .It Cm M-l
356 master_grow
357 .It Cm M-,
358 master_add
359 .It Cm M-.
360 master_del
361 .It Cm M-S-,
362 stack_inc
363 .It Cm M-S-.
364 stack_del
365 .It Cm M- Ns Aq Cm Return
366 swap_main
367 .It Xo
368 .Cm M-j ,
369 .Cm M- Ns Aq Cm TAB
370 .Xc
371 focus_next
372 .It Xo
373 .Cm M-k ,
374 .Cm M-S- Ns Aq Cm TAB
375 .Xc
376 focus_prev
377 .It Cm M-m
378 focus_main
379 .It Cm M-S-j
380 swap_next
381 .It Cm M-S-k
382 swap_prev
383 .It Cm M-b
384 bar_toggle
385 .It Cm M-x
386 wind_del
387 .It Cm M-S-x
388 wind_kill
389 .It Cm M- Ns Aq Ar n
390 ws_ Ns Ar n
391 .It Cm M-S- Ns Aq Ar n
392 mvws_ Ns Ar n
393 .It Cm M- Ns Aq Cm Right
394 ws_next
395 .It Cm M- Ns Aq Cm Left
396 ws_prev
397 .It Cm M-a
398 ws_prior
399 .It Cm M-S- Ns Aq Cm Right
400 screen_next
401 .It Cm M-S- Ns Aq Cm Left
402 screen_prev
403 .It Cm M-s
404 screenshot_all
405 .It Cm M-S-s
406 screenshot_wind
407 .It Cm M-S-v
408 version
409 .It Cm M-t
410 float_toggle
411 .It Cm M-S- Ns Aq Cm Delete
412 lock
413 .It Cm M-S-i
414 initscr
415 .It Cm M-w
416 iconify
417 .It Cm M-S-w
418 uniconify
419 .It Cm M-S-r
420 always_raise
421 .It Cm M-v
422 button2
423 .It Cm M--
424 width_shrink
425 .It Cm M-=
426 width_grow
427 .It Cm M-S-
428 height_shrink
429 .It Cm M-S-=
430 height_grow
431 .It Cm M-[
432 move_left
433 .It Cm M-]
434 move_right
435 .It Cm M-S-[
436 move_up
437 .It Cm M-S-]
438 move_down
439 .El
440 .Pp
441 The action names and descriptions are listed below:
442 .Pp
443 .Bl -tag -width "M-j, M-<TAB>XXX" -offset indent -compact
444 .It Cm term
445 Spawn a new terminal
446 (see
447 .Sx PROGRAMS
448 above).
449 .It Cm menu
450 Menu
451 (see
452 .Sx PROGRAMS
453 above).
454 .It Cm quit
455 Quit
456 .Nm .
457 .It Cm restart
458 Restart
459 .Nm .
460 .It Cm cycle_layout
461 Cycle layout.
462 .It Cm reset_layout
463 Reset layout.
464 .It Cm master_shrink
465 Shrink master area.
466 .It Cm master_grow
467 Grow master area.
468 .It Cm master_add
469 Add windows to master area.
470 .It Cm master_del
471 Remove windows from master area.
472 .It Cm stack_inc
473 Add columns/rows to stacking area.
474 .It Cm stack_del
475 Remove columns/rows from stacking area.
476 .It Cm swap_main
477 Move current window to master area.
478 .It Cm focus_next
479 Focus next window in workspace.
480 .It Cm focus_prev
481 Focus previous window in workspace.
482 .It Cm focus_main
483 Focus on main window in workspace.
484 .It Cm swap_next
485 Swap with next window in workspace.
486 .It Cm swap_prev
487 Swap with previous window in workspace.
488 .It Cm bar_toggle
489 Toggle status bar in all workspaces.
490 .It Cm wind_del
491 Delete current window in workspace.
492 .It Cm wind_kill
493 Destroy current window in workspace.
494 .It Cm ws_ Ns Ar n
495 Switch to workspace
496 .Ar n ,
497 where
498 .Ar n
499 is 1 through 10.
500 .It Cm mvws_ Ns Ar n
501 Move current window to workspace
502 .Ar n ,
503 where
504 .Ar n
505 is 1 through 10.
506 .It Cm ws_next
507 Switch to next workspace with a window in it.
508 .It Cm ws_prev
509 Switch to previous workspace with a window in it.
510 .It Cm ws_prior
511 Switch to last visited workspace.
512 .It Cm screen_next
513 Move pointer to next region.
514 .It Cm screen_prev
515 Move pointer to previous region.
516 .It Cm screenshot_all
517 Take screenshot of entire screen (if enabled)
518 (see
519 .Sx PROGRAMS
520 above).
521 .It Cm screenshot_wind
522 Take screenshot of selected window (if enabled)
523 (see
524 .Sx PROGRAMS
525 above).
526 .It Cm version
527 Toggle version in status bar.
528 .It Cm float_toggle
529 Toggle focused window between tiled and floating.
530 .It Cm lock
531 Lock screen
532 (see
533 .Sx PROGRAMS
534 above).
535 .It Cm initscr
536 Reinitialize physical screens
537 (see
538 .Sx PROGRAMS
539 above).
540 .It Cm iconify
541 Minimize (unmap) currently focused window.
542 .It Cm uniconify
543 Maximize (map) window returned by dmenu selection.
544 .It Cm always_raise
545 When set tiled windows are allowed to obscure floating windows.
546 .It Cm button2
547 Fake a middle mouse button click (mouse button 2).
548 .It Cm width_shrink
549 Shrink the width of a floating window.
550 .It Cm width_grow
551 Grow the width of a floating window.
552 .It Cm height_shrink
553 Shrink the height of a floating window.
554 .It Cm height_grow
555 Grow the height of a floating window.
556 .It Cm move_left
557 Move a floating window a step to the left.
558 .It Cm move_right
559 Move a floating window a step to the right.
560 .It Cm move_up
561 Move a floating window a step upwards.
562 .It Cm move_down
563 Move a floating window a step downwards.
564 .El
565 .Pp
566 Custom bindings in the configuration file are specified as follows:
567 .Pp
568 .Dl bind[<action>] = <keys>
569 .Pp
570 .Aq action
571 is one of the actions listed above (or empty) and
572 .Aq keys
573 is in the form of zero or more modifier keys
574 (MOD, Mod1, Shift, etc.) and one or more normal keys
575 (b, space, etc.), separated by "+".
576 For example:
577 .Bd -literal -offset indent
578 bind[reset] = Mod4+q # bind Windows-key + q to reset
579 bind[] = Mod1+q # unbind Alt + q
580 .Ed
581 .Pp
582 Multiple key combinations may be bound to the same action.
583 .Sh KEYBOARD MAPPING FILES
584 Keyboard mapping files for several keyboard layouts are listed
585 below. These files can be used with the
586 .Pa keyboard_mapping
587 setting to load pre-defined key bindings for the specified
588 keyboard layout.
589 .Pp
590 .Bl -tag -width "scrotwm_XX.confXXX" -offset indent -compact
591 .It Cm scrotwm_cz.conf
592 Czech Republic keyboard layout
593 .It Cm scrotwm_es.conf
594 Spanish keyboard layout
595 .It Cm scrotwm_fr.conf
596 French keyboard layout
597 .It Cm scrotwm_us.conf
598 United States keyboard layout
599 .El
600 .Sh QUIRKS
601 .Nm
602 provides "quirks" which handle windows that must be treated specially
603 in a tiling window manager, such as some dialogs and fullscreen apps.
604 .Pp
605 The default quirks are described below:
606 .Pp
607 .Bl -tag -width "OpenOffice.org N.M:VCLSalFrame<TAB>XXX" -offset indent -compact
608 .It Firefox\-bin:firefox\-bin
609 TRANSSZ
610 .It Firefox:Dialog
611 FLOAT
612 .It Gimp:gimp
613 FLOAT + ANYWHERE
614 .It MPlayer:xv
615 FLOAT + FULLSCREEN + FOCUSPREV
616 .It OpenOffice.org 2.4:VCLSalFrame
617 FLOAT
618 .It OpenOffice.org 3.1:VCLSalFrame
619 FLOAT
620 .It pcb:pcb
621 FLOAT
622 .It xine:Xine Window
623 FLOAT + ANYWHERE
624 .It xine:xine Panel
625 FLOAT + ANYWHERE
626 .It xine:xine Video Fullscreen Window
627 FULLSCREEN + FLOAT
628 .It Xitk:Xitk Combo
629 FLOAT + ANYWHERE
630 .It Xitk:Xine Window
631 FLOAT + ANYWHERE
632 .It XTerm:xterm
633 XTERM_FONTADJ
634 .El
635 .Pp
636 The quirks themselves are described below:
637 .Pp
638 .Bl -tag -width "XTERM_FONTADJ<TAB>XXX" -offset indent -compact
639 .It FLOAT
640 This window should not be tiled, but allowed to float freely.
641 .It TRANSSZ
642 Adjusts size on transient windows that are too small using dialog_ratio
643 (see
644 .Sx CONFIGURATION FILES ) .
645 .It ANYWHERE
646 Allow window to position itself, uncentered.
647 .It XTERM_FONTADJ
648 Adjust xterm fonts when resizing.
649 .It FULLSCREEN
650 Remove border to allow window to use full screen size.
651 .It FOCUSPREV
652 On exit force focus on previously focused application not previous application
653 in the stack.
654 .El
655 .Pp
656 Custom quirks in the configuration file are specified as follows:
657 .Pp
658 .Dl quirk[<class>:<name>] = <quirk> [ + <quirk> ... ]
659 .Pp
660 .Aq class
661 and
662 .Aq name
663 specify the window to which the quirk(s) apply, and
664 .Aq quirk
665 is one of the quirks from the list above.
666 For example:
667 .Bd -literal -offset indent
668 quirk[MPlayer:xv] = FLOAT + FULLSCREEN + FOCUSPREV
669 quirk[pcb:pcb] = NONE  # remove existing quirk
670 .Ed
671 .Pp
672 You can obtain
673 .Aq class
674 and
675 .Aq name
676 by running xprop(1) and then clicking on the desired window.
677 In the following example the main window of Firefox was clicked:
678 .Bd -literal -offset indent
679 $ xprop | grep WM_CLASS
680 WM_CLASS(STRING) = "Navigator", "Firefox"
681 .Ed
682 .Pp
683 Note that grepping for WM_CLASS flips class and name.
684 In the example above the quirk entry would be:
685 .Bd -literal -offset indent
686 quirk[Firefox:Navigator] = FLOAT
687 .Ed
688 .Pp
689 .Nm
690 also automatically assigns quirks to windows based on the value
691 of the window's _NET_WM_WINDOW_TYPE property as follows:
692 .Pp
693 .Bl -tag -width "_NET_WM_WINDOW_TYPE_TOOLBAR<TAB>XXX" -offset indent -compact
694 .It _NET_WM_WINDOW_TYPE_DOCK
695 FLOAT + ANYWHERE
696 .It _NET_WM_WINDOW_TYPE_TOOLBAR
697 FLOAT + ANYWHERE
698 .It _NET_WM_WINDOW_TYPE_UTILITY
699 FLOAT + ANYWHERE
700 .It _NET_WM_WINDOW_TYPE_SPLASH
701 FLOAT
702 .It _NET_WM_WINDOW_TYPE_DIALOG
703 FLOAT
704 .El
705 .Pp
706 In all other cases, no automatic quirks are assigned to the window.
707 Quirks specified in the configuration file override the automatic quirks.
708 .Sh EWMH
709 .Nm
710 partially implements the Extended Window Manager Hints (EWMH) specification.
711 This enables controlling windows as well as
712 .Nm
713 itself from external scripts and programs. This is achieved by
714 .Nm
715 responding to certain ClientMessage events. From the terminal these events
716 can be conveniently sent using tools such as
717 .Xr wmctrl 1
718 and
719 .Xr xdotool 1 .
720 For the
721 actual format of these ClientMessage events, see the EWMH specification.
722 .Pp
723 The id of the currently focused window is stored in the _NET_ACTIVE_WINDOW
724 property of the root window. This can be used for example to retrieve the
725 title of the currently active window with
726 .Xr xprop 1
727 and
728 .Xr grep 1 :
729 .Bd -literal -offset indent
730 $ WINDOWID=`xprop \-root _NET_ACTIVE_WINDOW | grep \-o "0x.*"`
731 $ xprop \-id $WINDOWID WM_NAME | grep \-o "\\".*\\""
732 .Ed
733 .Pp
734 A window can be focused by sending a _NET_ACTIVE_WINDOW client message
735 to the root window. For example, using
736 .Xr wmctrl 1
737 to send the message
738 (assuming 0x4a0000b is the id of the window to be focused):
739 .Bd -literal -offset indent
740 $ wmctrl \-i \-a 0x4a0000b
741 .Ed
742 .Pp
743 Windows can be closed by sending a _NET_CLOSE_WINDOW client message
744 to the root window. For example, using
745 .Xr wmctrl 1
746 to send the message
747 (assuming 0x4a0000b is the id of the window to be closed):
748 .Bd -literal -offset indent
749 $ wmctrl \-i \-c 0x4a0000b
750 .Ed
751 .Pp
752 Windows can be floated and un-floated by adding or removing the
753 _NET_WM_STATE_ABOVE atom from the _NET_WM_STATE property of the window.
754 This can be achieved by sending a _NET_WM_STATE client message to the
755 root window. For example, the following toggles the floating state of
756 a window using
757 .Xr wmctrl 1
758 to send the message (assuming 0x4a0000b is the  id of the window floated
759 or un-floated):
760 .Bd -literal -offset indent
761 $ wmctrl \-i \-r 0x4a0000b \-b toggle,_NET_WM_STATE_ABOVE
762 .Ed
763 .Pp
764 Floating windows can also be resized and moved by sending a
765 _NET_MOVERESIZE_WINDOW client message to the root window. For example,
766 using
767 .Xr wmctrl 1
768 to send the message (assuming 0x4a0000b is the id of
769 the window to be resize/moved):
770 .Bd -literal -offset indent
771 $ wmctrl \-i \-r 0x4a0000b \-e 0,100,50,640,480
772 .Ed
773 .Pp
774 This moves the window to (100,50) and resizes it to 640x480.
775 .Pp
776 Any _NET_MOVERESIZE_WINDOW events received for stacked windows are ignored.
777 .Sh SIGNALS
778 Sending
779 .Nm
780 a HUP signal will restart it.
781 .Sh FILES
782 .Bl -tag -width "/etc/scrotwm.confXXX" -compact
783 .It Pa ~/.scrotwm.conf
784 .Nm
785 user specific settings.
786 .It Pa /etc/scrotwm.conf
787 .Nm
788 global settings.
789 .El
790 .Sh HISTORY
791 .Nm
792 was inspired by xmonad & dwm.
793 .Sh AUTHORS
794 .An -nosplit
795 .Nm
796 was written by:
797 .Pp
798 .Bl -tag -width "Ryan Thomas McBride Aq mcbride@countersiege.com " -offset indent -compact
799 .It Cm Marco Peereboom Aq marco@peereboom.us
800 .It Cm Ryan Thomas McBride Aq mcbride@countersiege.com
801 .It Cm Darrin Chandler Aq dwchandler@stilyagin.com
802 .It Cm Pierre-Yves Ritschard Aq pyr@spootnik.org
803 .It Cm Tuukka Kataja Aq stuge@xor.fi
804 .It Cm Jason L. Wright Aq jason@thought.net
805 .El
806 .Sh BUGS
807 Currently the menu, invoked with
808 .Cm M-p ,
809 depends on dmenu.