JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
document EWMH usage
[spectrwm.git] / scrotwm.1
index 90d4d20..8499bb4 100644 (file)
--- a/scrotwm.1
+++ b/scrotwm.1
@@ -122,10 +122,12 @@ 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 layout
 select layout to use at start-of-day.
-Defined in the format ws[idx]:master_grow:master_add:stack_inc:layout, e.g.
-ws[2]:-4:0:1:horizontal sets worskspace 2 to the horizontal stack mode and
-shrinks the master area by 4 ticks and adds one window to the stack.
-Possible layout values are
+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
@@ -137,8 +139,9 @@ See
 .Pa master_add ,
 .Pa master_del ,
 .Pa stack_inc ,
+.Pa stack_del ,
 and
-.Pa stack_del
+.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
@@ -606,10 +609,85 @@ In the example above the quirk entry would be:
 .Bd -literal -offset indent
 quirk[Firefox:Navigator] = FLOAT
 .Ed
+.Pp
+.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 "_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
+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 wmctrl and xdotool. 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 xprop(1) and 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 wmctrl 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 wmctrl 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 wmctrl 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 wmctrl 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.
+.Pp
 .Sh SIGNALS
 Sending
 .Nm
-a HUP signal will retstart it.
+a HUP signal will restart it.
 .Sh FILES
 .Bl -tag -width "/etc/scrotwm.confXXX" -compact
 .It Pa ~/.scrotwm.conf
@@ -624,13 +702,17 @@ global settings.
 was inspired by xmonad & dwm.
 .Sh AUTHORS
 .An -nosplit
-.Pp
 .Nm
-was written by
-.An Marco Peereboom Aq marco@peereboom.us ,
-.An Ryan Thomas McBride Aq mcbride@countersiege.com
-and
-.An Darrin Chandler Aq dwchandler@stilyagin.com .
+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
+.El
 .Sh BUGS
 Currently the menu, invoked with
 .Cm M-p ,