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