JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Prepare for release 0.11.0.
[spectrwm.git] / scrotwm.1
index 280b87d..3639b68 100644 (file)
--- a/scrotwm.1
+++ b/scrotwm.1
@@ -1,6 +1,5 @@
-.\"    $scrotwm$
-.\"
 .\" Copyright (c) 2009 Marco Peereboom <marco@peereboom.us>
+.\" Copyright (c) 2009 Darrin Chandler <dwchandler@stilyagin.com>
 .\"
 .\" Permission to use, copy, modify, and distribute this software for any
 .\" purpose with or without fee is hereby granted, provided that the above
@@ -14,7 +13,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate$
+.Dd $Mdocdate: January 25 2012 $
 .Dt SCROTWM 1
 .Os
 .Sh NAME
@@ -56,146 +55,775 @@ Mouse button 3
 .Pp
 .Nm
 is very simple in its use.
-Most of the actions are initiated via keybindings.
-The current keybindings are described below:
+Most of the actions are initiated via key or mouse bindings.
+See the
+.Sx BINDINGS
+section below for defaults and customizations.
+.Sh CONFIGURATION FILES
+.Nm
+first tries to open the user specific file,
+.Pa ~/.scrotwm.conf .
+If that file is unavailable,
+it then tries to open the global configuration file
+.Pa /etc/scrotwm.conf .
+.Pp
+The format of the file is \*(Ltkeyword\*(Gt = \*(Ltsetting\*(Gt.
+For example:
+.Pp
+.Dl color_focus = red
+.Pp
+Enabling or disabling an option is done by using 1 or 0 respectively.
+.Pp
+The file supports the following keywords:
+.Bl -tag -width 2m
+.It Ic autorun
+Launch an application in a specified workspace at start-of-day.
+Defined in the format ws[<idx>]:application, e.g. ws[2]:xterm launches an
+xterm in workspace 2.
+.It Ic bar_action
+External script that populates additional information in the status bar,
+such as battery life.
+.It Ic bar_at_bottom
+Place the statusbar at the bottom of each region instead of the top.
+.It Ic bar_border Ns Bq Ar x
+Color of the status bar border in screen
+.Ar x .
+.It Ic bar_border_width
+Set status bar border thickness in pixels.
+Disable border by setting to 0.
+.It Ic bar_color Ns Bq Ar x
+Color of the status bar window in screen
+.Ar x .
+.It Ic bar_delay
+Update frequency, in seconds, of external script that populates the status bar.
+.It Ic bar_enabled
+Enable or disable status bar.
+.It Ic bar_font
+Status bar font.
+.It Ic bar_font_color Ns Bq Ar x
+Color of the font in status bar in screen
+.Ar x .
+.It Ic bar_justify
+Justify the status bar text. Possible values are
+.Pa left ,
+.Pa center ,
+and
+.Pa right .
+.It Ic bind Ns Bq Ar x
+Bind key combo to action
+.Ar x .
+See the
+.Sx BINDINGS
+section below.
+.It Ic border_width
+Set window border thickness in pixels.
+Disable all borders by setting to 0.
+.It Ic clock_enabled
+Enable or disable displaying the clock in the status bar.
+Disable by setting to 0
+so a custom clock could be used in the
+.Pa bar_action
+script.
+.It Ic color_focus
+Border color of the currently focussed window.
+.It Ic color_unfocus
+Border color of unfocussed windows.
+.It Ic dialog_ratio
+Some applications have dialogue windows that are too small to be useful.
+This ratio is the screen size to what they will be resized.
+For example, 0.6 is 60% of the physical screen size.
+.It Ic disable_border
+Remove border when bar is disabled and there is only one window on the screen.
+.It Ic focus_mode
+Using a value of
+.Pa follow_cursor
+will make the window manager focus the window
+under the mouse when switching workspaces and creating windows.
+.It Ic keyboard_mapping
+Clear all key bindings and load new key bindings from the specified file.
+This allows you to load pre-defined key bindings for your keyboard layout.
+See the
+.Sx KEYBOARD MAPPING FILES
+section below for a list of keyboard mapping files that have been provided
+for several keyboard layouts.
+.It Ic layout
+Select layout to use at start-of-day.
+Defined in the format
+ws[idx]:master_grow:master_add:stack_inc:layout:always_raise:stack_mode, e.g.
+ws[2]:-4:0:1:0:horizontal sets worskspace 2 to the horizontal stack mode and
+shrinks the master area by 4 ticks and adds one window to the stack, while
+maintaining default floating window behavior.
+Possible stack_mode values are
+.Pa vertical ,
+.Pa horizontal
+and
+.Pa fullscreen .
+.Pp
+See
+.Pa master_grow ,
+.Pa master_shrink ,
+.Pa master_add ,
+.Pa master_del ,
+.Pa stack_inc ,
+.Pa stack_dec ,
+and
+.Pa always_raise
+for more information.
+Note that the stacking options are complicated and have side-effects.
+One should familiarize oneself with these commands before experimenting with the
+.Pa layout
+option.
+.Pp
+This setting is not retained at restart.
+.It Ic modkey
+Change mod key.
+Mod1 is generally the ALT key and Mod4 is the windows key on a PC.
+.It Ic program Ns Bq Ar p
+Define new action to spawn a program
+.Ar p .
+See the
+.Sx PROGRAMS
+section below.
+.It Ic quirk Ns Bq Ar c:n
+Add "quirk" for windows with class
+.Ar c
+and name
+.Ar n .
+See the
+.Sx QUIRKS
+section below.
+.It Ic region
+Allocates a custom region, removing any autodetected regions which occupy the same
+space on the screen.
+Defined in the format screen[<idx>]:WIDTHxHEIGHT+X+Y,
+e.g.\& screen[1]:800x1200+0+0.
+.Pp
+To make a screen span multiple monitors, create a region big enough to cover
+them all, e.g. screen[1]:2048x768+0+0 makes the screen span two monitors with
+1024x768 resolution sitting one next to the other.
+.It Ic stack_enabled
+Enable or disable displaying the current stacking algorithm in the status bar.
+.It Ic term_width
+Set a preferred minimum width for the terminal.
+If this value is greater than 0,
+.Nm
+will attempt to adjust the font sizes in the terminal to keep the terminal
+width above this number as the window is resized.
+Only
+.Xr xterm 1
+is currently supported.
+The
+.Xr xterm 1
+binary must not be setuid or setgid, which it is by default on most systems.
+Users may need to set program[term] (see the
+.Sx PROGRAMS
+section) to use an alternate copy of the
+.Xr xterm 1
+binary without the setgid bit set.
+.It Ic title_class_enabled
+Enable or disable displaying the window class in the status bar.
+Enable by setting to 1.
+.It Ic title_name_enabled
+Enable or disable displaying the window title in the status bar.
+Enable by setting to 1.
+.It Ic urgent_enabled
+Enable or disable the urgency hint.
+Note that many terminal emulators require this to be enabled for it to
+propagate.
+In xterm, for example, one needs to add the following line
+.Pa xterm.urgentOnBell: true
+to
+.Pa .Xdefaults .
+.It Ic verbose_layout
+Enable or disable displaying the current master and stack values in the status
+bar.
+Enable by setting to 1.
+.It Ic window_name_enabled
+Enable or disable displaying the window name in the status bar.
+Enable by setting to 1.
+.El
+.Pp
+Colors need to be specified per the
+.Xr XQueryColor 3
+specification and fonts need to be specified per the
+.Xr XQueryFont 3
+specification.
+.Pp
+To list the available fonts in your system see
+.Xr fc-list 1
+or
+.Xr xlsfonts 1
+manpages.
+The
+.Xr xfontsel 1
+application can help you to show the X Logical Font Description ("XLFD") used
+as setting in the keyword
+.Pa bar_font .
+.Sh PROGRAMS
+.Nm
+allows you to define custom actions to launch programs of your choice and then
+bind them the same as with built-in actions.
+See the
+.Sx BINDINGS
+section below.
+.Pp
+The default programs are described below:
+.Pp
+.Bl -tag -width "screenshot_wind" -offset indent -compact
+.It Cm term
+xterm
+.It Cm screenshot_all
+screenshot.sh full
+.It Cm screenshot_wind
+screenshot.sh window
+.It Cm lock
+xlock
+.It Cm initscr
+initscreen.sh
+.It Cm menu
+dmenu_run \-fn $bar_font \-nb $bar_color \-nf $bar_font_color \-sb $bar_border \-sf $bar_color
+.El
+.Pp
+Custom programs in the configuration file are specified as follows:
+.Pp
+.Dl program[<name>] = <progpath> [<arg> [... <arg>]]
+.Pp
+.Aq name
+is any identifier that does not conflict with a built-in action or keyword,
+.Aq progpath
+is the desired program, and
+.Aq arg
+is zero or more arguments to the program.
+.Pp
+The following variables represent settable values in
+.Nm
+(see the
+.Sx CONFIGURATION FILES
+section above),
+and may be used in the
+.Aq arg
+fields and will be substituted for values at the time the program is spawned:
+.Pp
+.Bl -tag -width "$bar_font_color" -offset indent -compact
+.It Cm $bar_border
+.It Cm $bar_color
+.It Cm $bar_font
+.It Cm $bar_font_color
+.It Cm $color_focus
+.It Cm $color_unfocus
+.El
+.Pp
+Example:
+.Bd -literal -offset indent
+program[ff] = /usr/local/bin/firefox http://scrotwm.org/
+bind[ff] = Mod+Shift+b # Now Mod+Shift+B launches firefox
+.Ed
+.Pp
+To undo the previous:
+.Bd -literal -offset indent
+bind[] = Mod+Shift+b
+program[ff] =
+.Ed
+.Sh BINDINGS
+.Nm
+provides many functions (or actions) accessed via key or mouse bindings.
+.Pp
+The current mouse bindings are described below:
+.Pp
+.Bl -tag -width "M-j, M-<TAB>XXX" -offset indent -compact
+.It Cm M1
+Focus window
+.It Cm M-M1
+Move window
+.It Cm M-M3
+Resize window
+.It Cm M-S-M3
+Resize window while maintaining it centered
+.El
+.Pp
+The default key bindings are described below:
 .Pp
 .Bl -tag -width "M-j, M-<TAB>XXX" -offset indent -compact
 .It Cm M-S- Ns Aq Cm Return
-Spawn a new terminal
+term
 .It Cm M-p
-Menu
+menu
 .It Cm M-S-q
-Quit
+quit
 .It Cm M-q
-Restart
-.Nm
+restart
 .It Cm M- Ns Aq Cm Space
-Cycle layout
+cycle_layout
+.It Cm M-S- Ns Aq Cm \e
+flip_layout
 .It Cm M-S- Ns Aq Cm Space
-Reset layout
+stack_reset
 .It Cm M-h
-Shrink master area
+master_shrink
 .It Cm M-l
-Grow master area
+master_grow
 .It Cm M-,
-Add windows to master area
+master_add
 .It Cm M-.
-Remove windows from master area
+master_del
+.It Cm M-S-,
+stack_inc
+.It Cm M-S-.
+stack_dec
 .It Cm M- Ns Aq Cm Return
-Move current window to master area
+swap_main
 .It Xo
 .Cm M-j ,
 .Cm M- Ns Aq Cm TAB
 .Xc
-Focus next window in workspace
+focus_next
 .It Xo
 .Cm M-k ,
 .Cm M-S- Ns Aq Cm TAB
 .Xc
-Focus previous window in workspace
+focus_prev
 .It Cm M-m
-Focus on main window in workspace
+focus_main
 .It Cm M-S-j
-Swap with next window in workspace
+swap_next
 .It Cm M-S-k
-Swap with previous window in workspace
+swap_prev
 .It Cm M-b
-Toggle status bar in all workspaces
+bar_toggle
+.It Cm M-x
+wind_del
 .It Cm M-S-x
-Destroy current window in workspace
+wind_kill
 .It Cm M- Ns Aq Ar n
-Switch to workspace
-.Ar n
+.Pf ws_ Ar n
 .It Cm M-S- Ns Aq Ar n
-Move current window to workspace
-.Ar n
+.Pf mvws_ Ar n
 .It Cm M- Ns Aq Cm Right
-Switch to next workspace with a window in it
+ws_next
 .It Cm M- Ns Aq Cm Left
-Switch to previous workspace with a window in it
+ws_prev
+.It Cm M- Ns Aq Cm Up
+ws_next_all
+.It Cm M- Ns Aq Cm Down
+ws_prev_all
+.It Cm M-a
+ws_prior
 .It Cm M-S- Ns Aq Cm Right
-Move pointer to next region
+screen_next
 .It Cm M-S- Ns Aq Cm Left
-Move pointer to previous region
+screen_prev
 .It Cm M-s
-Take screenshot of entire screen (if enabled)
+screenshot_all
 .It Cm M-S-s
-Take screenshot of selected window (if enabled)
+screenshot_wind
 .It Cm M-S-v
-Toggle version in status bar
+version
 .It Cm M-t
-Toggle focused window between tiled and floating
-.It Cm M1
-Focus window
-.It Cm M-M1
-Move window
-.It Cm M-M3
-Resize window
-.It Cm M-S-M3
-Resize window while maintaining it centered
+float_toggle
+.It Cm M-S- Ns Aq Cm Delete
+lock
+.It Cm M-S-i
+initscr
+.It Cm M-w
+iconify
+.It Cm M-S-w
+uniconify
+.It Cm M-S-r
+always_raise
+.It Cm M-v
+button2
+.It Cm M--
+width_shrink
+.It Cm M-=
+width_grow
+.It Cm M-S-
+height_shrink
+.It Cm M-S-=
+height_grow
+.It Cm M-[
+move_left
+.It Cm M-]
+move_right
+.It Cm M-S-[
+move_up
+.It Cm M-S-]
+move_down
+.It Cm M-S-/
+name_workspace
+.It Cm M-/
+search_workspace
+.It Cm M-f
+search_win
 .El
-.Sh CONFIGURATION FILES
+.Pp
+The action names and descriptions are listed below:
+.Pp
+.Bl -tag -width "M-j, M-<TAB>XXXX" -offset indent -compact
+.It Cm term
+Spawn a new terminal
+(see
+.Sx PROGRAMS
+above).
+.It Cm menu
+Menu
+(see
+.Sx PROGRAMS
+above).
+.It Cm quit
+Quit
+.Nm .
+.It Cm restart
+Restart
+.Nm .
+.It Cm cycle_layout
+Cycle layout.
+.It Cm flip_layout
+Swap the master and stacking areas.
+.It Cm stack_reset
+Reset layout.
+.It Cm master_shrink
+Shrink master area.
+.It Cm master_grow
+Grow master area.
+.It Cm master_add
+Add windows to master area.
+.It Cm master_del
+Remove windows from master area.
+.It Cm stack_inc
+Add columns/rows to stacking area.
+.It Cm stack_dec
+Remove columns/rows from stacking area.
+.It Cm swap_main
+Move current window to master area.
+.It Cm focus_next
+Focus next window in workspace.
+.It Cm focus_prev
+Focus previous window in workspace.
+.It Cm focus_main
+Focus on main window in workspace.
+.It Cm swap_next
+Swap with next window in workspace.
+.It Cm swap_prev
+Swap with previous window in workspace.
+.It Cm bar_toggle
+Toggle status bar in all workspaces.
+.It Cm wind_del
+Delete current window in workspace.
+.It Cm wind_kill
+Destroy current window in workspace.
+.It Cm ws_ Ns Ar n
+Switch to workspace
+.Ar n ,
+where
+.Ar n
+is 1 through 10.
+.It Cm mvws_ Ns Ar n
+Move current window to workspace
+.Ar n ,
+where
+.Ar n
+is 1 through 10.
+.It Cm ws_next
+Switch to next workspace with a window in it.
+.It Cm ws_prev
+Switch to previous workspace with a window in it.
+.It Cm ws_next_all
+Switch to next workspace.
+.It Cm ws_prev_all
+Switch to previous workspace.
+.It Cm ws_prior
+Switch to last visited workspace.
+.It Cm screen_next
+Move pointer to next region.
+.It Cm screen_prev
+Move pointer to previous region.
+.It Cm screenshot_all
+Take screenshot of entire screen (if enabled)
+(see
+.Sx PROGRAMS
+above).
+.It Cm screenshot_wind
+Take screenshot of selected window (if enabled)
+(see
+.Sx PROGRAMS
+above).
+.It Cm version
+Toggle version in status bar.
+.It Cm float_toggle
+Toggle focused window between tiled and floating.
+.It Cm lock
+Lock screen
+(see
+.Sx PROGRAMS
+above).
+.It Cm initscr
+Reinitialize physical screens
+(see
+.Sx PROGRAMS
+above).
+.It Cm iconify
+Minimize (unmap) currently focused window.
+.It Cm uniconify
+Maximize (map) window returned by dmenu selection.
+.It Cm always_raise
+When set tiled windows are allowed to obscure floating windows.
+.It Cm button2
+Fake a middle mouse button click (mouse button 2).
+.It Cm width_shrink
+Shrink the width of a floating window.
+.It Cm width_grow
+Grow the width of a floating window.
+.It Cm height_shrink
+Shrink the height of a floating window.
+.It Cm height_grow
+Grow the height of a floating window.
+.It Cm move_left
+Move a floating window a step to the left.
+.It Cm move_right
+Move a floating window a step to the right.
+.It Cm move_up
+Move a floating window a step upwards.
+.It Cm move_down
+Move a floating window a step downwards.
+.It Cm name_workspace
+Name the current workspace.
+.It Cm search_workspace
+Search for a workspace.
+.It Cm search_win
+Search the windows in the current workspace.
+.El
+.Pp
+Custom bindings in the configuration file are specified as follows:
+.Pp
+.Dl bind[<action>] = <keys>
+.Pp
+.Aq action
+is one of the actions listed above (or empty) and
+.Aq keys
+is in the form of zero or more modifier keys
+(MOD, Mod1, Shift, etc.) and one or more normal keys
+(b, space, etc.), separated by "+".
+For example:
+.Bd -literal -offset indent
+bind[reset] = Mod4+q # bind Windows-key + q to reset
+bind[] = Mod1+q # unbind Alt + q
+.Ed
+.Pp
+To use the currently defined
+.Ic modkey ,
+specify MOD as the modifier key.
+.Pp
+Multiple key combinations may be bound to the same action.
+.Sh KEYBOARD MAPPING FILES
+Keyboard mapping files for several keyboard layouts are listed
+below.
+These files can be used with the
+.Pa keyboard_mapping
+setting to load pre-defined key bindings for the specified
+keyboard layout.
+.Pp
+.Bl -tag -width "scrotwm_XX.confXXX" -offset indent -compact
+.It Cm scrotwm_cz.conf
+Czech Republic keyboard layout
+.It Cm scrotwm_es.conf
+Spanish keyboard layout
+.It Cm scrotwm_fr.conf
+French keyboard layout
+.It Cm scrotwm_fr_ch.conf
+Swiss French keyboard layout
+.It Cm scrotwm_se.conf
+Swedish keyboard layout
+.It Cm scrotwm_us.conf
+United States keyboard layout
+.El
+.Sh QUIRKS
 .Nm
-first tries to open the user specific file,
-.Pa ~/.scrotwm.conf .
-If that file is unavailable,
-it then tries to open the global configuration file
-.Pa /etc/scrotwm.conf .
+provides "quirks" which handle windows that must be treated specially
+in a tiling window manager, such as some dialogs and fullscreen apps.
 .Pp
-The format of the file is \*(Ltkeyword\*(Gt = \*(Ltsetting\*(Gt.
+The default quirks are described below:
+.Pp
+.Bl -tag -width "OpenOffice.org N.M:VCLSalFrame<TAB>XXX" -offset indent -compact
+.It Firefox\-bin:firefox\-bin
+TRANSSZ
+.It Firefox:Dialog
+FLOAT
+.It Gimp:gimp
+FLOAT + ANYWHERE
+.It MPlayer:xv
+FLOAT + FULLSCREEN + FOCUSPREV
+.It OpenOffice.org 2.4:VCLSalFrame
+FLOAT
+.It OpenOffice.org 3.1:VCLSalFrame
+FLOAT
+.It pcb:pcb
+FLOAT
+.It xine:Xine Window
+FLOAT + ANYWHERE
+.It xine:xine Panel
+FLOAT + ANYWHERE
+.It xine:xine Video Fullscreen Window
+FULLSCREEN + FLOAT
+.It Xitk:Xitk Combo
+FLOAT + ANYWHERE
+.It Xitk:Xine Window
+FLOAT + ANYWHERE
+.It XTerm:xterm
+XTERM_FONTADJ
+.El
+.Pp
+The quirks themselves are described below:
+.Pp
+.Bl -tag -width "XTERM_FONTADJ<TAB>XXX" -offset indent -compact
+.It FLOAT
+This window should not be tiled, but allowed to float freely.
+.It TRANSSZ
+Adjusts size on transient windows that are too small using dialog_ratio
+(see
+.Sx CONFIGURATION FILES ) .
+.It ANYWHERE
+Allow window to position itself, uncentered.
+.It XTERM_FONTADJ
+Adjust xterm fonts when resizing.
+.It FULLSCREEN
+Remove border to allow window to use full screen size.
+.It FOCUSPREV
+On exit force focus on previously focused application not previous application
+in the stack.
+.El
+.Pp
+Custom quirks in the configuration file are specified as follows:
+.Pp
+.Dl quirk[<class>:<name>] = <quirk> [ + <quirk> ... ]
+.Pp
+.Aq class
+and
+.Aq name
+specify the window to which the quirk(s) apply, and
+.Aq quirk
+is one of the quirks from the list above.
 For example:
+.Bd -literal -offset indent
+quirk[MPlayer:xv] = FLOAT + FULLSCREEN + FOCUSPREV
+quirk[pcb:pcb] = NONE  # remove existing quirk
+.Ed
 .Pp
-.Dl color_focus = red
+You can obtain
+.Aq class
+and
+.Aq name
+by running xprop(1) and then clicking on the desired window.
+In the following example the main window of Firefox was clicked:
+.Bd -literal -offset indent
+$ xprop | grep WM_CLASS
+WM_CLASS(STRING) = "Navigator", "Firefox"
+.Ed
 .Pp
-Enabling or disabling an option is done by using 1 or 0 respectively.
+Note that grepping for WM_CLASS flips class and name.
+In the example above the quirk entry would be:
+.Bd -literal -offset indent
+quirk[Firefox:Navigator] = FLOAT
+.Ed
 .Pp
-The file supports the following keywords:
+.Nm
+also automatically assigns quirks to windows based on the value
+of the window's _NET_WM_WINDOW_TYPE property as follows:
 .Pp
-.Bl -tag -width "screenshot_enabledXXX" -offset indent -compact
-.It Cm color_focus
-Border color of the currently focussed window.
-.It Cm color_unfocus
-Border color of unfocussed windows.
-.It Cm bar_enabled
-Enable or disable status bar.
-.It Cm bar_border Ns Bq Ar x
-Color of the status bar border in screen
-.Ar x .
-.It Cm bar_color Ns Bq Ar x
-Color of the status bar window in screen
-.Ar x .
-.It Cm bar_font_color Ns Bq Ar x
-Color of the font in status bar in screen
-.Ar x .
-.It Cm bar_font
-Status bar font.
-.It Cm bar_action
-External script that populates additional information in the status bar,
-such as battery life.
-.It Cm bar_delay
-Update frequency, in seconds, of external script that populates the status bar.
-.It Cm spawn_term
-External application that gets spawned when
-.Cm M-S- Ns Aq Cm Return
-is used.
-.It Cm dialog_ratio
-Some applications have dialogue windows that are too small to be useful.
-This ratio is the screen size to what they will be resized.
-For example, 0.6 is 60% of the physical screen size.
-.It Cm screenshot_enabled
-Enable or disable screenshot capability.
-.It Cm screenshot_app
-Set to the script that will take screenshots.
-It will be called with "full" or "window" as parameter 1 to indicate what
-screenshot action is expected.
-The script shall handle those cases accordingly.
+.Bl -tag -width "_NET_WM_WINDOW_TYPE_TOOLBAR<TAB>XXX" -offset indent -compact
+.It _NET_WM_WINDOW_TYPE_DOCK
+FLOAT + ANYWHERE
+.It _NET_WM_WINDOW_TYPE_TOOLBAR
+FLOAT + ANYWHERE
+.It _NET_WM_WINDOW_TYPE_UTILITY
+FLOAT + ANYWHERE
+.It _NET_WM_WINDOW_TYPE_SPLASH
+FLOAT
+.It _NET_WM_WINDOW_TYPE_DIALOG
+FLOAT
 .El
 .Pp
-Colors need to be specified per the
-.Xr XQueryColor 3
-specification and fonts need to be specified per the
-.Xr XQueryFont 3
-specification.
+In all other cases, no automatic quirks are assigned to the window.
+Quirks specified in the configuration file override the automatic quirks.
+.Sh EWMH
+.Nm
+partially implements the Extended Window Manager Hints (EWMH) specification.
+This enables controlling windows as well as
+.Nm
+itself from external scripts and programs.
+This is achieved by
+.Nm
+responding to certain ClientMessage events.
+From the terminal these events
+can be conveniently sent using tools such as
+.Xr wmctrl 1
+and
+.Xr xdotool 1 .
+For the
+actual format of these ClientMessage events, see the EWMH specification.
+.Pp
+The id of the currently focused window is stored in the _NET_ACTIVE_WINDOW
+property of the root window.
+This can be used for example to retrieve the
+title of the currently active window with
+.Xr xprop 1
+and
+.Xr grep 1 :
+.Bd -literal -offset indent
+$ WINDOWID=`xprop \-root _NET_ACTIVE_WINDOW | grep \-o "0x.*"`
+$ xprop \-id $WINDOWID WM_NAME | grep \-o "\\".*\\""
+.Ed
+.Pp
+A window can be focused by sending a _NET_ACTIVE_WINDOW client message
+to the root window.
+For example, using
+.Xr wmctrl 1
+to send the message
+(assuming 0x4a0000b is the id of the window to be focused):
+.Bd -literal -offset indent
+$ wmctrl \-i \-a 0x4a0000b
+.Ed
+.Pp
+Windows can be closed by sending a _NET_CLOSE_WINDOW client message
+to the root window.
+For example, using
+.Xr wmctrl 1
+to send the message
+(assuming 0x4a0000b is the id of the window to be closed):
+.Bd -literal -offset indent
+$ wmctrl \-i \-c 0x4a0000b
+.Ed
+.Pp
+Windows can be floated and un-floated by adding or removing the
+_NET_WM_STATE_ABOVE atom from the _NET_WM_STATE property of the window.
+This can be achieved by sending a _NET_WM_STATE client message to the
+root window.
+For example, the following toggles the floating state of
+a window using
+.Xr wmctrl 1
+to send the message (assuming 0x4a0000b is the  id of the window floated
+or un-floated):
+.Bd -literal -offset indent
+$ wmctrl \-i \-r 0x4a0000b \-b toggle,_NET_WM_STATE_ABOVE
+.Ed
+.Pp
+Floating windows can also be resized and moved by sending a
+_NET_MOVERESIZE_WINDOW client message to the root window.
+For example,
+using
+.Xr wmctrl 1
+to send the message (assuming 0x4a0000b is the id of
+the window to be resize/moved):
+.Bd -literal -offset indent
+$ wmctrl \-i \-r 0x4a0000b \-e 0,100,50,640,480
+.Ed
+.Pp
+This moves the window to (100,50) and resizes it to 640x480.
+.Pp
+Any _NET_MOVERESIZE_WINDOW events received for stacked windows are ignored.
+.Sh SIGNALS
+Sending
+.Nm
+a HUP signal will restart it.
 .Sh FILES
 .Bl -tag -width "/etc/scrotwm.confXXX" -compact
 .It Pa ~/.scrotwm.conf
@@ -210,13 +838,15 @@ global settings.
 was inspired by xmonad & dwm.
 .Sh AUTHORS
 .An -nosplit
-.Pp
 .Nm
-was written by
-.An Marco Peereboom Aq marco@peereboom.us
-and
-.An Ryan Thomas McBride Aq mcbride@countersiege.com .
-.Sh BUGS
-Currently the menu, invoked with
-.Cm M-p ,
-depends on dmenu.
+was written by:
+.Pp
+.Bl -tag -width "Ryan Thomas McBride Aq mcbride@countersiege.com " -offset indent -compact
+.It Cm Marco Peereboom Aq marco@peereboom.us
+.It Cm Ryan Thomas McBride Aq mcbride@countersiege.com
+.It Cm Darrin Chandler Aq dwchandler@stilyagin.com
+.It Cm Pierre-Yves Ritschard Aq pyr@spootnik.org
+.It Cm Tuukka Kataja Aq stuge@xor.fi
+.It Cm Jason L. Wright Aq jason@thought.net
+.It Cm Reginald Kennedy Aq rk@rejii.com
+.El