Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FVWM3COMMANDS(1)					      FVWM3COMMANDS(1)

NAME
       fvwm3commands - fvwm built-in commands

LIST OF	FVWM COMMANDS
       The command descriptions	below are grouped together in the following
       sections. The sections are hopefully sorted in order of usefulness to
       the newcomer.

          Menu	commands

          Miscellaneous commands

          Commands affecting window movement and placement

          Commands for	focus and mouse	movement

          Commands controlling	window state

          Commands for	mouse and key bindings

          The Style command (controlling window styles)

          Other commands controlling window styles

          Commands controlling	the virtual desktop

          Commands for	user functions and shell commands

          Conditional commands

          Module commands

          Quit, restart and session management	commands

          Colorsets

          Color gradients

   Miscellaneous Commands
       BugOpts [option [bool]],	...
	   This	command	controls several workarounds for bugs in third party
	   programs. The individual options are	separated by commas. The
	   optional argument bool is a boolean argument	and controls if	the
	   bug workaround is enabled or	not. It	can either be "True" or
	   "False" to turn the option on or off, or "toggle" to	switch is back
	   and forth. If bool is omitted, the default setting is restored.

	   DebugRandR activates	monitor	layout debug messages.

	   FlickeringMoveWorkaround disables ConfigureNotify events that are
	   usually sent	to an application while	it is moved. If	some windows
	   flicker annoyingly while being moved, this option may help you.
	   Note	that if	this problem occurs it is not an fvwm bug, it is a
	   problem of the application.

	   MixedVisualWorkaround makes fvwm install the	root colormap before
	   it does some	operations using the root window visuals. This is only
	   useful when the -visual option is used to start fvwm	and then only
	   with	some configurations of some servers (e.g. Exceed 6.0 with an 8
	   bit PseudoColor root	and fvwm using a 24 bit	TrueColor visual).

	   The ModalityIsEvil option controls whether Motif applications have
	   the ability to have modal dialogs (dialogs that force you to	close
	   them	first before you can do	anything else).	The default is to not
	   allow applications to have modal dialogs. Use this option with
	   care. Once this option is turned on,	you have to restart fvwm to
	   turn	it off.

	   RaiseOverNativeWindows makes	fvwm try to raise the windows it
	   manages over	native windows of the X	server's host system. This is
	   needed for some X servers running under Windows, Windows NT or Mac
	   OS X. Fvwm tries to detect if it is running under such an X server
	   and initializes the flag accordingly.

	   RaiseOverUnmanaged makes fvwm try to	raise the windows it manages
	   over	override_redirect windows. This	is used	to cope	with
	   ill-mannered	applications that use long-lived windows of this sort,
	   contrary to ICCCM conventions. It is	useful with the	Unmanaged
	   style option	too.

	   FlickeringQtDialogsWorkaround suppresses flickering of the focused
	   window in some modules when using KDE or QT applications with
	   application modal dialog windows. By	default	this option is turned
	   on. This option may be visually disturbing for other	applications
	   using windows not managed by	fvwm. Since these applications are
	   rare	it is most likely safe to leave	this option at its default.

	   QtDragnDropWorkaround suppresses the	forwarding of unknown
	   ClientEvent messages	to windows -- usually this is harmless,	but Qt
	   has problems	handling unrecognised ClientEvent messages. Enabling
	   this	option might therefore help for	Qt applications	using
	   DragnDrop. This option is off by default.

	   EWMHIconicStateWorkaround is	needed by EWMH compliant pagers	or
	   taskbars which represent windows which are on a different desktops
	   as iconified. These pagers and taskbars use a version of the	EWMH
	   specification before	version	1.2 (the current KDE 2 & 3 versions).
	   These pagers	and taskbars use the IconicState WM_STATE state	to
	   determine if	an application is iconified. This state, according to
	   the ICCCM, does not imply that a window is iconified	(in the	usual
	   sense). Turning on this option forces fvwm to establish an
	   equivalence between the IconicState WM_STATE	state and the
	   iconified window. This violates ICCCM compliance but	should not
	   cause big problems. By default this option is off.

	   With	the DisplayNewWindowNames enabled, fvwm	prints the name, icon
	   name	(if available),	resource and class of new windows to the
	   console. This can help in finding the correct strings to use	in the
	   Style command.

	   When	the ExplainWindowPlacement option is enabled, fvwm prints a
	   message to the console whenever a new window	is placed or
	   PlaceAgain, is used.	The message explains on	which desk, page,
	   screen and position it was placed and why. This option can be used
	   to figure out why a specific	window does not	appear where you think
	   it should.

	   The DebugCRMotionMethod option enables some debugging code in the
	   ConfigureRequest handling routines of fvwm. It is not helpful for
	   the user, but if you	report a bug to	the fvwm team we may ask you
	   to enable this option.

	   The TransliterateUtf8 option	enables	transliteration	during
	   conversions from utf-8 strings. By default fvwm will	not
	   transliterate during	conversion, but	will fall back to alternate
	   strings provided by the clients if conversion from utf-8 fails due
	   to characters which have no direct correspondence in	the target
	   charecter set. Some clients however neglect to set non utf-8
	   properties correctly	in which case this option may help.

       BusyCursor [Option bool], ...
	   This	command	controls the cursor during the execution of certain
	   commands. Option can	be DynamicMenu,	ModuleSynchronous, Read, Wait
	   or *. An option must	be followed by a boolean argument bool.	You
	   can use commas to separate individual options. If you set an	option
	   to "True", then when	the corresponding command is run, fvwm
	   displays the	cursor of the WAIT context of the CursorStyle command.
	   "False" forces to not display the cursor. The default is:

	       BusyCursor DynamicMenu False, ModuleSynchronous False, \
	       Read False, Wait	False

	   The * option	refers to all available	options.

	   The Read option controls the	PipeRead command.

	   The DynamicMenu option affects the DynamicPopupAction and
	   MissingSubmenuFunction options of the AddToMenu command. If this
	   option is set to "False", then the busy cursor is not displayed
	   during a dynamic menu command even if this command is a Read	or
	   PipeRead command and	the Read option	is set to "True".

	   The ModuleSynchronous option	affects	the ModuleSynchronous command.
	   If this option is set to "False", then the busy cursor is not
	   displayed while fvwm	waits for a module started by
	   ModuleSynchronous to	complete its startup.

	   The Wait option affects only	the root cursor. During	a wait pause
	   the root cursor is replaced by the busy cursor and fvwm is still
	   fully functional (you can escape from the pause, see	the EscapeFunc
	   command). If	you want to use	this option and	if you do not use the
	   default root	cursor,	you must set your root cursor with the
	   CursorStyle command.

       ClickTime [delay]
	   Specifies the maximum delay in milliseconds between a button	press
	   and a button	release	for the	Function command to consider the
	   action a mouse click. The default delay is 150 milliseconds.
	   Omitting the	delay value resets the ClickTime to the	default.

	   ClickTime also specifies the	delay between two clicks to be
	   interpreted as a double-click.

       ColorLimit limit
	   This	command	is obsolete. See the --color-limit option to fvwm.

       ColormapFocus FollowsMouse | FollowsFocus
	   By default, fvwm installs the colormap of the window	that the
	   cursor is in. If you	use

	       ColormapFocus FollowsFocus

	   then	the installed colormap is the one for the window that
	   currently has the keyboard focus.

       CursorStyle context [num	| name | None |	Tiny | file [x y] [fg bg]]
	   Defines a new cursor	for the	specified context. Note	that this
	   command can not control the shapes an applications uses, for
	   example, to indicate	that it	is busy. The various contexts are:

	   POSITION (top_left_corner)
	       used when initially placing windows

	   TITLE (top_left_arrow)
	       used in a window	title-bar

	   DEFAULT (top_left_arrow)
	       used in windows that do not set their cursor

	   SYS (hand2)
	       used in one of the title-bar buttons

	   MOVE	(fleur)
	       used when moving	or resizing windows

	   RESIZE (sizing)
	       used when moving	or resizing windows

	   WAIT	(watch)
	       used during certain fvwm	commands (see BusyCursor for details)

	   MENU	(top_left_arrow)
	       used in menus

	   SELECT (crosshair)
	       used when the user is required to select	a window

	   DESTROY (pirate)
	       used for	Destroy, Close,	and Delete commands

	   TOP (top_side)
	       used in the top side-bar	of a window

	   RIGHT (right_side)
	       used in the right side-bar of a window

	   BOTTOM (bottom_side)
	       used in the bottom side-bar of a	window

	   LEFT	(left_side)
	       used in the left	side-bar of a window

	   TOP_LEFT (top_left_corner)
	       used in the top left corner of a	window

	   TOP_RIGHT (top_right_corner)
	       used in the top right corner of a window

	   BOTTOM_LEFT (bottom_left_corner)
	       used in the bottom left corner of a window

	   BOTTOM_RIGHT	(bottom_right_corner)
	       used in the bottom right	corner of a window

	   TOP_EDGE (top_side)
	       used at the top edge of the screen

	   RIGHT_EDGE (right_side)
	       used at the right edge of the screen

	   BOTTOM_EDGE (bottom_side)
	       used at the bottom edge of the screen

	   LEFT_EDGE (left_side)
	       used at the left	edge of	the screen

	   ROOT	(left_ptr)
	       used as the root	cursor

       The defaults are	shown in parentheses above. If you ever	want to
       restore the default cursor for a	specific context you can omit the
       second argument.

       The second argument is either the numeric value of the cursor as
       defined in the include file X11/cursorfont.h or its name	(without the
       XC_ prefix). Alternatively, the xpm file	name may be specified. The
       name can	also be	None (no cursor) or Tiny (a single pixel as the
       cursor).

	   # make the kill cursor be XC_gumby (both forms work):
	   CursorStyle DESTROY 56
	   CursorStyle DESTROY gumby

       Alternatively, the cursor can be	loaded from an (XPM, PNG or SVG) image
       file. If	fvwm is	compiled with Xcursor support, full ARGB is used, and
       (possibly animated) cursor files	made with the xcursorgen program can
       be loaded. Otherwise the	cursor is converted to monochrome.

       The optional x and y arguments (following a file	argument) specifies
       the hot-spot coordinate with 0 0	as the top left	corner of the image.
       Coordinates within the image boundary are valid and overrides any
       hot-spot	defined	in the (XPM/Xcursor) image file. An invalid or
       undefined hot-spot is placed in the center of the image.

	   CursorStyle ROOT cursor_image.png 0 0

       The optional fg and bg arguments	specify	the foreground and background
       colors for the cursor, defaulting to black and white (reverse video
       compared	to the actual bitmap). These colors are	only used with
       monochrome cursors. Otherwise they are silently ignored.

	   CursorStyle ROOT nice_arrow.xpm yellow black

       DefaultFont [fontname]
	   DefaultFont sets the	default	font to	font fontname. The default
	   font	is used	by fvwm	whenever no other font has been	specified. To
	   reset the default font to the built-in default, omit	the argument.
	   The default font is used for	menus, window titles, icon titles as
	   well	as the geometry	feedback windows during	a move or resize
	   operation. To override the default font in a	specific context, use
	   the Style * Font, Style * IconFont, or MenuStyle commands.

       DefaultIcon filename
	   Sets	the default icon which is used if a window has neither an
	   client-supplied icon	nor an icon supplied via the Icon option of
	   the Style command.

       DefaultLayers bottom put	top
	   Changes the layers that are used for	the StaysOnBottom, StaysPut,
	   StaysOnTop Style options. Initially,	the layers 2, 4	and 6 are
	   used.

       Deschedule [command_id]
	   Removes all commands	that were scheduled with the id	command_id
	   with	the Schedule command from the list of commands to be executed
	   unless they were already executed. If the command_id	is omitted,
	   the value of	the variable $[schedule.last] is used as the id.

       Emulate Fvwm | Mwm | Win
	   This	command	is a catch all for how miscellaneous things are	done
	   by fvwm. Right now this command affects where the move/resize
	   feedback window appears and how window placement is aborted.	To
	   have	more Mwm- or Win-like behavior you can call Emulate with Mwm
	   or Win as its argument. With	Mwm resize and move feedback windows
	   are in the center of	the screen, instead of the upper left corner.
	   This	also affects how manual	placement is aborted. See the
	   ManualPlacement description.

       EscapeFunc
	   By default the key sequence Ctrl-Alt-Escape allows for escaping
	   from	a Wait pause and from a	locked ModuleSynchronous command. The
	   EscapeFunc command used with	the Key	command	allows for configuring
	   this	key sequence. An example:

	       Key Escape A MC -
	       Key Escape A  S EscapeFunc

	   replaces the	Ctrl-Alt-Escape	 key sequence with Shift-Escape	for
	   aborting a Wait pause and ModuleSynchronous command.	EscapeFunc
	   used	outside	the Key	command	does nothing.

       FakeClick [command value] ...
	   This	command	is mainly intended for debugging fvwm and no
	   guarantees are made that it works for you. FakeClick	can simulate
	   mouse button	press and release events and pass them to fvwm or the
	   applications. The parameters	are a list of commands which consist
	   of pairs of command tokens and integer values, The press and
	   release commands are	followed by the	appropriate mouse button
	   number and generate a button	press or release event on the window
	   below the pointer. The wait commands	pauses fvwm for	the given
	   number of milliseconds. The modifiers command simulates pressing or
	   releasing modifier keys. The	values 1 to 5 are mapped to Mod1 to
	   Mod5	while 6, 7 and 8 are mapped to Shift, Lock and Control.	The
	   modifier is set for any further button events. To release a
	   modifier key, use the corresponding negative	number.	The depth
	   command determines to which window the button events	are sent. With
	   a depth of 1, all events go to the root window, regardless of the
	   pointer's position. With 2, the event is passed to the top level
	   window under	the pointer which is usually the frame window. With 3,
	   events go to	the client window. Higher numbers go to	successive sub
	   windows. Zero (0) goes to the smallest window that contains the
	   pointer. Note that events propagate upward.

	       FakeClick depth 2 press 1 wait 250 release 1

	   This	simulates a click with button 1	in the parent window (depth 2)
	   with	a delay	of 250 milliseconds between the	press and the release.
	   Note: all command names can be abbreviated with their first letter.

       FakeKeypress [command value] ...
	   This	command	is mainly intended for debugging fvwm and no
	   guarantees are made that it works for you. FakeKeypress can
	   simulate key	press and release events and pass them to fvwm or
	   applications. The parameters	are a list of commands which consist
	   of pairs of command tokens and values. The press and	release
	   commands are	followed by a key name.	The key	name is	a standard X11
	   key name as defined in /usr/include/X11/keysymdef.h,	(without the
	   XK_ prefix),	or the keysym database /usr/X11R6/lib/X11/XKeysymDB.
	   The wait, modifiers and depth commands are the same as those	used
	   by FakeClick.

	   Save	all GVim sessions with:	"Esc:w\n"

	       All (gvim) FakeKeypress press Escape \
				 press colon \
				 press w \
				 press Return

	   Save	& exit all GVim	sessions with: "Esc:wq\n"

	       All (gvim) FakeKeypress press Escape \
				 press colon \
				 press w \
				 press q \
				 press Return

	   Send	A to a specific	window:

	       WindowId	0x3800002 FakeKeypress press A

	   Note: all command names can be abbreviated with their first letter.

       HilightColor textcolor backgroundcolor
	   This	command	is obsoleted by	the Style options HilightFore and
	   HilightBack.	Please use

	       Style * HilightFore textcolor, HilightBack backgroundcolor

	   instead.

       HilightColorset [num]
	   This	command	is obsoleted by	the Style option HilightColorset.
	   Please use

	       Style * HilightColorset num

	   instead.

       IconFont	[fontname]
	   This	command	is obsoleted by	the Style option IconFont. Please use

	       Style * IconFont	fontname

	   instead.

       IconPath	path
	   This	command	is obsolete. Please use	ImagePath instead.

       ImagePath path
	   Specifies a colon separated list of directories in which to search
	   for images (both monochrome and pixmap). To find an image given by
	   a relative pathname,	fvwm looks into	each directory listed in turn,
	   and uses the	first file found.

	   If a	directory is given in the form "/some/dir;.ext", this means
	   all images in this directory	have the extension ".ext" that should
	   be forced. The original image name (that may	contain	another
	   extension or	no extension at	all) is	not probed, instead ".ext" is
	   added or replaces the original extension. This is useful, for
	   example, if a user has some image directories with ".xpm" images
	   and other image directories with the	same names, but	".png" images.

	   The path may	contain	environment variables such as $HOME (or
	   ${HOME}). Further, a	'+' in the path	is expanded to the previous
	   value of the	path, allowing appending or prepending to the path
	   easily.

	   For example:

	       ImagePath $HOME/icons:+:/usr/include/X11/bitmaps

       LocalePath path
	   Specifies a colon separated list of "locale path" in	which to
	   search for string translations. A locale path is constituted	by a
	   directory path and a	text domain separated by a semicolon (';'). As
	   an example the default locale path is:

	       /install_prefix/share/locale;fvwm

	   where install_prefix	is the fvwm installation directory. With such
	   a locale path translations are searched for in

	       /install_prefix/share/locale/lang/LC_MESSAGES/fvwm.mo

	   where lang depends on the locale. If	no directory is	given the
	   default directory path is assumed. If no text domain	is given, fvwm
	   is assumed. Without argument	the default locale path	is restored.

	   As for the ImagePath	command, path may contain environment
	   variables and a '+' to append or prepend the	locale path easily.

	   For example,	the fvwm-themes	package	uses

	       LocalePath ";fvwm-themes:+"

	   to add locale catalogs.

	   The default fvwm catalog contains a few strings used	by the fvwm
	   executable itself (Desk and Geometry) and strings used in some
	   default configuration files and FvwmForm configuration. You can
	   take	a look at the po/ subdirectory of the fvwm source to get the
	   list	of the strings with a possible translation in various
	   languages. At present, very few languages are supported.

	   The main use	of locale catalogs is via the "$[gt.string]"
	   parameter:

	       DestroyMenu MenuFvwmWindowOps
	       AddToMenu   MenuFvwmWindowOps "$[gt.Window Ops]"	Title
	       + "$[gt.&Move]"		    Move
	       + "$[gt.&Resize]"	    Resize
	       + "$[gt.R&aise]"		    Raise
	       + "$[gt.&Lower]"		    Lower
	       + "$[gt.(De)&Iconify]"	    Iconify
	       + "$[gt.(Un)&Stick]"	    Stick
	       + "$[gt.(Un)Ma&ximize]"	    Maximize
	       + "" Nop
	       + "$[gt.&Close]"		    Close
	       + "$[gt.&Destroy]"	    Destroy

	   gives a menu	in the locale languages	if translations	are available.

	   Note	that the FvwmScript module has a set of	special	instructions
	   for string translation. It is out of	the scope of this discussion
	   to explain how to build locale catalogs. Please refer to the	GNU
	   gettext documentation.

       PixmapPath path
	   This	command	is obsolete. Please use	ImagePath instead.

       PrintInfo subject [verbose]
	   Print information on	subject	to debug log file, which defaults to
	   $HOME/.fvwm/fvwm3-output.log	. Environment variables	$FVWM_USERDIR
	   and $FVWM3_LOGFILE can alter	this default. For this logfile to be
	   written, either fvwm3 has to	be started with	-v option or SIGUSR2
	   signal can be used to toggle	opening/closing	debug log file.

	   An optional integer argument	to debug log file, which defaults to
	   $HOME/.fvwm/fvwm3-output.log	. Environment variables	$FVWM_USERDIR
	   and $FVWM3_LOGFILE can alter	this default. For this logfile to be
	   written, either fvwm3 has to	be started with	-v option or SIGUSR2
	   signal can be used to toggle	opening/closing	debug log file.

	   An optional integer argument	verbose	defines	the level of
	   information which is	given. The current valid subjects are:

	   Colors which	prints information about the colors used by fvwm. This
	   useful on screens which can only display 256	(or less) colors at
	   once. If verbose is one or greater the palette used by fvwm is
	   printed. If you have	a limited color	palette, and you run out of
	   colors, this	command	might be helpful.

	   ImageCache which prints information about the images	loaded by
	   fvwm. If verbose is one or greater all images in the	cache will be
	   listed together with	their respective reuse.

	   Locale which	prints information on your locale and the fonts	that
	   fvwm	used. verbose can be 1 or 2.

	   nls which prints information	on the locale catalogs that fvwm used

	   style which prints information on fvwm styles. verbose can be 1.

	   bindings which prints information on	all the	bindings fvwm has: key
	   and mouse bindings. verbose has no effect with this option.

	   infostore which prints information on all entries in	the infostore,
	   listing the key and its value. verbose has no effect	with this
	   option.

       Schedule	[Periodic] delay_ms [command_id] command
		The command is executed	after about delay_ms milliseconds.
	   This	may be useful in some tricky setups. The command is executed
	   in the same context window as the Schedule command. An optional
	   integer argument command_id may be given in decimal,	hexadecimal or
	   octal format. This id can be	used with the Deschedule command to
	   remove the scheduled	command	before it is executed. If no id	is
	   given, fvwm uses negative id	numbers, starting with -1 and
	   decreasing by one with each use of the Schedule command. Note that
	   the Schedule	command	and its	arguments undergo the usual command
	   line	expansion, and,	when command is	finally	executed, it is
	   expanded again. It may therefore be necessary to quote the parts of
	   the command that must not be	expanded twice.

	   Note: A window's id as it is	returned with $[w.id] can be used as
	   the command_id. Example:

	       Current Schedule	1000 $[w.id] WindowShade

	   The Schedule	command	also supports the optional keyword Periodic
	   which indicates that	the command should be executed every delay_ms.
	   Example:

	       Schedule	Periodic 10000 PipeRead	'[ -N "$MAIL" ]	&& echo	\
		Echo You have mail'

	   Use the Deschedule command to stop periodic commands.

       State state [bool]
	   Sets, clears	or toggles one of the 32 user defined states which are
	   associated with each	window.	The state is a number ranging from 0
	   to 31. The states have no meaning in	fvwm, but they can be checked
	   in conditional commands like	Next with the State condition. The
	   optional argument bool is a boolean argument. "True"	sets the given
	   state, while	"False"	clears it. Using "toggle" switches to the
	   opposite state. If the bool argument	is not given, the state	is
	   toggled.

       WindowFont [fontname]
	   This	command	is obsoleted by	the Style option Font. Please use

	       Style * Font fontname

	   instead.

       WindowList [(conditions)] [position] [options] [double-click-action]
	   Generates a pop-up menu (and	pops it	up) in which the title and
	   geometry of each of the windows currently on	the desktop are	shown.

	   The format of the geometry part is: desk(layer): x-geometry sticky,
	   where desk and layer	are the	corresponding numbers and sticky is
	   empty or a capital S. The geometry of iconified windows is shown in
	   parentheses.	Selecting an item from the window list pop-up menu
	   causes the interpreted function "WindowListFunc" to be run with the
	   window id of	that window passed in as $0. The default
	   "WindowListFunc" looks like this:

	       AddToFunc WindowListFunc
	       + I Iconify off
	       + I FlipFocus
	       + I Raise
	       + I WarpToWindow	5p 5p

	   You can destroy the built-in	"WindowListFunc" and create your own
	   if these defaults do	not suit you.

	   The window list menu	uses the "WindowList" menu style if it is
	   defined (see	MenuStyle command). Otherwise the default menu style
	   is used. To switch back to the default menu style, issue the
	   command

	       DestroyMenuStyle	WindowList

	   Example:

	       MenuStyle WindowList SelectOnRelease Meta_L

	   The conditions can be used to exclude certain windows from the
	   window list.	Please refer to	the Current command for	details. Only
	   windows that	match the given	conditions are displayed in the	window
	   list. The options below work	vice versa: windows that would
	   otherwise not be included in	the window list	can be selected	with
	   them. The conditions	always override	the options.

	   The position	arguments are the same as for Menu. The	command
	   double-click-action is invoked if the user double-clicks (or	hits
	   the key rapidly twice if the	menu is	bound to a key)	when bringing
	   the window list. The	double-click-action must be quoted if it
	   consists of more than one word.

	   The double-click-action is useful to	define a default window	if you
	   have	bound the window list to a key (or button) like	this:

	       # Here we call an existing function, but
	       # it may	be different.  See the default
	       # WindowListFunc	definition earlier in this
	       # man page.
	       AddToFunc SwitchToWindow
	       + I WindowListFunc

	       Key Tab A M WindowList "Prev SwitchToWindow"

	   Hitting Alt-Tab once	it brings up the window	list, if you hit it
	   twice the focus is flipped between the current and the last focused
	   window. With	the proper SelectOnRelease menu	style (see example
	   above) a window is selected as soon as you release the Alt key.

	   The options passed to WindowList are	separated by commas and	can be
	   Geometry / NoGeometry / NoGeometryWithInfo, NoDeskNum, NoLayer,
	   NoNumInDeskTitle, NoCurrentDeskTitle, MaxLabelWidth width,
	   TitleForAllDesks, Function funcname,	Desk desknum, CurrentDesk,
	   NoIcons / Icons / OnlyIcons,	NoNormal / Normal / OnlyNormal,
	   NoSticky / Sticky / OnlySticky, NoStickyAcrossPages /
	   StickyAcrossPages / OnlyStickyAcrossPages, NoStickyAcrossDesks /
	   StickyAcrossDesks / OnlyStickyAcrossDesks, NoOnTop /	OnTop /
	   OnlyOnTop, NoOnBottom / OnBottom / OnlyOnBottom, Layer m [n],
	   UseSkipList / OnlySkipList, NoDeskSort, ReverseOrder, CurrentAtEnd,
	   IconifiedAtEnd, UseIconName,	Alphabetic / NotAlphabetic,
	   SortByResource, SortByClass,	NoHotkeys, SelectOnRelease.

	   (Note - normal means	not iconic, sticky, or on top)

	   With	the SortByResource option windows are alphabetically sorted
	   first by resource class, then by resource name and then by window
	   name	(or icon name if UseIconName is	specified). ReverseOrder also
	   works in the	expected manner.

	   With	the SortByClass	option windows are sorted just like with
	   SortByResource, but the resource name is not	taken into account,
	   only	the resource class.

	   The SelectOnRelease option works exactly like the MenuStyle option
	   with	the same name, but overrides the option	given in a menu	style.
	   By default, this option is set to the left

	   key.	To switch it off, use SelectOnRelease without a	key name.

	   If you pass in a function via Function funcname, it is called
	   within a window context of the selected window:

	       AddToFunc IFunc I Iconify toggle
	       WindowList Function IFunc, NoSticky, CurrentDesk, NoIcons

	   If you use the Layer	m [n] option, only windows in layers between m
	   and n are displayed.	n defaults to m. With the ReverseOrder option
	   the order of	the windows in the list	is reversed.

	   With	the CurrentAtEnd option	the currently focused window (if any)
	   is shown at the bottom of the list. This is mostly intended for
	   simulating the Alt-Tab behavior in another GUI.

	   IconifiedAtEnd makes	iconified windows be moved to the end of the
	   list. This is also from another GUI.

	   The NoGeometry option causes	fvwm to	not display the	geometries as
	   well	as the separators which	indicate the different desktops.
	   NoGeometryWithInfo removes the geometries, but keep the desktop
	   information and indicates iconic windows. NoDeskNum causes fvwm to
	   not display the desktop number in the geometry or before the	window
	   title with the NoGeometryWithInfo option. NoNumInDeskTitle is only
	   useful if a desktop name is defined with the	DesktopName command.
	   It causes fvwm to not display the desktop number before the desktop
	   name. By default, the WindowList menu have a	title which indicates
	   the current desk or the selected desktop if the Desk	condition is
	   used. The NoCurrentDeskTitle	option removes this title.
	   TitleForAllDesks causes fvwm	to add a menu title with the desk name
	   and/or number before	each group of windows on the same desk.	With
	   NoLayer, the	layer of the window is not displayed. The options
	   ShowPage, ShowPageX and ShowPageY enable displaying the page	of the
	   window rounded multiples of the display size. With ShowScreen, the
	   window's screen name	is displayed.

	   The MaxLabelWidth option takes the number of	characters to print as
	   its argument. No more than that many	characters of the window name
	   are visible.

	   If you wanted to use	the WindowList as an icon manager, you could
	   invoke the following:

	       WindowList OnlyIcons, Sticky, OnTop, Geometry

	   (Note - the Only options essentially	wipe out all other ones... but
	   the OnlyListSkip option which just causes WindowList	to only
	   consider the	windows	with WindowListSkip style.)

       XSync
	   When	XSync is called, the X function	with the same name is used to
	   send	all pending X requests to the server. This command is intended
	   for debugging only.

       XSynchronize [bool]
	   The XSynchronize command controls whether X requests	are sent to
	   the X server	immediately or not. Normally, requests are sent	in
	   larger batches to save unnecessary communication. To	send requests
	   immediately,	use "True" as the argument, to disable this use
	   "False" or to toggle	between	both methods use "Toggle" or omit the
	   bool	argument. Fvwm defaults	to synchronized	requests when started
	   with	the --debug option. This command is intended for debugging
	   only.

       +
	   Used	to continue adding to the last specified decor,	function or
	   menu. See the discussion for	AddToDecor, AddToFunc, and AddToMenu.

   Window Movement and Placement
       AnimatedMove x y	[Warp]
	   Move	a window in an animated	fashion. Similar to Move command. The
	   options are the same, except	they are required, since it doesn't
	   make	sense to have a	user move the window interactively and
	   animatedly. If the optional argument	Warp is	specified the pointer
	   is warped with the window.

       GeometryWindow Hide | Show | Colorset n | Position x y |	Screen S
	   Configures the position or size window that is usually shown	when a
	   window is moved or resized interactively. This can be used to hide,
	   show, change	the colorset, change the location, or change the
	   screen of the geometry window. Multiple options can be set at once
	   separated by	spaces.	Details	of each	option are described below.

	      GeometryWindow Hide [Never | Move	| Resize]

	   Hides or switches off the geometry window. If the optional
	   parameters Move or Resize are given,	it will	only hide the geometry
	   window during the respective	operation. The parameter Never will
	   switch the geometry back on again (equivalent to Show).

	      GeometryWindow Show [Never | Move	| Resize]

	   Shows or switches on	the geometry window (equivalent	to Hide
	   Never). If the optional parameters Move or Resize are given,	it
	   will	only show the geometry window during the respective operation.
	   The parameter Never will switch the geometry	window off (equivalent
	   to Hide).

	      GeometryWindow Colorset cset

	   Sets	colorset of the	gometry	window to cset.	Use the	literal	option
	   default for cset to use the default colorset.

	      GeometryWindow Position [+|-]x[p]	[+|-]y[p]

	   Configures the position the geometry	window appears.	x and y	are
	   the relative	coordinates as a percentage of the screen size.	If a
	   leading '-' is provided the coordinates are computed	from the
	   left/bottom of the screen respectively. If the coordinates are
	   appended with a 'p',	they are interpreted as	the number of pixels
	   from	the respective screen edge. If no position arguments are
	   given, the geometry window's	position will return to	its default
	   state of the	upper left corner or the center	if emulating MWM.

	      GeometryWindow Screen RANDRNAME

	   Configure which screen the geometry window is shown on. By default
	   the geometry	window is shown	on the current screen. If a valid
	   RANDRNAME is	provided, the geometry window will always be shown on
	   that	screen.	Use current as the RANDRNAME to	return the default.

	   Examples:

	       # Position the geometry window in the center of the screen
	       GeometryWindow Position 50 50
	       # Position the geometry window next to the RightPanel
	       GeometryWindow Position -120p 0
	       # Use colorset 2	for the	geometry window
	       GeometryWindow Colorset 2
	       # Only show the geometry	window on the primary monitor
	       GeometryWindow Screen $[monitor.primary]
	       # Hide the geometry window
	       GeometryWindow Hide

       HideGeometryWindow [Never | Move	| Resize]
	   This	command	has been depreciated and is now	obsolete. Use
	   GeometryWindow Hide instead.

       Layer [arg1 arg2] | [default]
	   Puts	the current window in a	new layer. If arg1 is non zero then
	   the next layer is the current layer number plus arg1. If arg1 is
	   zero	then the new layer is arg2.

	   As a	special	case, default puts the window in its default layer,
	   i.e.	the layer it was initially in. The same	happens	if no or
	   invalid arguments are specified.

       Lower
	   Allows the user to lower a window. Note that	this lowers a window
	   only	in its layer. To bring a window	to the absolute	bottom,	use

	       AddToFunc lower-to-bottom
		+ I Layer 0 0
		+ I Lower

       Move [options]
	   Allows the user to move a window. If	called from somewhere in a
	   window or its border, then that window is moved. If called from the
	   root	window,	then the user is allowed to select the target
	   window.   Move can be called	with various options to	either start
	   an interactive move,	specify	the position to	move, or a direction.

	   Move	without	options	starts an interactive move. The	window may
	   snap	to other windows and screen boundaries,	configurable with the
	   SnapAttraction style. Moving	a window to the	edge of	the screen can
	   be used to drag the window to other pages. (See EdgeScroll, and the
	   EdgeMoveDelay style for more	information.)

	   Holding down	Alt disables snapping and allows one to	switch pages
	   without any delay. Interactive movement can be aborted with the
	   Escape key or any mouse button not set to place the window. By
	   default mouse button	2 is set to cancel the move operation. To
	   change this you may use the Mouse command with special context 'P'
	   for Placement.

	   The window condition	PlacedByButton can be used to check if a
	   specific button was pressed to place	the window (see	Current
	   command).

	   If the single argument pointer is given, the	top left corner	of the
	   window is moved to the pointer position before starting an
	   interactive move; this is mainly intended for internal use by
	   modules like	FvwmPager.

	      Move pointer

	   To move a window in a given direction until it hits another window,
	   icon, or screen boundary use:

	      Move shuffle [Warp] [ewmhiwa] [snap type]	[layers	min max]
	      direction(s)

	   The direction can be	North/N/Up/U, East/E/Right/R, South/S/Down/D,
	   or West/W/Left/L. The window	will move in the given direction until
	   it hits another window or the EwmhBaseStruts/screen boundary. When
	   a window is at the EwmhBaseStruts/screen boundary, it will move to
	   the next monitor in the given direction, if it exists. If a window
	   is outside of the current working area (partly off screen), it will
	   move	to the edge of the working area. Windows will honor the	EWMH
	   working area	and stop at the	EwmhBaseStruts unless the literal
	   option ewmhiwa is given. If multiple	direction(s) are given,	the
	   window will move the	directions in the order	of the sequence
	   stated.

	   The literal option Warp will	warp the mouse pointer to the window.
	   If the literal option snap followed by a snap type of windows,
	   icons, or same is given, then the window will only stop if it hits
	   another window, icon, or the	same type. If the literal option
	   layers followed by a	min layer and max layer	is given, then only
	   windows on the layers between min and max layers will stop the
	   window. For example:

	       # Shuffle the window Right.
	       Move shuffle Right
	       # Shuffle Up, only consider windows on Layer 3.
	       Move shuffle layers 3 3 Up
	       # Shuffle Left then Up
	       Move shuffle Left Up
	       # Shuffle Up then Left (may not be same position	as above)
	       Move shuffle Up Left

	   Move	can be used to moved a window to a specified position:

	      Move [screen S] [w | m | v]x[p | w] [w | m | v]y[p | w]
	      [Warp] [ewmhiwa]

	   This	will move the window to	the x and y position (see below). By
	   default, the	EWMH working area is honoured. If he trailing option
	   ewmhiwa is given, then the window position will ignore the working
	   area	(such as ignoring any values set via EwmhBaseStruts). If the
	   option Warp is given	then the pointer is warped to the window.

	   If the literal option screen	followed by a RandR screen name	S is
	   specified, the coordinates are interpreted as relative to the given
	   screen. The width and height	of the screen are used for the
	   calculations	instead	of the display dimensions. The screen is
	   interpreted as in the MoveToScreen command.

	   The positional arguments x and y can	specify	an absolute or
	   relative position from either the left/top or right/bottom of the
	   screen. By default, the numeric value given is interpreted as a
	   percentage of the screen width/height, but a	trailing 'p' changes
	   the interpretation to mean pixels, while a trailing 'w' means
	   percent of the window width/height. To move the window relative to
	   its current position, add the 'w' (for "window") prefix before the
	   x and/or y value. To	move the window	to a position relative to the
	   current location of the pointer, add	the 'm'	(for "mouse") prefix.
	   To move the window relative to the virtual screen coordinates, add
	   the 'v' (for	"virtual screen") prefix. This is mostly for internal
	   use with FvwmPager, but can be used to give exact coordinates on
	   the virtual screen and is best used with the	'p' suffix. To leave
	   either coordinate unchanged,	"keep" can be specified	in place of x
	   or y.

	   For advanced	uses, the arguments x and y can	be used	multiple
	   times, but without the prefix 'm' or	'w'. (See complex examples
	   below).

	   Simple Examples:

	       # Interactive move
	       Mouse 1 T A Move
	       # Move window to	top left is at (10%,10%)
	       Mouse 2 T A Move	10 10
	       # Move top left to (10pixels,10pixels)
	       Mouse 3 T A Move	10p 10p

	   More	complex	examples (these	can be bound as	actions	to keystrokes,
	   etc.; only the command is shown, though):

	       # Move window so	bottom right is	at bottom
	       # right of screen
	       Move -0 -0

	       # Move window so	top left corner	is 10 pixels
	       # off the top left screen edge
	       Move +-10 +-10

	       # Move window 5%	to the right, and to the
	       # middle	vertically
	       Move w+5	50

	       # Move window up	10 pixels, and so left edge
	       # is at x=40 pixels
	       Move 40p	w-10p

	       # Move window to	the mouse pointer location
	       Move m+0	m+0

	       # Move window to	center of screen (50% of screen
	       # position minus	50% of widow size).
	       Move 50-50w 50-50w

	   See also the	AnimatedMove command.

       MoveToDesk [prev	| arg1 [arg2] [min max]]
	   Moves the selected window to	another	desktop. The arguments are the
	   same	as for the GotoDesk command. Without any arguments, the	window
	   is moved to the current desk. MoveToDesk is a replacement for the
	   obsolete WindowsDesk	command, which can no longer be	used.

       MoveThreshold [pixels]
	   When	the user presses a mouse button	upon an	object fvwm waits to
	   see if the action is	a click	or a drag. If the mouse	moves by more
	   than	pixels pixels it is assumed to be a drag.

	   Previous versions of	fvwm hardwired pixels to 3, which is now the
	   default value. If pixels is negative	or omitted the default value
	   (which might	be increased when 16000x9000 pixel displays become
	   affordable) is restored.

       MoveToPage [options] [x[p | w] y[p | w]]	| [prev]
	   Moves the selected window to	another	page (x,y). The	upper left
	   page	is (0,0), the upper right is (M,0), where M is one less	than
	   the current number of horizontal pages specified in the DesktopSize
	   command. Similarly the lower	left page is (0,N), and	the lower
	   right page is (M,N).	Negative page numbers refer to pages from the
	   rightmost/lowest page. If x and y are not given, the	window is
	   moved to the	current	page (a	window that has	the focus but is
	   off-screen can be retrieved with this). Moving windows to a page
	   relative to the current page	can be achieved	by adding a trailing
	   'p' after any or both numerical arguments. To move the window
	   relative to its current location, add a trailing 'w'. To move a
	   window to the previous page use prev	as the single argument.

	   Windows are usually not moved beyond	desk boundaries.

	   Possible options are	wrapx and wrapy	to wrap	around the x or	y
	   coordinate when the window is moved beyond the border of the
	   desktop. For	example, with wrapx, when the window moves past	the
	   right edge of the desktop, it reappears on the left edge. The
	   options nodesklimitx	and nodesklimity allow moving windows beyond
	   the desk boundaries in x and	y direction (disabling the wrapx and
	   wrapy options).

	   Examples:

	       # Move window to	page (2,3)
	       MoveToPage 2 3

	       # Move window to	lowest and rightmost page
	       MoveToPage -1 -1

	       # Move window to	last page visited
	       MoveToPage prev

	       # Move window two pages to the right and	one
	       # page up, wrap at desk boundaries
	       MoveToPage wrapx	wrapy +2p -1p

       MoveToScreen [screen]
	   Moves the selected window to	another	screen.	The screen argument
	   must	be a valid RandR name.

       OpaqueMoveSize [percentage]
	   Tells fvwm the maximum size window with which opaque	window
	   movement should be used. The	percentage is percent of the total
	   screen area (may be greater than 100). With

	       OpaqueMoveSize 0

	   all windows are moved using the traditional rubber-band outline.
	   With

	       OpaqueMoveSize unlimited

	   or if a negative percentage is given	all windows are	moved as solid
	   windows. The	default	is

	       OpaqueMoveSize 5

	   which allows	small windows to be moved in an	opaque manner but
	   large windows are moved as rubber-bands. If percentage is omitted
	   or invalid the default value	is set.	To resize windows in an	opaque
	   manner you can use the ResizeOpaque style. See the Style command.

       PlaceAgain [Anim] [Icon]
	   Causes the current window's position	to be re-computed using	the
	   initial window placement logic. The window is moved to where	it
	   would have been if it were a	new window that	had just appeared.
	   Most	useful with Smart or Clever (ReallySmart) placement. With the
	   optional argument Anim an animated move is used to place the	window
	   in its new position.	With the additional option Icon, the icon is
	   placed again	instead.

       Raise
	   Allows the user to raise a window. Note that	this raises a window
	   only	in its layer. To bring a window	to the absolute	top, use

	       AddToFunc raise-to-top
		+ I Layer 0 ontop
		+ I Raise

	   where ontop is the highest layer used in your setup.

       RaiseLower
	   Alternately raises and lowers a window. The window is raised	if it
	   is obscured by any window (except for its own transients when
	   RaiseTransient style	is used; see the Style command)	otherwise it
	   is lowered.

       Resize [[frame] [direction dir] [warptoborder automatic]
       [fixeddirection]	width[p	| c | wa | da] height[p	| c]]
	   Allows for resizing a window. If called from	somewhere in a window
	   or its border, then that window is resized. If called from the root
	   window then the user	is allowed to select the target	window.

	   Resize without options starts an interactive	resize.

	   If the EdgeResizeDelay style	is set or the Alt key is held down,
	   the window can be resized across the	edge of	the screen.

	   The operation can be	aborted	with the Escape	key or by pressing any
	   mouse button	(except	button 1 which confirms	it).

	   If the optional arguments width and height are provided, then the
	   window is resized so	that its dimensions are	width by height. The
	   units of width and height are percent-of-screen, unless a letter
	   'p' is appended to one or both coordinates, in which	case the
	   location is specified in pixels. With a 'c' suffix the unit defined
	   by the client application (hence the	c) is used. With the suffix
	   'wa'	the value is a percentage of the width or height size of the
	   EWMH	working	area, and with the suffix 'da' it is a percentage of
	   the width or	height of the EWMH dynamic working area. So you	can
	   say

	       Resize 80c 24c

	   to make a terminal window just big enough for 80x24 characters.

	   If the width	or height is prefixed with the letter 'w' the size is
	   not taken as	an absolute value but added to the current size	of the
	   window. Example:

	       # Enlarge window	by one line
	       Resize keep w+1c

	   Both, width and height can be negative. In this case	the new	size
	   is the screen size minus the	given value. If	either value is
	   "keep", the corresponding dimension of the window is	left
	   untouched. The new size is the size of the client window, thus

	       Resize 100 100

	   may make the	window bigger than the screen. To base the new size on
	   the size of the whole fvwm window, add the frame option after the
	   command. The	options	fixeddirection,	direction and warptoborder are
	   only	used in	interactive move operations. With fixeddirection the
	   same	border is moved	even if	the pointer moves past the opposite
	   border. The direction option	must be	followed by a direction	name
	   such	as "NorthWest",	"South"	or "East" (you get the idea). Resizing
	   is started immediately, even	if the pointer is not on a border. If
	   the special option automatic	is given as a direction	argument, then
	   the direction to resize is calculated based on the position of the
	   pointer in the window. If the pointer is in the middle of the
	   window, then	no direction is	calculated. The	warptoborder option
	   can be used to warp the pointer to the direction indicated. As with
	   the automatic option	for direction, the border to warp to is
	   calculated based on the pointer's proximity to a given border.
	   Also, if resizing is	started	by clicking on the window border, the
	   pointer is warped to	the outer edge of the border.

	       AddToFunc ResizeSE I Resize Direction SE
	       Mouse 3 A M ResizeSE

       Resize [bottomright | br	x y]
	   An alternate	syntax is used if the keyword bottomright or in	short
	   br follows the command name.	In this	case, the arguments x and y
	   specify the desired position	of the bottom right corner of the
	   window. They	are interpreted	exactly	like the x and y arguments of
	   the Move command. Actually, any of the options accepted by the Move
	   command can be used.

       ResizeMaximize [resize-arguments]
	   Combines the	effects	of Resize and Maximize in a single command.
	   When	used on	a maximized window, the	window is resized and is still
	   in the maximized state afterwards. When used	on an unmaximized
	   window, the window is resized and put into the maximized state
	   afterwards. This is useful if the user wants	to resize the window
	   temporarily and then	return to the original geometry. The
	   resize-arguments are	the same as for	the Resize command.

       ResizeMove resize-arguments move-arguments
	   This	command	does the same as the Resize and	Move commands, but in
	   a single call which is less visually	disturbing. The
	   resize-arguments are	exactly	the same arguments as for the Resize
	   command and the move-arguments are exactly the same arguments as
	   for the Move	command	except the pointer option which	is not
	   supported by	the ResizeMove command.

	   Examples:

	       # Move window to	top left corner	and cover
	       # most of the screen
	       ResizeMove -10p -20p 0 0

	       # Grow the focused window towards the top of screen
	       Current Resize keep w+$[w.y]p keep 0

	   Note: Fvwm may not be able to parse the command properly if the
	   option bottomright of the Resize command is used.

       ResizeMoveMaximize resize-arguments move-arguments
	   Combines the	effects	of ResizeMove and Maximize in a	single
	   command. When used on a maximized window, the window	is resized and
	   moved and is	still in the maximized state afterwards. When used on
	   an unmaximized window, the window is	resized	and put	into the
	   maximized state afterwards. This is useful if the user wants	to
	   resize the window temporarily and then return to the	original
	   geometry. The resize-arguments and move-arguments are the same as
	   for the ResizeMove command.

       RestackTransients
	   This	command	regroups the transients	of a window close to it	in the
	   stacking order as if	the window had just been lowered and then
	   raised. The position	of the window itself is	not altered. Only
	   windows that	use either the RaiseTransient or LowerTransient	style
	   are affected	at all.	When RestackTransients is used on a transient
	   window with the StackTransientParent	style set, it is redirected to
	   the parent window.

       SetAnimation milliseconds-delay [fractions-to-move-list]
	   Sets	the time between frames	and the	list of	fractional offsets to
	   customize the animated moves	of the AnimatedMove command and	the
	   animation of	menus (if the menu style is set	to animated; see
	   MenuStyle command). If the fractions-to-move-list is	omitted, only
	   the time between frames is altered. The fractions-to-move-list
	   specifies how far the window	should be offset at each successive
	   frame as a fraction of the difference between the starting location
	   and the ending location. e.g.:

	       SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 \
	       .45 .6 .75 .85 .90 .94 .97 .99 1.0

	   Sets	the delay between frames to 10 milliseconds, and sets the
	   positions of	the 16 frames of the animation motion. Negative	values
	   are allowed,	and in particular can be used to make the motion
	   appear more cartoonish, by briefly moving slightly in the opposite
	   direction of	the main motion. The above settings are	the default.

       SnapAttraction [proximity [behaviour] [Screen]]
	   The SnapAttraction command is obsolete. It has been replaced	by the
	   Style command option	SnapAttraction.

       SnapGrid	[x-grid-size y-grid-size]
	   The SnapGrid	command	is obsolete. It	has been replaced by the Style
	   command option SnapGrid.

       WindowsDesk arg1	[arg2]
	   Moves the selected window to	another	desktop.

	   This	command	has been removed and must be replaced by MoveToDesk,
	   the arguments for which are the same	as for the GotoDesk command.

		+
	       *Important*

	   You cannot simply change the	name of	the command: the syntax	has
	   changed. If you used:

	       WindowsDesk n

	   to move a window to desk n, you have	to change it to:

	       MoveToDesk 0 n

       XorPixmap [pixmap]
	   Selects the pixmap with which bits are xor'ed when doing
	   rubber-band window moving or	resizing. This has a better chance of
	   making the rubber-band visible if XorValue does not give good
	   results. An example pixmap resize.rainbow.xpm is provided with the
	   icon	distribution. To turn the XorPixmap off	again use the XorValue
	   command or omit the pixmap argument.

       XorValue	[number]
	   Changes the value with which	bits are xor'ed	when doing rubber-band
	   window moving or resizing. Valid values range from zero to the
	   maximum value of an unsigned	long integer on	your system. Setting
	   this	value is a trial-and-error process. The	default	value 0	tries
	   to find a value that	gives a	good contrast to black and white. The
	   default value is used if the	given number is	omitted	or invalid.

   Focus & Mouse Movement
       CursorMove horizontal[p]	vertical[p]
	   Moves the mouse pointer by horizontal pages in the X	direction and
	   vertical pages in the Y direction. Either or	both entries may be
	   negative. CursorMove	can only move the mouse	cursor to a relative
	   position. To	move the mouse cursor to an absolute position, see
	   WarpToWindow. Both horizontal and vertical values are expressed in
	   percent of pages, so

	       CursorMove 100 100

	   means to move down and right	by one full page.

	       CursorMove 50 25

	   means to move right half a page and down a quarter of a page.
	   Alternatively, the distance can be specified	in pixels by appending
	   a 'p' to the	horizontal and/or vertical specification. For example

	       CursorMove -10p -10p

	   means move ten pixels up and	ten pixels left. The CursorMove
	   function should not be called from pop-up menus.

       FlipFocus [NoWarp]
	   Executes a Focus command as if the user had used the	pointer	to
	   select the window. This command alters the order of the WindowList
	   in the same way as clicking in a window to focus, i.e. the target
	   window is removed from the WindowList and placed at the start. This
	   command is recommended for use with the Direction command and in
	   the function	invoked	from WindowList.

       Focus [NoWarp]
	   Sets	the keyboard focus to the selected window. If the NoWarp
	   argument is given, this is all it does. Otherwise it	also moves the
	   viewport or window as needed	to make	the selected window visible.
	   This	command	does not automatically raise the window. Does not warp
	   the pointer into the	selected window	(see WarpToWindow function).
	   Does	not de-iconify.	This command does not alter the	order of the
	   WindowList, it rotates the WindowList around	so that	the target
	   window is at	the start.

	   When	the NoWarp argument is given, Focus cannot transfer the
	   keyboard focus to windows on	other desks.

	   To raise and/or warp	a pointer to a window together with Focus or
	   FlipFocus, use a function, like:

	       AddToFunc SelectWindow
	       + I Focus
	       + I Iconify false
	       + I Raise
	       + I WarpToWindow	50 8p

       WarpToWindow [!raise | raise] x[p] y[p]
	   Warps the cursor to the associated window and raises	it (unless the
	   option !raise is present). The parameters x and y default to
	   percentage of window	down and in from the upper left	hand corner
	   (or number of pixels	down and in if 'p' is appended to the
	   numbers). If	a number is negative the opposite edge is used and the
	   direction reversed. This command works also with windows that are
	   not managed by fvwm.	In this	case fvwm does not bring the window
	   onto	the screen if it is not	visible. For example it	is possible to
	   warp	the pointer to the center of the root window:

	       WindowId	root WarpToWindow 50 50

   Window State
       Close
	   If the window accepts the delete window protocol a message is sent
	   to the window asking	it to gracefully remove	itself.	If the window
	   does	not understand the delete window protocol then the window is
	   destroyed as	with the Destroy command. Note:	if the window accepts
	   the delete window protocol but does not close itself	in response,
	   the window is not deleted.

       Delete
	   Sends a message to a	window asking that it remove itself,
	   frequently causing the application to exit.

       Destroy
	   Destroys an application window, which usually causes	the
	   application to crash	and burn.

       Iconify [bool]
	   Iconifies a window if it is not already iconified or	de-iconifies
	   it if it is already iconified. The optional argument	bool is	a
	   boolean argument. "True" means only iconification is	allowed, while
	   "False" forces de-iconification. Using "toggle" switches between
	   iconified and de-iconified states.

	   There are a number of Style options which influence the appearance
	   and behavior	of icons (e.g. StickyIcon, NoIcon).

	   For backward	compatibility, the optional argument may also be a
	   positive number instead of "True", or a negative number instead of
	   "False". Note that this syntax is obsolete, and will	be removed in
	   the future.

       Maximize	[flags]	[bool |	forget]	[horizontal[p]]	[vertical[p]]
	   Without its optional	arguments (or if the bool bit has the value
	   "toggle") Maximize causes the window	to alternately switch from a
	   full-screen size to its normal size.	To force a window into
	   maximized (normal) state you	can use	a "True" or "False" value for
	   the bool argument.

	   With	just the parameter "forget" a maximized	window reverts back
	   into	normal state but keeps its current maximized size. This	can be
	   useful in conjunction with the commands ResizeMaximize and
	   ResizeMoveMaximize. If the window is	not maximized, nothing
	   happens.

	   With	the optional arguments horizontal and vertical,	which are
	   expressed as	percentage of a	full screen, the user can control the
	   new size of the window. An optional suffix 'p' can be used to
	   indicate pixels instead of percents of the screen size. If
	   horizontal is greater than 0	then the horizontal dimension of the
	   window is set to horizontal*screen_width/100. If the	value is
	   smaller than	0 the size is subtracted from the screen width,	i.e.
	   -25 is the same as 75. If horizontal	is "grow", it is maximized to
	   current available space until finding any obstacle. The vertical
	   resizing is similar.	If both	horizontal and vertical	values are
	   "grow", it expands vertically first,	then horizontally to find
	   space. Instead of the horizontal "grow" argument, "growleft"	or
	   "growright" can be used respectively	"growup" and "growdown". The
	   optional flags argument is a	space separated	list containing	the
	   following key words:	fullscreen, ewmhiwa, growonwindowlayer,
	   growonlayers	and screen. fullscreen causes the window to become
	   fullscreened	if the appropriate EWMH	hint is	set. ewmhiwa causes
	   fvwm	to ignore the EWMH working area. growonwindowlayer causes the
	   various grow	methods	to ignore windows with a layer other than the
	   current layer of the	window which is	maximized. The growonlayers
	   option must have two	integer	arguments. The first one is the
	   minimum layer and the second	one the	maximum	layer to use. Windows
	   that	are outside of this range of layers are	ignored	by the grow
	   methods. A negative value as	the first or second argument means to
	   assume no minimum or	maximum	layer. screen must have	an argument
	   which specifies the screen on which to operate.

	   Here	are some examples. The following adds a	title-bar button to
	   switch a window to the full vertical	size of	the screen:

	       Mouse 0 4 A Maximize 0 100

	   The following causes	windows	to be stretched	to the full width:

	       Mouse 0 4 A Maximize 100	0

	   This	makes a	window that is half the	screen size in each direction:

	       Mouse 0 4 A Maximize 50 50

	   To expand a window horizontally until any other window is found:

	       Mouse 0 4 A Maximize 0 grow

	   To expand a window until any	other window on	the same or a higher
	   layer is hit.

	       Mouse 0 4 A Maximize growonlayers $[w.layer] -1 grow grow

	   To expand a window but leave	the lower 60 pixels of the screen
	   unoccupied:

	       Mouse 0 4 A Maximize 100	-60p

	   Values larger than 100 can be used with caution.

       Refresh
	   Causes all windows on the screen to redraw themselves. All pending
	   updates of all windows' styles and looks are	applied	immediately.
	   E.g.	if Style or TitleStyle commands	were issued inside a fvwm
	   function.

       RefreshWindow
	   Causes the chosen window to redraw itself. All pending updates of
	   the window's	style and look are applied immediately.	E.g. if	Style
	   or TitleStyle commands were issued inside a fvwm function.

       Stick [bool]
	   If the bool argument	is empty or "toggle", the Stick	command	makes
	   a window sticky if it is not	already	sticky,	or non-sticky if it is
	   already sticky. To make a window sticky regardless of its current
	   state the bool argument must	be "True". To make it non-sticky use
	   "False".

       StickAcrossPages	[bool]
	   Works like Stick but	only sticks a window across pages, not across
	   desks.

       StickAcrossDesks	[bool]
	   Works like Stick but	only sticks a window across desks, not across
	   pages.

       WindowShade [bool] | [[ShadeAgain] direction]
	   Toggles the window shade feature for	titled windows.	Windows	in the
	   shaded state	only display a title-bar. If bool is not given or
	   "toggle", the window	shade state is toggled.	If bool	is "True", the
	   window is forced to the shaded state. If bool is "False", then the
	   window is forced to the non-shaded state. To	force shading in a
	   certain direction, the direction argument can be used. Any of the
	   strings "North", "South", "West", "East", "NorthWest", "NorthEast",
	   "SouthWest",	"SouthEast" or "Last" can be given. The	direction can
	   be abbreviated with the usual one or	two letters "N", "NW", etc.
	   Using a direction on	a window that was already shaded unshades the
	   window. To shade it in a different direction, use the ShadeAgain
	   option. The direction Last shades the window	in the direction it
	   last	was shaded. If the window has never been shaded	before it is
	   shaded as if	no direction had been given. Windows without titles
	   can be shaded too. Please refer also	to the options
	   WindowShadeSteps, WindowShadeShrinks, WindowShadeScrolls,
	   WindowShadeLazy, WindowShadeAlwaysLazy and WindowShadeBusy options
	   of the Style	command. Examples:

	       Style * WindowShadeShrinks, WindowShadeSteps 20,	\
		 WindowShadeLazy
	       Mouse 1 - S WindowShade North
	       Mouse 1 [ S WindowShade West
	       Mouse 1 ] S WindowShade E
	       Mouse 1 _ S WindowShade S

	   Note: When a	window that has	been shaded with a direction argument
	   changes the direction of the	window title (see TitleAtTop Style
	   option), the	shading	direction does not change. This	may look very
	   strange. Windows that were shaded without a direction argument stay
	   shaded in the direction of the title	bar.

	   For backward	compatibility, the optional argument may also be 1 to
	   signify "on", and 2 to signify "off". Note that this	syntax is
	   obsolete, and will be removed in the	future.

       WindowShadeAnimate [steps [p]]
	   This	command	is obsolete. Please use	the WindowShadeSteps option of
	   the Style command instead.

   Mouse & Key Bindings
       IgnoreModifiers [Modifiers]
	   Tells fvwm which modifiers to ignore	when matching Mouse or Key
	   bindings. IgnoreModifiers affects the ClickToFocus style too. This
	   command belongs into	your config. If	you issue it when your fvwm
	   session is already up and running the results are unpredictable.
	   The should appear before any	applications or	modules	are started in
	   your	config file (e.g. with the Exec	command).

	   Modifiers has the same syntax as in the Mouse or Key	bindings, with
	   the addition	of 'L' meaning the caps	lock key. The default is "L".
	   Modifiers can be omitted, meaning no	modifiers are ignored. This
	   command comes in handy if the num-lock and scroll-lock keys
	   interfere with your shortcuts. With XFree86 '2' usually is the
	   num-lock  modifier and '5' refers to	the scroll-lock	key. To	turn
	   all these pesky modifiers off you can use this command:

	       IgnoreModifiers L25

	   If the Modifiers argument is	the string "default", fvwm reverts
	   back	to the default value "L".

	   Important This command creates a lot	of extra network traffic,
	   depending on	your CPU, network connection, the number of Key	or
	   Mouse commands in your configuration	file and the number of
	   modifiers you want to ignore. If you	do not have a lightning	fast
	   machine or very few bindings	you should not ignore more than	two
	   modifiers. I.e. do not ignore

	   if you have no problem with it. In the FAQ you can find a better
	   solution of this problem.

       EdgeCommand [screen RANDRNAME] [direction [Function]]
	   Binds a specified fvwm command Function to an edge of the screen.
	   Direction may be one	of "North", "Top", "West", "Left", "South",
	   "Bottom", "Right" and "East". If Function is	omitted	the binding
	   for this edge is removed. If	EdgeCommand is called without any
	   arguments all edge bindings are removed. If the literal option
	   screen followed by a	RandR screen name RANDRNAME is given, the
	   command is set only for the given monitor.

	   Function is executed	when the mouse pointer enters the invisible
	   pan frames that surround the	visible	screen.	The binding works only
	   if EdgeThickness is set to a	value greater than 0. If a function is
	   bound to an edge, scrolling specified by EdgeScroll is disabled for
	   this	edge. It is possible to	bind a function	only to	some edges and
	   use the other edges for scrolling. This command is intended to
	   raise or lower certain windows when the mouse pointer enters	an
	   edge. FvwmAuto can be used get a delay when raising or lowering
	   windows. The	following example raises FvwmButtons if	the mouse
	   pointer enters the top edge of the screen.

	       # Disable EdgeScrolling but make	it possible
	       # to move windows over the screen edge
	       EdgeResistance -1
	       Style * EdgeMoveDelay 250
	       Style * EdgeMoveResistance 20

	       # Set thickness of the edge of the screen to 1
	       EdgeThickness 1

	       # Give focus to FvwmButtons if the mouse
	       # hits top edge
	       EdgeCommand Top Next (FvwmButtons) Focus
	       # Make sure the Next command matches the	window
	       Style FvwmButtons CirculateHit

	       Module FvwmButtons
	       Module FvwmAuto 100 "Silent AutoRaiseFunction" \
		"Silent	AutoLowerFunction"

	       # If any	window except FvwmButtons has
	       # focus when calling this function
	       # FvwmButtons are lowered
	       DestroyFunc AutoLowerFunction
	       AddToFunc AutoLowerFunction
	       + I Current (!FvwmButtons) All (FvwmButtons) Lower

	       # If FvwmButtons	has focus when calling this function raise it
	       DestroyFunc AutoRaiseFunction
	       AddToFunc AutoRaiseFunction
	       + I Current (FvwmButtons) Raise

	   Normally, the invisible pan frames are only on the screen edges
	   that	border virtual pages. If a screen edge has a command bound to
	   it, the pan frame is	always created on that edge.

       EdgeLeaveCommand	[screen	RANDRNAME] [direction [Function]]
	   Binds a specified fvwm command Function to an edge of the screen.
	   Direction may be one	of "North", "Top", "West", "Left", "South",
	   "Bottom", "Right" and "East". If Function is	omitted	the binding
	   for this edge is removed. If	EdgeLeaveCommand is called without any
	   arguments all edge bindings are removed. If the literal option
	   screen followed by a	RandR screen name RANDRNAME is given, the
	   command is set only for the given monitor.

	   Function is executed	when the mouse pointer leaves the invisible
	   pan frames that surround the	visible	screen.	The binding works only
	   if EdgeThickness is set to a	value greater than 0. If a function is
	   bound to an edge, scrolling specified by EdgeScroll is disabled for
	   this	edge. It is possible to	bind a function	only to	some edges and
	   use the other edges for scrolling. This command is intended to
	   raise or lower certain windows when the mouse pointer leaves	an
	   edge. FvwmAuto can be used get a delay when raising or lowering
	   windows. See	example	for EdgeCommand

	   Normally, the invisible pan frames are only on the screen edges
	   that	border virtual pages. If a screen edge has a command bound to
	   it, the pan frame is	always created on that edge.

       Key [(window)] Keyname Context Modifiers	Function
	   Binds a keyboard key	to a specified fvwm command, or	removes	the
	   binding if Function is '-'. The syntax is the same as for a Mouse
	   binding except that the mouse button	number is replaced with	a
	   Keyname. Normally, the key binding is activated when	the key	is
	   pressed. Keyname is a standard X11 key name as defined in
	   /usr/include/X11/keysymdef.h, (without the XK_ prefix), or the
	   keysym database /usr/X11R6/lib/X11/XKeysymDB. Only key names	that
	   are generated with no modifier keys or with just the

	   key held are	guaranteed to work. The	Context	and Modifiers fields
	   are defined as in the Mouse binding.	However, when you press	a key
	   the context window is the window that has the keyboard focus. That
	   is not necessarily the same as the window the pointer is over (with
	   SloppyFocus or ClickToFocus). Note that key bindings	with the 'R'
	   (root window) context do not	work properly with SloppyFocus and
	   ClickToFocus. If you	encounter problems, use	the PointerKey command
	   instead. If you want	to bind	keys to	a window with SloppyFocus or
	   ClickToFocus	that are supposed to work when the pointer is not over
	   the window, fvwm assumes the	pointer	is over	the client window
	   (i.e. you have to use the 'W' context).

	   The special context 'M' for menus can be used to (re)define the
	   menu	controls. It be	used alone or together with 'T', 'S', 'I',
	   '[',	']', '-' and '_'. See the Menu Bindings	section	for details.

	   The following example binds the built-in window list	to pop up when

	   is hit, no matter where the mouse pointer is:

	       Key F11 A SCM WindowList

	   Binding a key to a title-bar	button causes that button to appear.
	   Please refer	to the Mouse command for details.

       Mouse [(window)]	Button Context Modifiers Function
	   Defines a mouse binding, or removes the binding if Function is '-'.
	   Button is the mouse button number. If Button	is zero	then any
	   button performs the specified function. Note	that only mouse
	   buttons 1 to	5 are fully supported by X11. Any number above this
	   works only partially. Complex functions can not be used with	these
	   buttons and neither any operation that requires dragging the
	   pointer with	the button held. This is due to	limitations of X11. By
	   default, the	highest	allowed	button number is 9.

	   Context describes where the binding applies.	Valid contexts are 'R'
	   for the root	window,	'W' for	an application window, 'D' for a
	   desktop application (as kdesktop or Nautilus	desktop), 'T' for a
	   window title-bar, 'S' for a window side, top, or bottom bar,	'[',
	   ']',	'-' and	'_' for	the left, right, top or	bottom side only, 'F'
	   for a window	frame (the corners), '<', '^', '>' and 'v' for the top
	   left, top right, bottom right or bottom left	corner,	'I' for	an
	   icon	window,	or '0' through '9' for title-bar buttons, or any
	   combination of these	letters. 'A' is	for any	context. For instance,
	   a context of	"FST" applies when the mouse is	anywhere in a window's
	   border except the title-bar buttons.	Only 'S' and 'W' are valid for
	   an undecorated window.

	   The special context 'M' for menus can be used to (re)define the
	   menu	controls. It can be used alone or together with	'T', 'S', 'I',
	   '[',	']', '-' and '_'. See the Menu Bindings	section	for details.

	   The special context 'P' controls what buttons that can be used to
	   place a window. When	using this context no modifiers	are allowed
	   (Modifiers must be N), no window is allowed,	and the	Function must
	   be one of PlaceWindow, PlaceWindowDrag, PlaceWindowInteractive,
	   CancelPlacement, CancelPlacementDrag, CancelPlacementInteractive or
	   -.

	   PlaceWindow makes Button usable for window placement, both for
	   interactive and drag	move. CancelPlacement does the inverse.	That
	   is makes Button to cancel move for both interactive and drag	move.
	   It may however not override how new windows are resized after being
	   placed. This	is controlled by the Emulate command. Also a window
	   being dragged can always be placed by releasing the button hold
	   while dragging, regardless of if it is set to PlaceWindow or	not.

	   PlaceWindowDrag and PlaceWindowInteractive/CancelPlacementDrag and
	   CancelPlacementInteractive work as PlaceWindow/CancelPlacement with
	   the exception that they only	affect either windows dragged /	placed
	   interactively.

	   - is	equivalent to CancelPlacement.

	   The following example makes all buttons but button 3	usable for
	   interactive placement and makes drag	moves started by other buttons
	   than	one cancel if button 1 is pressed before finishing the move:

	       Mouse 0 P N PlaceWindow
	       Mouse 3 P N CancelPlacement
	       Mouse 1 P N CancelPlacementDrag

	   By default, the binding applies to all windows. You can specify
	   that	a binding only applies to specific windows by specifying the
	   window name in brackets. The	window name is a wildcard pattern
	   specifying the class, resource or name of the window	you want the
	   binding to apply to.

	   The following example shows how the same key-binding	can be used to
	   perform different functions depending on the	window that is
	   focused:

	       Key (rxvt)  V A C Echo ctrl-V-in-RXVT
	       Key (*term) V A C Echo ctrl-V-in-Term
	       Key (*vim)  V A C --
	       Key	   V A C Echo ctrl-V-elsewhere

	   A '--' action indicates that	the event should be propagated to the
	   specified window to handle. This is only a valid action for
	   window-specific bindings.

	   This	example	shows how to display the WindowList when Button	3 is
	   pressed on an rxvt window:

	       Mouse (rxvt) 3 A	A WindowList

	   Note	that Fvwm actually intercepts all events for a window-specific
	   binding and (if the focused window doesn't match any	of the
	   bindings) sends a synthetic copy of the event to the	window.	This
	   should be transparent to most applications, however (for security
	   reasons) some programs ignore these synthetic events	by default -
	   xterm is one	of them. To enable handling of these events, add the
	   following line to your ~/.Xdefaults file:

	       XTerm*allowSendEvents:  true

	   Modifiers is	any combination	of 'N' for no modifiers, 'C' for
	   control, 'S'	for shift, 'M' for Meta, 'L' for Caps-Lock or 'A' for
	   any modifier. For example, a	modifier of "SM" applies when both the

	   and

	   keys	are down. X11 modifiers	mod1 through mod5 are represented as
	   the digits '1' through '5'. The modifier 'L'	is ignored by default.
	   To turn it on, use the IgnoreModifiers command.

	   Function is one of fvwm's commands.

	   The title-bar buttons are numbered with odd numbered	buttons	on the
	   left	side of	the title-bar and even numbers on the right.
	   Smaller-numbered buttons are	displayed toward the outside of	the
	   window while	larger-numbered	buttons	appear toward the middle of
	   the window (0 is short for 10). In summary, the buttons are
	   numbered:

	       1 3 5 7 9    0 8	6 4 2

	   The highest odd numbered button which has an	action bound to	it
	   determines the number of buttons drawn on the left side of the
	   title bar. The highest even number determines the number of right
	   side	buttons	which are drawn. Actions can be	bound to either	mouse
	   buttons or keyboard keys.

       PointerKey [(window)] Keyname Context Modifiers Function
	   This	command	works exactly like the Key command. The	only
	   difference is that the binding operates on the window under the
	   pointer. Normal key bindings	operate	on the focused window instead.
	   The PointerKey command can for example be used to bind keys to the
	   root	window if you are using	SloppyFocus or ClickToFocus. However,
	   some	applications (xterm is one example) are	unable to handle this
	   key anymore,	even if	the pointer is over the	xterm window. It is
	   recommended to use the PointerKey command only for key combinations
	   that	are not	needed in any application window.

	   Example:

	       Style * SloppyFocus
	       PointerKey f1 a m Menu MainMenu

   Controlling the Virtual Desktop
       Desk arg1 [arg2]	[min max]
	   This	command	has been renamed. Please see GotoDesk command.

       DesktopName desk	name
	   Defines the name of the desktop number desk to name.	This name is
	   used	in the WindowList command and in the FvwmPager where it
	   override the	Label configuration option. Moreover, if consecutive
	   names starting from desktop 0 are defined, then these names can be
	   used	by any EWMH compliant application (as a	pager).

       DesktopConfiguration global | per-monitor | shared
	   This	command	controls the behaviour of how desktops should be
	   managed by FVWM. By default,	for all	screens	detected by FVWM
	   through RandR support, the option of	global means that all windows
	   on the same desk across monitors is treated as one -- hence,	when a
	   change of desktop/page happens, the same change occurs across all
	   monitors.

	   With	per-monitor , each RandR monitor has a separate	copy of
	   desktops, and hence function	independently of one another when
	   switching desks/pages.

	   When	shared is set, the desktops are	shared amongst all monitors.
	   So for example, with	the following number of	desktops defined with
	   two monitors	([] is monitor1, and <>	is monitor2):

	       [0]     1      2	     <3>     4

	   Moving between desktops would still honor the monitor the desktop
	   is being requested on. If monitor1 wanted to	switch to desktop 3,
	   then	that desktop is	exchanged with monitor2	such that the
	   following showed the	active desktop on both monitors:

	       <0>     1      2	     [3]     4

	   This	concept	is similar to how spectrwm or xmonad handles desktops.

	   Note: these each DesktopConfiguration mode can be changed
	   on-the-fly.

       DesktopSize Horizontalx_Vertical_
	   Defines the virtual desktop size in units of	the physical screen
	   size.

       EdgeResistance delayEdgeResistance scrolling moving [screen-scrolling]
	   Tells how hard it should be to change the desktop viewport by
	   moving the mouse over the edge of the screen. The parameter tells
	   how many milliseconds the pointer must spend	on the screen edge
	   before fvwm moves the viewport. This	is intended for	people who use

	       EdgeScroll 100 100

	   but find themselves accidentally flipping pages when	they do	not
	   want	to. If -1 is given as the delay, scrolling is disabled
	   completely.

	   The second form of invocation with two or three arguments is
	   obsolete and	should be replaced with	the following three commands
	   as needed:

	       EdgeResistance scrolling
	       Style * EdgeMoveDelay scrolling
	       Style * EdgeMoveResistance moving
	       or
	       Style * EdgeMoveResistance moving screen-scrolling

	   Fvwm	does this substitution automatically and prints	a warning.

       EdgeScroll [screen RANDRNAME] horizontal[p] vertical[p] [wrap | wrapx |
       wrapy]
	   Specifies the percentage of a page to scroll	when the cursor	hits
	   the edge of a page. The optional 'screen RANDRNAME' specifies the
	   RandR monitor which this setting should apply to, ignoring all
	   other monitors. Without this	option,	it applies the value to	all
	   monitors. A trailing	'p' changes the	interpretation to mean pixels.
	   If you do not want any paging or scrolling when you hit the edge of
	   a page include

	       EdgeScroll 0 0

	   in your config file,	or possibly better, set	the EdgeThickness to
	   zero. See the EdgeThickness command.	If you want whole pages, use

	       EdgeScroll 100 100

	   Both	horizontal and vertical	should be positive numbers.

	   If the horizontal and vertical percentages are multiplied by	1000
	   or one of the keywords wrap,	wrapx and wrapy	is given then
	   scrolling wraps around at the edge of the desktop. If

	       EdgeScroll 100000 100000

	   is used fvwm	scrolls	by whole pages,	wrapping around	at the edge of
	   the desktop.

       EdgeThickness [screen RANDRNAME]	0 | 1 |	2
	   This	is the width or	height of the invisible	window that fvwm
	   creates on the edges	of the screen that are used for	the edge
	   scrolling feature.

	   The optional	'screen	RANDRNAME' specifies the RandR monitor which
	   this	setting	should apply to, ignoring all other monitors. Without
	   this	option,	it applies the value to	all monitors.

	   In order to enable page scrolling via the mouse, four windows
	   called the "pan frames" are placed at the very edge of the screen.
	   This	is how fvwm detects the	mouse's	presence at the	window edge.
	   Because of the way this works, they need to be at the top of	the
	   stack and eat mouse events, so if you have any kind of error	along
	   the lines of: "mouse	clicks at the edge of the screen do the	wrong
	   thing" you're having	trouble	with the pan frames and	(assuming you
	   do not use the mouse	to flip	between	pages) should set the
	   EdgeThickness to 0.

	   A value of 0	completely disables mouse edge scrolling, even while
	   dragging a window. 1	gives the smallest pan frames, which seem to
	   work	best except on some servers.

	   2 is	the default.

	   Pan frames of 1 or 2	pixels can sometimes be	confusing, for
	   example, if you drag	a window over the edge of the screen, so that
	   it straddles	a pan frame, clicks on the window, near	the edge of
	   the screen are treated as clicks on the root	window.

       EwmhBaseStruts screen RANDRNAME left right top bottom
	   Where left, right, top and bottom are positive or null integers
	   which define	bands at the edge of the screen. If screen is given,
	   followed by the RANDRNAME of	a given	display, then the
	   EwmhBaseStruts are defined for just RANDRNAME. left defines a band
	   on the left of your screen of width left, right defines a band on
	   the right of	your screen of width right, top	defines	a band on the
	   top of your screen of height	top and	bottom defines a band on the
	   bottom of your screen of height bottom. The unit is the pixel and
	   the default is 0 0 0	0. These areas define additional reserved
	   space to the	reserved space defined by some ewmh compliant
	   applications. This is used to compute the Working Area. See the
	   Extended Window Manager Hints section for a definition of the
	   Working Area.

       EwmhNumberOfDesktops num	[max]
	   This	command	is useful only for an ewmh compliant pager or taskbar
	   (as kpager or kicker	taskbar) and not for fvwm modules ( FvwmPager
	   or FvwmIconMan). It causes a	compliant application to consider at
	   least num desktops (desktop 0 to desktop num-1). The	optional
	   argument max	causes a compliant application to never	consider more
	   than	max desktops. If max is	0 (the default)	there is no
	   limitation. The actual number of desktops is	determined
	   dynamically.	It is at least num, but	it can be d if there is	a
	   window on desktop d-1 (or if	the current desktop is desktop d-1)
	   and d is less or equal to max or max	is null. Moreover, a compliant
	   pager can ask to change num itself. This is accepted	by fvwm	only
	   if this number is less than or equal	to max or if max is null. Note
	   that	negative desktops are not supported by the ewmh	specification.
	   The default is 4 0.

       GotoDesk	[prev |	arg1 [arg2] [min max]]
	   Switches the	current	viewport to another desktop (workspace,	room).

	   The command takes 1,	2, 3, or 4 arguments. A	single argument	is
	   interpreted as a relative desk number. Two arguments	are understood
	   as a	relative and an	absolute desk number. Three arguments specify
	   a relative desk and the minimum and maximum of the allowable	range.
	   Four	arguments specify the relative,	absolute, minimum and maximum
	   values. (Desktop numbers can	be negative). If a literal prev	is
	   given as the	single argument, the last visited desk number is used.

	   If arg1 is non zero then the	next desktop number is the current
	   desktop number plus arg1.

	   If arg1 is zero then	the new	desktop	number is arg2.	(If arg2 is
	   not present,	then the command has no	effect.)

	   If min and max are given, the new desktop number is no smaller than
	   min and no bigger than max. Values out of this range	are truncated
	   (if you gave	an absolute desk number) or wrapped around (if you
	   gave	a relative desk	number).

	   The syntax is the same as for MoveToDesk, which moves a window to a
	   different desktop.

	   The number of active	desktops is determined dynamically. Only
	   desktops which contain windows or are currently being displayed are
	   active. Desktop numbers must	be between 2147483647 and -2147483648
	   (is that enough?).

       GotoDeskAndPage screen |	prev | desk xpage ypage
	   Switches the	current	viewport to another desktop and	page, similar
	   to the GotoDesk and GotoPage	commands. The new desk is desk and the
	   new page is (xpage,ypage).

       GotoPage	screen | prev |	[options] x[p] y[p]
	   Moves the desktop viewport to page (x,y). The upper left page is
	   (0,0), the upper right is (M,0), where M is one less	than the
	   current number of horizontal	pages specified	in the DesktopSize
	   command. The	lower left page	is (0,N), and the lower	right page is
	   (M,N), where	N is the desktop's vertical size as specified in the
	   DesktopSize command.	To switch to a page relative to	the current
	   one add a trailing 'p' after	any or both numerical arguments.

	   Possible options are	wrapx and wrapy	to wrap	around the x or	y
	   coordinate when the viewport	is moved beyond	the border of the
	   desktop.

	   The name of the RandR screen.

	   To go to the	last visited page use prev as the first	argument. The
	   GotoPage function should not	be used	in a pop-up menu.

	   Examples:

	       # Go to page (2,3)
	       GotoPage	2 3

	       # Go to lowest and rightmost page
	       GotoPage	-1 -1

	       # Go to last page visited
	       GotoPage	prev

	       # Go two	pages to the right and one page	up
	       GotoPage	+2p -1p

       Scroll [screen RANDRNAME] [horizonal[p] vertical[p] | reverse]
	   Scrolls the virtual desktop's viewport by horizontal	pages in the
	   x-direction and vertical pages in the y-direction or	starts
	   interactive scrolling of the	viewport. Either or both entries may
	   be negative.	Both horizontal	and vertical values are	expressed in
	   percent of pages, so

	       Scroll 100 100

	   means to scroll down	and right by one full page.

	       Scroll 50 25

	   means to scroll right half a	page and down a	quarter	of a page. The
	   Scroll function should not be called	from pop-up menus. Normally,
	   scrolling stops at the edge of the desktop.

	   If the horizontal and vertical percentages are 100 or more and are
	   multiplied by 1000 then scrolling wraps around at the edge of the
	   desktop. If

	       Scroll 100000 0

	   is executed over and	over fvwm moves	to the next desktop page on
	   each	execution and wraps around at the edge of the desktop, so that
	   every page is hit in	turn.

	   If the letter 'p' is	appended to each coordinate (horizontal	and/or
	   vertical), then the scroll amount is	measured in pixels.

	   Without arguments or	if the option reverse is given interactive
	   scrolling takes place. The viewport scrolls as the mouse is moved.
	   With	the reverse option scrolling is	done in	opposite direction of
	   the mouse movement, and without it scrolling	in the same direction
	   as the mouse.

	   The binding

	       Mouse 1 A CM Scroll reverse

	   gives an effect of grabbing and dragging the	viewport with button 1
	   if Control and Meta is pressed.

	   If screen is	given, followed	by the RANDRNAME of a given display,
	   then	the specified screen is	scrolled. This is only useful if using
	   per-monitor or shared DesktopConfiguration and wanting to scroll a
	   monitor other than the current monitor. Interactive scrolling
	   always scrolls the current monitor.

   User	Functions and Shell Commands
       AddToFunc [name [I | J |	M | C |	H | D action]]
	   Begins or adds to a function	definition. Here is an example:

	       AddToFunc Move-or-Raise I Raise
		+ M Move
		+ D Lower

	   The function	name is	"Move-or-Raise", and it	could be invoked from
	   a menu or a mouse binding or	key binding:

	       Mouse 1 TS A Move-or-Raise

	   The name must not contain embedded whitespace. No guarantees	are
	   made	whether	function names with embedded whitespace	work or	not.
	   This	behavior may also change in the	future without further notice.
	   The letter before the action	tells what kind	of action triggers the
	   command which follows it. 'I' stands	for "Immediate", and is
	   executed as soon as the function is invoked.	'J' is similar to
	   "Immediate" but is delayed until a button is	pressed	or released or
	   the pointer is moved, or the	function completes. It is always
	   executed before the other function actions. 'M' stands for
	   "Motion", i.e. if the user starts moving the	mouse. 'C' stands for
	   "Click", i.e., if the user presses and releases the mouse button.
	   'H' stands for "Hold", i.e. if the user presses a mouse button and
	   holds it down for more than ClickTime milliseconds. 'D' stands for
	   "Double-click". The action 'I' causes an action to be performed on
	   the button-press, if	the function is	invoked	with prior knowledge
	   of which window to act on.

	   There is a number of	predefined symbols that	are replaced by
	   certain values if they appear on the	command	line. Please refer to
	   the Command Expansion section for details.

	   Warning Please read the comments on executing complex functions in
	   the section Scripting and Complex Functions.

	   Examples:

	   If you call

	       Key F10 R A Function MailFunction xmh "-font fixed"

	   and "MailFunction" is

	       AddToFunc MailFunction
		+ I Next ($0) Iconify off
		+ I Next (AcceptsFocus,	$0) Focus
		+ I None ($0) Exec exec	$0 $1

	   Then	the last line of the function becomes

		+ I None (xmh) Exec exec xmh -font fixed

	   The expansion is performed as the function is executed, so you can
	   use the same	function with all sorts	of different arguments.	You
	   could use

	       Key F11 R A Function MailFunction zmail "-bg pink"

	   in the same config, if you wanted. An example of using "$[w.id]"
	   is:

	       AddToFunc PrintFunction
		+ I Raise
		+ I Exec xdpr -id $[w.id]

	   Note	that "$$" is expanded to '$'.

	   Another example: bind right mouse button within the window button
	   number 6 (this is a minimize	button for the win95 theme) to iconify
	   all windows of the same resource:

	       AddToFunc FuncIconifySameResource "I" All ($0) Iconify on
	       Mouse 3 6 A FuncIconifySameResource $[w.resource]

       Beep
	   As might be expected, this makes the	terminal beep.

       DestroyFunc function
	   Deletes a function, so that subsequent references to	it are no
	   longer valid. You can use this to change the	contents of a function
	   during a fvwm session. The function can be rebuilt using AddToFunc.

	       DestroyFunc PrintFunction

       Echo string
	   Prints a message to the debug log file, which requires logging to
	   be enabled. See the -v option or PrintInfo for more information on
	   both	enabling debug logging and the log file	location. Potentially
	   useful for debugging	things in your config or getting the value of
	   variables.

	       Echo Beginning style definitions...
	       Echo Current desk $[desk.n].

       EchoFuncDefinition function
	   The EchoFuncDefinition is similar to	the Echo command but prints
	   the definition for the given	function to the	debug log file.	It is
	   useful to find out how fvwm handles quoting and for debugging
	   functions.

       Exec command
	   Executes command. You should	not use	an ampersand '&' at the	end of
	   the command.	You probably want to use an additional "exec" at the
	   beginning of	command. Without that, the shell that fvwm invokes to
	   run your command stays until	the command exits. In effect, you'll
	   have	twice as many processes	running	as you need. Note that some
	   shells are smart enough to avoid this, but it never hurts to
	   include the "exec" anyway.

	   The following example binds function	key

	   in the root window, with no modifiers, to the exec function.	The
	   program rxvt	is started with	an assortment of options.

	       Key F1 R	N Exec exec rxvt -fg yellow -bg	blue \
	       -e /bin/tcsh

	   Note	that this function doesn't wait	for command to complete, so
	   things like:

	       Exec "echo AddToMenu ...	> /tmp/file"
	       Read /tmp/file

	   do not work reliably	(see the PipeRead command).

       ExecUseShell [shell]
	   Makes the Exec command use the specified shell, or the value	of the
	   $SHELL environment variable if no shell is specified, instead of
	   the default Bourne shell (/bin/sh).

	       ExecUseShell
	       ExecUseShell /usr/local/bin/tcsh

       Function	FunctionName
	   Used	to bind	a previously defined function to a key or mouse
	   button. The following example binds mouse button 1 to a function
	   called "Move-or-Raise", whose definition was	provided as an example
	   earlier in this man page. After performing this binding fvwm
	   executes the	"move-or-raise"	function whenever button 1 is pressed
	   in a	window's title-bar.

	       Mouse 1 T A Function Move-or-Raise

	   The keyword Function	may be omitted if FunctionName does not
	   coincide with an fvwm command.

	   Warning: Please read	the comments on	executing complex functions in
	   the section Scripting and Complex Functions.

       InfoStoreAdd key	value
	   Stores the value at the given key. This is useful to	store generic
	   information used in the lifetime of an fvwm config file. For
	   example storing program preferences for opening video files.

	   The purpose of this command is to store internal information	to
	   fvwm	which can be used bu fvwm functions, or	when opening programs
	   of a	certain	type. Previous to this command the only	way to do this
	   was via SetEnv but this is discouraged because it places such
	   information in the environment, which pollutes it and makes the
	   information global to other processes started by fvwm which may
	   then	modify them which might	not be what's wanted. Hence the	point
	   of InfoStoreAdd is to still allow for such information to be
	   stored, but kept internal to	fvwm.

	   In this way,	one can	build up as many key/value pairs as needed.
	   Recalling the value of a given key happens through fvwm's usual
	   expansion mechanism.	See the	Command	Expansion section for more
	   details. For	example:

	       InfoStoreAdd teddybearprog xteddy

	       # Echo the value	of teddybearprog
	       Echo $[infostore.teddybearprog]

	   Removing an entry from the InfoStore	is done	with the
	   InfoStoreRemove command.

       InfoStoreRemove key
	   Removes an entry at the given key from the InfoStore. Example:

	       InfoStoreRemove teddybearprog

       Nop
	   Does	nothing. This is used to insert	a blank	line or	separator in a
	   menu. If the	menu item specification	is

	       AddToMenu MyMenu	" " Nop

	   then	a blank	line is	inserted. If it	looks like

	       + "" Nop

	   then	a separator line is inserted. Can also be used as the
	   double-click	action for Menu	or Popup.

       PipeRead	command	[quiet]
	   Causes fvwm to read commands	from the output	of the command.	This
	   command is executed by /bin/sh as if	you typed it on	the command
	   line. If the	command	consists of more than one word it must be
	   quoted. Useful for building up dynamic menu entries based on	a
	   directories contents, for example. If the keyword Quiet follows the
	   command no message is produced if the command is not	found.

	   Example:

	       AddToMenu HomeDirMenu
	       PipeRead	'for i in $HOME/*; \
	       do echo "+ $i Exec xterm	-e vi $i"; done'

	   Note: The PipeRead changes the pointer to a watch cursor by default
	   during execution. However, some commands, for example xwd, need to
	   take	control	of the pointer themselves and do not work. To disable
	   the watch cursor, use the command prior to PipeRead

	       BusyCursor Read off

	   The PipeRead	command	executes synchronously.	If you want to Exec
	   something, but need the command to run synchronously, you might do
	   something like:

	       PipeRead	'command 1>&2'

	   The redirection causes any output from the program to go to stderr
	   instead of being read as a sequence of commands by fvwm. PipeRead
	   returns 1 if	the given command could	be executed or -1 if not (see
	   the section Conditional Commands for	the meaning of return codes).

       Read filename [quiet]
	   Causes fvwm to read commands	from the file named filename. If the
	   keyword Quiet follows the command no	message	is produced if the
	   file	is not found. If the file name does not	begin with a slash
	   ('/'), fvwm looks in	the user's data	directory, then	the system
	   data	directory. The user's data directory is	by default
	   $HOME/.fvwm.	It can be overridden by	exporting FVWM_USERDIR set to
	   any other directory.	The Read command returns 1 if the given	file
	   could be read or -1 if not (see the section Conditional Commands
	   for the meaning of return codes).

       SetEnv variable value
	   Set an environment variable to a new	value, similar to the shell's
	   export or setenv command. The variable and its value	are inherited
	   by processes	started	directly by fvwm. For example:

	       SetEnv height HEIGHT

       Silent command
	   A number of commands	require	a window to operate on.	If no window
	   was selected	when such a function is	invoked	the user is asked to
	   select a window. Sometimes this behavior is unwanted, for example
	   if the function was called by a module and the window that was
	   selected at first does not exist anymore. You can prevent this by
	   putting Silent in front of the fvwm command.	If a function that
	   needs a window is called with Silent	without	a window selected, it
	   simply returns without doing	anything. If Silent is used on a user
	   defined function it affects all function and	sub function calls
	   until the original function exits.

	   Another usage of Silent is with binding commands Key, PointerKey
	   and Mouse, this disables error messages.

	   Silent also disables	the error message for non-existent commands.
	   Note: This command is treated as a prefix to	its command. Expansion
	   of the command line is done as if Silent was	not there.

	   Examples:

	       Silent Move 0 0
	       Silent User_defined_function
	       # do not	complain on keyboards without "Help" key
	       Silent Key Help R A Popup HelpMenu

       UnsetEnv	[variable]
	   Unset an environment	variable, similar to shell's export or
	   unsetenv command. The variable then is removed from the environment
	   array inherited by processes	started	directly by fvwm.

       Wait window
	   This	command	is intended to be used in fvwm functions only. It
	   causes execution of a function to pause until a new window matching
	   window appears. This	can be a window's name,	class, or resource
	   string. It may contain the wildcards	'*' and	'?', which are matched
	   in the usual	Unix filename manner. This is particularly useful in
	   the "InitFunction" if you are trying	to start windows on specific
	   desktops:

	       AddToFunc InitFunction
		+ I Exec exec xterm -geometry 80x64+0+0
		+ I Wait xterm
		+ I GotoDesk 0 2
		+ I Exec exec xmh -font	fixed -geometry	\
		507x750+0+0
		+ I Wait xmh
		+ I GotoDesk 0 0

	   The above function starts an	xterm on the current desk, waits for
	   it to map itself, then switches to desk 2 and starts	an xmh.	After
	   the xmh window appears control moves	to desk	0.

	   Fvwm	remains	partially functional during a wait, but	any input from
	   the modules is queued up and	processed only after the window
	   appears or the command is aborted. For example, windows can not be
	   focused with	FvwmIconMan or FvwmPager during	a wait.

	   You can escape from a Wait pause by pressing	Ctrl-Alt-Escape	(where
	   Alt is the first modifier). To redefine this	key sequence see the
	   EscapeFunc command.

       Status On | Off
	   Turns status	either On or Off. This sends information in JSON
	   format down a named pipe (set via FVWM_STATUS_PIPE env var) about
	   the current desks and number	of windows, etc. This is meant to
	   provide a fast means	of supplying third-party tools information
	   about what's	happening in Fvwm. For example,	the JSON could be
	   manipulated and sent	to tools such as lemonbar, polybar, etc.

	   The format of the JSON blob looks like this:

	       {
		   "version": 3,
		   "current_screen": "HDMI2",
		   "screens": {
		       "HDMI2":	{
			   "randr_order": 0,
			   "current_client": "n6tadam@shuttle: ~",
			   "desktops": {
			       "0": {
				   "number": 0,
				   "is_urgent":	false,
				   "is_current": true,
				   "number_of_clients":	5
			       },
			   },
		       },
		    },
	       }

	   These sections repeat for all screens/groups/etc, depending on how
	   many	there are of each.

   Conditional Commands
       Conditional commands are	commands that are only executed	if certain
       conditions are met. Most	conditional commands work on windows, like
       Next, ThisWindow	or All.	There is one conditional command, Test,	that
       works on	global conditions unrelated to windows.	The syntax of the
       conditions is described below. For readability, the list	of conditions
       is located at the end of	this section.

       Return Codes
	   All commands	in this	section	(unless	specifically stated for	the
	   command) also have a	return code that can be	1 (if the condition
	   was met) or 0 (if the condition was not met). Some commands may
	   return -1 which means that an error occurred	and the	return code is
	   useless. The	Break command returns -2. Additionally,	the return
	   codes of commands run in a complex functions	are passed to the
	   invoking complex function. The return code is used by the TestRc
	   command. Please refer to the	commands' description for examples.
	   The return code can also be accessed	through	the variable
	   $[cond.rc]. Non conditional commands	do not modify the return code
	   of the last conditional command. Important note: return codes are
	   only	defined	inside functions created with the AddToFunc command
	   and are not inherited by sub	functions. To run a command without
	   altering the	return code, the KeepRc	command	can be used.

       The Ring	of Windows
	   Fvwm	stores windows in a ring internally. Think of the focused
	   window as a cursor on the current position in the ring. The Next
	   command and many other commands search forwards through the ring
	   for a matching window, and Prev searches backwards. The windows in
	   the ring are	either ordered by creation time	(if the
	   !FPSortWindowlistByFocus, NeverFocus	or MouseFocus styles are used)
	   or by the last time they had	the focus.

       List of Conditional Commands

	   All [options] [(conditions)]	command
	       Execute command on all windows meeting the conditions. It
	       returns 1 if any	window matches the condition and 0 otherwise.
	       The execution starts at the top of the window ring and
	       continues towards the bottom. The options can be	any
	       combination of Reverse and UseStack. If the option Reverse is
	       given the execution order is reversed. The option UseStack
	       makes All use the stacking order	instead	of the window ring
	       when walking through windows. See the Conditions	section	for a
	       list of conditions.

	       This command implies the	conditions CirculateHit,
	       CirculateHitIcon	and CirculateHitShaded.	They can be turned off
	       by specifying !CirculateHit etc.	explicitly.

	   Any [(conditions)] command
	       Performs	command	if any window which satisfies all conditions
	       exists. The command is run in the context of the	root window.
	       See the Conditions section for a	list of	conditions.

	   Break [levels]
	       If the break command is used in a function, function execution
	       is terminated immediately. Further commands of the function are
	       not processed. Normally,	all nested invocations of complex
	       functions are left. An optional integer number levels may be
	       given to	break out of the given number of nested	functions and
	       continue	execution of a higher level function. The Break
	       command always has the return code -2. Example:

		   AddToFunc PickWindowRaiseAndDeiconify
		   + I Pick
		   + I TestRc (Error) Break
		   + I Raise
		   + I Iconify off

	   Current [(conditions)] command
	       Performs	command	on the currently focused window	if it
	       satisfies all conditions. See the Conditions section for	a list
	       of conditions.

	       This command implies the	conditions CirculateHit,
	       CirculateHitIcon	and CirculateHitShaded.	They can be turned off
	       by specifying !CirculateHit etc.	explicitly.

	   Direction [FromPointer] direction [(conditions)] command
	       Performs	command	(typically Focus) on a window in the given
	       direction which satisfies all conditions. Normally, the center
	       of the currently	focused	window or the context window in	which
	       the command was invoked is taken	as the starting	point. Lacking
	       such a window, or when the FromPointer option is	given, the
	       current position	of the pointer is taken	as the starting	point.
	       The direction may be one	of "North", "Northeast", "East",
	       "Southeast", "South", "Southwest", "West", "Northwest" and
	       "Center". Which window Direction	selects	depends	on angle and
	       distance	between	the center points of the windows. Closer
	       windows are considered a	better match than those	farther	away.
	       The Center direction simply selects the window closest to the
	       starting	point. Returns -1 if an	invalid	direction was given.
	       See the Conditions section for a	list of	conditions.

	   KeepRc command
	       Runs the	command	but does not alter the return code of the
	       previous	command. Note: KeepRc is treated as a prefix to	its
	       command.	Expansion of the command line is done as if KeepRc was
	       not there.

	   Next	[(conditions)] command
	       Performs	command	(typically Focus) on the next window which
	       satisfies all conditions. If the	command	is running in a	window
	       context,	it starts looking for a	matching window	from there.
	       Otherwise it starts at the focused window. See Conditions
	       section for a list of conditions.

	   None	[(conditions)] command
	       Performs	command	if no window which satisfies all conditions
	       exists. The command is run in the context of the	root window.
	       Returns 1 if no window matches the conditions and 0 otherwise.
	       See Conditions section for a list of conditions.

	       This command implies the	conditions CirculateHit,
	       CirculateHitIcon	and CirculateHitShaded.	They can be turned off
	       by specifying !CirculateHit etc.	explicitly.

	   NoWindow command
	       Performs	command, but removes the window	context	if any.	This
	       is not really a conditional command, but	a prefix that may be
	       useful in menu items that should	operate	without	a window even
	       if such menu is bound to	window decorations.

	   Pick	[(conditions)] command
	       Pick works like Function	if invoked in the context of a window.
	       If invoked in the root window, it first asks the	user to	pick a
	       window and then executes	the command in the context of that
	       window. This avoids annoying multiple selections	with complex
	       functions. The command is executed only if the given conditions
	       are met.	Returns	-1 if no window	was selected. See Conditions
	       section for a list of conditions.

	       This command implies the	conditions CirculateHit,
	       CirculateHitIcon	and CirculateHitShaded.	They can be turned off
	       by specifying !CirculateHit etc.	explicitly.

	   PointerWindow [(conditions)]	command
	       Performs	command	if the window under the	pointer	satisfies all
	       conditions. Returns -1 if there is no window under the pointer.
	       See Conditions section for a list of conditions.

	       This command implies the	conditions CirculateHit,
	       CirculateHitIcon	and CirculateHitShaded.	They can be turned off
	       by specifying !CirculateHit etc.	explicitly.

	   Prev	[(conditions)] command
	       Performs	command	(typically Focus) on the previous window which
	       satisfies all conditions. If the	command	is running in a	window
	       context,	it starts looking for a	matching window	from there.
	       Otherwise it starts at the focused window. See Conditions
	       section for a list of conditions.

	   ScanForWindow [FromPointer] dir1 dir2 [(conditions)]	command
	       Performs	command	(typically Focus) on a window in the given
	       direction which satisfies all conditions. Normally, the center
	       of the currently	focused	window or the context window in	which
	       the command was invoked is taken	as the starting	point. Lacking
	       such a window, or when the FromPointer option is	given, the
	       current position	of the pointer is taken	as the starting	point.
	       The direction dir1 may be one of	"North", "NorthEast", "East",
	       "SouthEast", "South", "SouthWest", "West", and "NorthWest".
	       Which window ScanForWindow selects depends first	on the
	       position	along the primary axis given by	dir1. If any windows
	       have the	exact same coordinate along the	primary	axis, the
	       secondary direction is used to order the	windows. The direction
	       dir2 may	be one of the same set of values as dir1. If dir2 is
	       not perfectly perpendicular to dir1, ScanForWindow returns a
	       failure.	When using ScanForWindow repeatedly with the same
	       arguments, it is	guaranteed that	all windows matching the
	       conditions will eventually be found. If the focus reaches a
	       limit along the primary axis, it	will wrap around to the
	       opposite	side. Returns -1 if an invalid direction was given.
	       See Conditions section for a list of conditions.

	   Test	[(test-conditions)] command
	       Performs	command	if all test-conditions are satisfied. The
	       test-conditions are keywords with possible arguments from the
	       list below and are separated by commas or whitespace. They
	       include:	Version	operator x.y.z,	EnvIsSet varname, EnvMatch
	       varname pattern,	EdgeHasPointer direction, EdgeIsActive
	       direction, Start, Init, Restart,	Exit, Quit, ToRestart, True,
	       False, F, R, W, X and I.	A test-condition prefixed with "!" is
	       negated.

	       The Version operator x.y.z test-condition is fulfilled if the
	       logical condition of the	expression is true. Valid operator
	       values are: >=, >, <=, <, == and	!=.

	       Example:

		   Test	(Version >= 2.5.11) Echo 2.5.11	or later.

	       The EnvIsSet varname test-condition is true if the given
	       environment variable is set. The	EnvMatch varname pattern
	       test-condition is true if pattern matches the given environment
	       or infostore variable value. (See InfoStoreAdd).	The pattern
	       may contain special "*" and "?" chars. The "varname" is coded
	       without the leading dollar sign ($).

	       The EdgeHasPointer [direction] test-condition is	true if	the
	       edge in the given direction currently contains the pointer. The
	       EdgeIsActive [direction]	test-condition is true if the edge in
	       the given direction currently is	active.	An edge	is active, and
	       can contain a pointer if	either a command is bound to it	or
	       edge scroll is available	in that	direction. The direction may
	       be one of * Any,	North, Top, Up,	West, Left, South, Bottom,
	       Down, Right* and	* East.	If no direction	is specified Any* is
	       assumed.

	       The Start test-condition	is the same as either Init or Restart.
	       It is only true on startup or restart prior and during
	       StartFunction execution.	The Exit test-condition	is the same as
	       either Quit or ToRestart. It is only valid on shutdown during
	       ExitFunction function execution.

	       The True	and False test-conditions are unconditionally true and
	       false.

	       Additionally, if	a test-condition name is not recognized, the
	       Error return code is set	and the	command	is not executed.

	       The F file, R file, W file, X file and I	file test-conditions
	       test for	existence of the given [F]ile (possibly	with
	       [R]ead/[W]rite permissions), e[X]ecutable (in $PATH), or	the
	       [I]mage (in ImagePath).

	       Example:

		   AddToFunc StartFunction I Test (Init) Exec exec xterm

		   AddToFunc VerifyVersion
		   + I Test (Version 2.5.*) Echo 2.5.x detected
		   + I TestRc (NoMatch)	\
		   Test	(!Version 2.6.*) Echo Future version
		   + I TestRc (NoMatch)	\
		   Echo	2.6.x is detected

		   Test	(F $[FVWM_USERDIR]/local-config) Read local-config
		   Test	(X xterm-utf16)	Exec exec xterm-utf16

	   TestRc [([!]returncode)] command
	       Performs	command	if the last conditional	command	returned the
	       value returncode. Instead of the	numeric	values 0 (no match), 1
	       (match),	-1 (error), and	-2 (break) the symbolic	names
	       "NoMatch", "Match", "Error" and "Break" can be used. If no
	       returncode is given, the	default	0 is assumed. If the return
	       code is prefixed	with '!', the command is executed if
	       returncode does not match the value returned by the conditional
	       command.	The TestRc command can only be used inside functions.
	       If the command is another conditional command, the previous
	       return code is replaced by the new one. Example:

		   AddToFunc ToggleXterm
		   + I All (my_xtermwindow) Close
		   + I TestRc (NoMatch)	Exec xterm -T my_xtermwindow

	   ThisWindow [(conditions)] command
	       ThisWindow executes the specified command in the	context	of the
	       current operand window. If there	is no operand window (it is
	       invoked in the root window), the	command	is ignored. ThisWindow
	       is never	interactive. The command is executed only if the given
	       conditions are met. It returns -1 if used outside a window
	       context.	See Conditions section for a list of conditions.

	       This command implies the	conditions CirculateHit,
	       CirculateHitIcon	and CirculateHitShaded.	They can be turned off
	       by specifying "!CirculateHit" etc. explicitly.

	   WindowId [id] [(conditions)]	| [root] command
	       The WindowId command looks for a	specific window	id and runs
	       the specified command on	it. The	second form of syntax
	       retrieves the window id of the root window. The window
	       indicated by id may belong to a window not managed by fvwm.
	       Although	most commands can not operate on such windows, there
	       are some	exceptions, for	example	the WarpToWindow command.
	       Returns -1 if no	window with the	given id exists. See
	       Conditions section for a	list of	conditions.

	       This command implies the	conditions CirculateHit,
	       CirculateHitIcon	and CirculateHitShaded.	They can be turned off
	       by specifying !CirculateHit etc.	explicitly.

	       Examples:

		   WindowId 0x34567890 Raise
		   WindowId root 1 WarpToWindow	50 50
		   WindowId $0 (Silly_Popup) Delete

	       In the past this	command	was mostly useful for functions	used
	       with the	WindowList command, or for selective processing	of
	       FvwmEvent calls (as in the last example), but currently these
	       handler functions are called within a window context, so	this
	       command is not really needed in these cases. Still it may be
	       useful if, for example, the window id should be stored in the
	       environment variable for	a further proceeding.

	       Pick SetEnv BOOKMARKED_WINDOW $[w.id]
	       WindowId	$[BOOKMARKED_WINDOW] WarpToWindow

       Conditions
	   The conditions that may be given as an argument to any conditional
	   command are a list of keywords separated by commas, enclosed	in
	   parentheses.	Unless stated otherwise, conditional commands accept
	   all the conditions listed below. Note that earlier versions of fvwm
	   required the	conditions to be separated by whitespace instead of
	   commas and enclosed in brackets instead of parentheses (this	is
	   still supported for backward	compatibility).

	   In addition,	the conditions may include one or more window names to
	   match to. If	more than one window name is given, all	of them	must
	   match. The window name, icon	name, class, and resource are
	   considered when attempting to find a	match. Each name may include
	   the wildcards '*' and '?', and may consist of two or	more
	   alternatives, separated by the character '|', which acts as an OR
	   operator. (If OR operators are used,	they must not be separated by
	   spaces from the names.) Each	window name can	begin with '!',	which
	   prevents command if any of the window name, icon name, class	or
	   resource match. However, '!'	must not be applied to individual
	   names in a group separated by OR operators; it may only be applied
	   to the beginning of the group, and then it operates on the whole
	   group.

	   Examples:

	       Next ("Netscape|konqueror|Mozilla*") WarpToWindow 99 90

	   This	goes to	the next web browser window, no	matter which of	the
	   three named web browsers is being used.

	       Next ("Mozilla*", "Bookmark*") WarpToWindow 99 90

	   This	goes to	Mozilla's bookmark manager window, ignoring other
	   Mozilla windows and other browsers' bookmark	windows.

	       All ("XTerm|rxvt", !console) Iconify

	   This	iconifies all the xterm	and rxvt windows on the	current	page,
	   except that the one named "console" (with the -name option to
	   xterm) is excluded.

	       Next (!"FvwmPager|FvwmForm*|FvwmButtons") Raise
	       Next (!FvwmPager, !FvwmForm*, !FvwmButtons) Raise

	   These two commands are equivalent; either one raises	the next
	   window which	is not one of the named	fvwm modules.

	   Any condition can be	negated	by using a an exclamation mark ('!')
	   directly in front of	its name.

	   AcceptsFocus, AnyScreen, CirculateHit, CirculateHitIcon,
	   CirculateHitShaded, Closable, CurrentDesk, CurrentGlobalPage,
	   CurrentGlobalPageAnyDesk, CurrentPage, CurrentPageAnyDesk,
	   CurrentScreen, Desk,	FixedPosition, FixedSize, Focused, HasBorders,
	   HasHandles, HasPointer, HasTitle, TitleAtTop, TitleAtBottom,
	   TitleAtLeft,	TitleAtRight, Iconic, Iconifiable, Layer [n],
	   Maximizable,	Maximized, Overlapped, PlacedByButton n,
	   PlacedByButton3, PlacedByFvwm, Raised, Shaded, State	n, Sticky,
	   StickyAcrossDesks, StickyAcrossPages, StickyIcon,
	   StickyAcrossDesksIcon, StickyAcrossPagesIcon, Transient, Visible.

	   The AcceptsFocus condition excludes all windows that	do not want
	   the input focus (the	application has	set the	"Input hints" for the
	   window to False) and	do not use the Lenience	option of the Style
	   command. Also, all windows using the	NeverFocus style are ignored.
	   Note: !Lenience is equivalent to the	deprecated option NoLenience.

	   With	the AnyScreen condition	used together with any of the
	   Current... conditions, windows that do not intersect	the screen
	   containing the mouse	pointer	are considered for a match too.	For
	   example:

	       # Focus next window on current page,
	       # regardless of screen
	       Next (CurrentPage, AnyScreen) Focus

	   The CirculateHit and	CirculateHitIcon options override the
	   CirculateSkip and CirculateSkipIcon Style attributes	for normal or
	   iconic windows. The CirculateHitShaded option overrides the
	   CirculateSkipShaded Style. All three	options	are turned on by
	   default for the Current command. They can be	turned off by
	   specifying !CirculateHit etc. explicitly. Note: Do not confuse
	   these conditions with the style options of the same name.
	   Specifically,

	       Style foo CirculateSkip
	       Next (foo, CirculateHit)	...

	   is not the same as

	       Style foo CirculateHit ...
	       Next (foo)

	   The prior selects windows with the name foo only in the Next
	   command. In the second example, these windows are always matched in
	   all conditional commands.

	   The Closable	condition matches only windows that are	allowed	to be
	   closed.

	   The CurrentDesk condition matches only windows that are on the
	   current desk.

	   The CurrentGlobalPage condition matches only	windows	that are on
	   the current page of the current desk, regardless of which screen
	   the window is on. This condition implicitly activates the
	   CurrentDesk condition.

	   The CurrentGlobalPageAnyDesk	condition matches only windows that
	   are on the current page of any desk,	regardless of RandR screen .

	   The CurrentPage condition matches only windows that are on the
	   current page	of the current desk. This condition implicitly
	   activates the CurrentDesk condition.

	   The CurrentPageAnyDesk and CurrentScreen conditions matches only
	   windows that	are on the current page	of any desk.

	   The Screen [name] condition matches only windows which are on the
	   specified screen.

	   The Desk [n]	condition matches only windows which are on the
	   specified desk.

	   The FixedPosition condition excludes	all windows that do not	have a
	   fixed position, either set through WM hints or the Style option
	   FixedPosition. Example:

	       DestroyFunc ToggleFixedGeometry
	       AddToFunc   ToggleFixedGeometry
	       + I Pick	(FixedPosition)	\
	       WindowStyle VariablePosition, VariableSize
	       + I TestRc (NoMatch) WindowStyle	FixedPosition, FixedSize

	   The FixedSize condition excludes all	windows	that do	not have a
	   fixed size, either set through WM hints or the Style	option
	   FixedSize.

	   The Focused matches on the window that currently has	the keyboard
	   focus. This is not useful for the Current command but can be	used
	   with	the other conditional commands.

	   The HasBorders condition excludes all windows that do not have
	   borders.

	   The HasHandles condition excludes all windows that do not have
	   resize handles.

	   The HasPointer condition excludes all windows that do not contain
	   the pointer.

	   The HasTitle	condition excludes all windows that do not have	a
	   titlebar.

	   The TitleAtTop, TitleAtBottom, TitleAtLeft, TitleAtRight conditions
	   test	for the	titlebar at that window	location.

	   The Iconic condition	matches	only iconic windows.

	   The Iconifiable condition matches only windows that are allowed to
	   be iconified.

	   The Layer [n] condition matches only	windows	on the specified
	   layer. The optional argument	of the Layer condition defaults	to the
	   layer of the	focused	window.	The negation !Layer switches off the
	   Layer condition.

	   The Maximizable condition matches only windows that are allowed to
	   be maximized.

	   The Maximized condition matches only	maximized windows.

	   The Overlapped condition matches only windows that are overlapped
	   by other windows on the same	layer (or unmanaged windows if the
	   option RaiseOverUnmanaged of	the BugOpts command is used). Note
	   that	this condition can be slow if you have many windows or if
	   RaiseOverUnmanaged is used and the connection to the	X server is
	   slow.

	   The PlacedByButton n	condition is fulfilled if the last interactive
	   motion of the window	(with the Move command or as ManualPlacement)
	   was ended by	pressing mouse button n. Example:

	       Mouse   1 T     A       Function	MoveWindow

	       DestroyFunc MoveWindow
	       AddToFunc MoveWindow
	       + C Move
	       + C ThisWindow (PlacedByButton 5) WindowShade off
	       + C TestRc (Match) Maximize on 0	100
	       + C ThisWindow (PlacedByButton 4) WindowShade on

	   The PlacedByButton3 condition has the same meaning as
	   PlacedByButton 3. It	remains	only for backward compatibility.

	   The PlacedByFvwm condition excludes all windows that	have been
	   placed manually or by using the user	or program position hint.

	   The Raised conditions matches only windows that are fully visible
	   on the current viewport and not overlapped by any other window.

	   The Shaded conditions matches only shaded windows (see WindowShade
	   command).

	   The State n or !State n conditions match only windows with the
	   specified integer state set (or unset). See the State command for
	   details. The	argument may range from	0 to 31.

	   The Sticky, StickyAcrossDesks and StickyAcrossPages match only
	   windows that	are currently sticky, sticky across all	desks or
	   sticky across all pages. Please refer to the	Style options with the
	   same	name and the commands Stick, StickAcrossDesks and
	   StickAcrossPages for	details.

	   The StickyIcon, StickyAcrossDesksIcon and StickyAcrossPagesIcon
	   match only windows that become sticky, sticky across	all desks or
	   sticky across all pages when	they are in iconified state.

	   The Transient condition matches only	windows	that have the
	   "transient" property	set by the application.	This it	usually	the
	   case	for application	popup menus and	dialogs. The FvwmIdent module
	   can be used to find out whether a specific window is	transient.

	   The Visible condition matches only windows that are at least
	   partially visible on	the current viewport and not completely
	   overlapped by other windows.

   Module Commands
       Fvwm maintains a	database of module configuration lines in a form

	   *<ModuleName>: <Config-Resource>

       where <ModuleName> is either a real module name or an alias.

       This database is	initially filled from config file (or from output of
       -cmd config command), and can be	later modified either by user (via
       FvwmCommand) or by modules.

       When modules are	run, they read appropriate portion of database.	(The
       concept of this database	is similar to one used in X resource
       database).

       Commands	for manipulating module	configuration database are described
       below.

       * module_config_line
	   Defines a module configuration. module_config_line consists of a
	   module name (or a module alias) and a module	resource line. The new
	   syntax allows a delimiter, a	colon and optional spaces, between the
	   module name and the rest of the line, this is recommended to	avoid
	   conflicts.

	       *FvwmPager: WindowBorderWidth 1
	       *FvwmButtons-TopRight: Geometry 100x100-0+0
	       *FvwmButtons-Bottom: Geometry +0-0

       DestroyModuleConfig module_config
	   Deletes module configuration	entries, so that new configuration
	   lines may be	entered	instead. This also sometimes the only way to
	   turn	back some module settings, previously defined. This changes
	   the way a module runs during	a fvwm session without restarting.
	   Wildcards can be used for portions of the name as well.

	   The new non-conflicting syntax allows a delimiter, a	colon and
	   optional spaces between the module name and the rest	of the line.
	   In this case	a module name (or alias) can't have wildcards.

	       DestroyModuleConfig FvwmButtons*
	       DestroyModuleConfig FvwmForm: Fore
	       DestroyModuleConfig FvwmIconMan:	Tips*

       KillModule modulename [modulealias]
	   Causes the module which was invoked with name modulename to be
	   killed. The name may	include	wildcards. If modulealias is given,
	   only	modules	started	with the given alias are killed.

	       # kill all pagers
	       KillModule FvwmPager

	       Module FvwmEvent	SoundEvent
	       KillModule FvwmEvent SoundEvent

       Module modulename [moduleparams]
	   Specifies a module with its optional	parameters which should	be
	   spawned. Currently several modules, including FvwmButtons,
	   FvwmEvent, FvwmForm,	FvwmPager, FvwmScript support aliases. Aliases
	   are useful if more than one instance	of the module should be
	   spawned. Aliases may	be configured separately using * syntax. To
	   start a module FvwmForm using an alias MyForm, the following	syntax
	   may be used:

	       Module FvwmForm MyForm

	   At the current time the available modules (included with fvwm) are
	   FvwmAnimate (produces animation effects when	a window is iconified
	   or de-iconified), FvwmAuto (an auto raise module), FvwmBacker (to
	   change the background when you change desktops), FvwmBanner (to
	   display a spiffy XBM, XPM, PNG or SVG), FvwmButtons (brings up a
	   customizable	tool bar), FvwmCommandS	(a command server to use with
	   shell's FvwmCommand client),	FvwmConsole (to	execute	fvwm commands
	   directly), FvwmEvent	(trigger various actions by events), FvwmForm
	   (to bring up	dialogs), FvwmIconMan (a flexible icon manager),
	   FvwmIdent (to get window info), FvwmPager (a	mini version of	the
	   desktop), FvwmPerl (a Perl manipulator and preprocessor), FvwmProxy
	   (to locate and control obscured windows by using small proxy
	   windows), FvwmRearrange (to rearrange windows), FvwmScript (another
	   powerful dialog toolkit), These modules have	their own man pages.
	   There may be	other modules out on there as well.

	   Modules can be short	lived transient	programs or, like FvwmButtons
	   , can remain	for the	duration of the	X session. Modules are
	   terminated by the window manager prior to restarts and quits, if
	   possible. See the introductory section on modules. The keyword
	   Module may be omitted if modulename is distinct from	all fvwm
	   commands.

       ModuleListenOnly	modulename [moduleparams]
	   This	command	works like the Module command, but fvwm	never sends
	   any messages	to the module. This may	be handy to write a module as
	   a shell script that is triggered by external	events without the
	   burden to answer packets sent by fvwm. For example, a module
	   written as a	shell script may change	labels of the FvwmButtons
	   module to implement a simple	clock.

       ModulePath path
	   Specifies a colon separated list of directories in which to search
	   for modules.	To find	a module, fvwm searches	each directory in turn
	   and uses the	first file found. Directory names on the list do not
	   need	trailing slashes.

	   The ModulePath may contain environment variables such as $HOME (or
	   ${HOME}). Further, a	'+' in the path	is expanded to the previous
	   value of the	path, allowing easy appending or prepending to the
	   path.

	   For example:

	       ModulePath ${HOME}/lib/fvwm/modules:+

	   The directory containing the	standard modules is available via the
	   environment variable	$FVWM_MODULEDIR.

       ModuleSynchronous [Expect string] [Timeout secs]	modulename
	   The ModuleSynchronous command is very similar to Module. Fvwm stops
	   processing any commands and user input until	the module sends a
	   string beginning with "NOP FINISHED STARTUP"	back to	fvwm. If the
	   optional Timeout is given fvwm gives	up if the module sent no input
	   back	to fvwm	for secs seconds. If the Expect	option is given, fvwm
	   waits for the given string instead. ModuleSynchronous should	only
	   be used during fvwm startup to enforce the order in which modules
	   are started.	This command is	intended for use with the (currently
	   hypothetical) module	that should be in place	before other modules
	   are started.

	   Warning: It is quite	easy to	hang fvwm with this command, even if a
	   timeout is given. Be	extra careful choosing the string to wait for.
	   Although all	modules	in the fvwm distribution send back the "NOP
	   FINISHED STARTUP" string once they have properly started up,	this
	   may not be the case for third party modules.	Moreover, you can try
	   to escape from a locked ModuleSynchronous command by	using the key
	   sequence

	   (see	the EscapeFunc).

       ModuleTimeout timeout
	   Specifies how many seconds fvwm waits for a module to respond. If
	   the module does not respond within the time limit then fvwm kills
	   it. timeout must be greater than zero, or it	is reset to the
	   default value of 30 seconds.

       SendToModule modulename string
	   Sends an arbitrary string (no quotes	required) to all modules,
	   whose alias or name matching	modulename, which may contain
	   wildcards. This only	makes sense if the module is set up to
	   understand and deal with these strings though. Can be used for
	   module to module communication, or implementation of	more complex
	   commands in modules.

   Session Management Commands
       Quit
	   Exits fvwm, generally causing X to exit too.

       Restart [window_manager [params]]
	   Causes fvwm to restart itself if window_manager is left blank, or
	   to switch to	an alternate window manager (or	other fvwm version) if
	   window_manager is specified.	If the window manager is not in	your
	   default search path,	then you should	use the	full path name for
	   window_manager.

	   This	command	should not have	a trailing ampersand. The command can
	   have	optional parameters with simple	shell-like syntax. You can use
	   ~ (is expanded to the user's	home directory)	and environmental
	   variables $VAR or ${VAR}. Here are several examples:

	       Key F1 R	N Restart
	       Key F1 R	N Restart fvwm1	-f .fvwmrc
	       Key F1 R	N Restart xterm	-n '"X console"' -T \"X\ console\" -e fvwm

	   Note, currently with	multi headed displays, restart of fvwms	on
	   different screens works independently.

       Restart --pass-args window_manager
	   The same as Restart without parameters but the name for the current
	   window manager is replaced with the specified window_manager	and
	   original arguments are preserved.

       Restart --dont-preserve-state [other-params]
	   The same as

	       Restart [other-params]

	   but it does not save	any window states over the restart.

	   Without this	option,	Restart	preserves most per-window state	by
	   writing it to a file	named .fs-restart-$HOSTDISPLAY in the user's
	   home	directory.

       SaveSession
	   Causes a session manager (if	any) to	save the session. This command
	   does	not work for xsm, it seems that	xsm does not implement this
	   functionality. Use Unix signals to manage xsm remotely.

       SaveQuitSession
	   Causes a session manager (if	any) to	save and then shutdown the
	   session. This command does not work for xsm,	it seems that xsm does
	   not implement this functionality. Use Unix signals to manage	xsm
	   remotely.

   Colorsets
       Colorsets are a powerful	method to control colors. Colorsets create
       appearance resources that are shared by fvwm and	its modules. When a
       colorset	is modified all	parts of fvwm react to that change. A colorset
       includes	a foreground color, background color, shadow and highlight
       color (often based on the background color), background face (this
       includes	images and all kinds of	gradients). There is a way to render
       background face and specify other color operations.

       Colorset	num [options]
	   Creates or modifies colorset	num. Colorsets are identified by this
	   number. The number can start	at zero	and can	be a very large
	   number.

	   Warning: The	highest	colorset number	used determines	memory
	   consumption.	Thus, if you define 'Colorset 100000', the memory for
	   100001 colorsets is used. Keep your colorset	numbers	as small as
	   possible.

	   By convention, colorsets are	numbered like this:

	       # 0 = Default colors
	       # 1 = Inactive windows
	       # 2 = Active windows
	       # 3 = Inactive menu entry and menu background
	       # 4 = Active menu entry
	       # 5 = greyed out	menu entry (only bg used)
	       # 6 = module foreground and background
	       # 7 = hilight colors

	   If you need to have more colors and do not want to reinvent the
	   wheel, you may use the convention used in fvwm-themes, it defines
	   the meaning of the first 40 colorsets for nearly all	purposes:

	   http://fvwm-themes.sourceforge.net/doc/colorsets

	   Each	colorset has four colors, an optional pixmap and an optional
	   shape mask. The four	colors are used	by modules as the foreground,
	   background, highlight and shadow colors. When a colorset is created
	   it defaults to a foreground of black	and background of gray.	The
	   background and foreground are marked	as "average" and "contrast"
	   (see	later) so that just specifying a pixmap	or gradient gives
	   sensible results.

	   options is a	comma separated	list containing	some of	the keywords:
	   fg, Fore, Foreground, bg, Back, Background, hi, Hilite, Hilight,
	   sh, Shade, Shadow, fgsh, Pixmap, TiledPixmap, AspectPixmap,
	   Transparent,	RootTransparent, Shape,	TiledShape, AspectShape,
	   NoShape, ?Gradient, Tint, fgTint, bgTint, Alpha, fgAlpha, Dither,
	   NoDither, IconTint, IconAlpha, Plain.

	   fg, Fore and	Foreground take	a color	name as	an argument and	set
	   the foreground color. The special name Contrast may be used to
	   select a color that contrasts well with the background color. To
	   reset the foreground	color to the default value you can simply omit
	   the color name.

	   bg, Back and	Background take	a color	name as	an argument and	set
	   the background color. It also sets the highlight and	shadow colors
	   to values that give a 3d effect unless these	have been explicitly
	   set with the	options	below. The special name	Average	may be used to
	   select a color that is the average color of the pixmap. If the
	   pixmap is tinted with the Tint option, the tint is not taken	in
	   account in the computation of the average color. You	should use the
	   bgTint option to get	the "real" average color. The background color
	   is reset to the default value if the	color name is omitted.

	   hi, Hilite and Hilight take a color name as an argument and set the
	   highlight color. If the highlight color is not explicitly set, the
	   default is to calculate it from the background color. To switch
	   back	to the default behavior	the color name can be omitted.

	   sh, Shade and Shadow	take a color name as an	argument and set the
	   shadow color. If the	shadow color is	not explicitly set, the
	   default is to calculate it from the background color. To switch
	   back	to the default behavior	the color name can be omitted.

	   fgsh	takes a	color name as an argument and sets the color used by
	   the shadowing font effect. See the Font Shadow Effects section of
	   the fvwm man	page. By default this color is computed	from the
	   foreground and background colors. To	switch back to the default the
	   color name can be omitted.

	   Pixmap, TiledPixmap and AspectPixmap	take a file name as an
	   argument, search the	ImagePath and use it as	the background pixmap.
	   Any transparent parts are filled with the background	color. Not
	   specifying a	file name removes any existing image from the
	   colorset. TiledPixmap produces repeated copies of the image with no
	   scaling, Pixmap causes the image to be stretched to fit whatever
	   object the colorset is applied to and AspectPixmap stretches	to fit
	   but retains the image aspect	ratio.

	   Transparent creates a transparent background	pixmap.	The pixmap is
	   used	as a window background to achieve root transparency. For this
	   you should use the ParentalRelativity option	to the Style command.
	   A subsequent	root background	change may be detected or not, this
	   depends on the program used to set the background. If you use
	   fvwm-root, xsetbg (xli), FvwmBacker with solid or colorset colors
	   or a	recent version of Esetroot (>= 9.2) a background change	is
	   detected. If	background changes are not detected (e.g., if you use
	   xv or xsetroot) you can force detection by using the	-d option of
	   fvwm-root:

	       xv -root	-quit mybg.png;	fvwm-root -d

	   Due to the way X implements transparency no guarantees can be made
	   that	the desired effect can be achieved. The	application may	even
	   crash. If you experience any	problems with this option, do not use
	   it.

	   Using outline move and resize (see the OpaqueMoveSize command and
	   the ResizeOpaque Style option) as well as setting the
	   WindowShadeShrinks style may	help. The transparency achieved	with
	   Transparent depends on whether the colorset is applied to the
	   foreground or the background	of a window. In	the second case	the
	   transparency	is relative to the parent window of the	window on
	   which the colorset is defined. For example:

	       Colorset	12 VGradient 200 grey30	grey60
	       Colorset	17 Transparent
	       *FvwmIconMan: Colorset 12
	       *FvwmIconMan: PlainColorset 17

	   gives an IconMan with a vertical grey gradient background and the
	   buttons use the background (by transparency). To obtain a (root)
	   transparent IconMan:

	       Colorset	12 Transparent
	       Colorset	17 Transparent
	       Colorset	18 Transparent
	       Colorset	19 Transparent

	       *FvwmIconMan: Colorset 12
	       *FvwmIconMan: PlainColorset 17
	       *FvwmIconMan: FocusColorset 18
	       *FvwmIconMan: IconColorset  19

	   The Colorset	IconMan	option defines the IconMan window background,
	   but the PlainColorset and the FocusColorset are drawn on the
	   foreground. So, the transparency of the IconMan buttons is achieved
	   by drawing nothing. Now if this IconMan is swallowed	in an
	   FvwmButtons as:

	       FvwmButtons:(Colorset 10, Swallow "FvwmIconMan" 'FvwmIconMan')

	   then, FvwmIconMan becomes a child of	FvwmButtons and	it is
	   transparent relative	to FvwmButtons.	So, in this case FvwmIconMan
	   uses	Colorset 10 as background. If you want root transparency use
	   the RootTransparent option. FvwmButtons FvwmIconMan,	and FvwmIdent,
	   are relatively simple. There	is one main colorset option which
	   defines the background of the window	and the	other colorsets	(if
	   any)	are drawn on the foreground. The case of FvwmProxy is simpler,
	   the two colorsets refer to the window backgrounds. FvwmPager	is
	   more	complicated as almost everything in the	pager are windows with
	   some	parental relations (the	mini windows are the child and the
	   desktops are	the parents and	all this is complicated	by the
	   hilighted page). So,	the colorsets apply to the background of these
	   windows. You	should experiment. For FvwmForm	and FvwmScript the
	   situation is	similar. There is a main window	(a child of the	root
	   window) which corresponds to	the main colorset and most of the
	   widgets are windows which are children of the main window. Tint may
	   work	or not with the	Transparent option. When the colorset is drawn
	   on the foreground Tint should work. In some cases, tinting may be
	   very	slow. Tinting may work with fvwm menu (without animation).
	   Tinting may work better if your X server has	backing	store enabled
	   (try	xdpyinfo to see	if this	the case). There is a chance that the
	   backing store support of your X server does not work	well with the
	   terrible hack used to Tint the ParentRelative Pixmap. So, to	get
	   tinted root transparency it is more safe to use the RootTransparent
	   option.

	   RootTransparent [ buffer ] creates a	root transparent background.
	   To make this	option work, you must use an Esetroot compatible
	   program, fvwm-root with the --retain-pixmap option or FvwmBacker
	   with	the RetainPixmap option	(and colorset or solid backgrounds).
	   The buffer keyword is useful	only when the Tint option is used too.
	   This	speeds up creation of windows which use	the colorset (useful
	   for fvwm menus) at the cost of memory usage.	It also	speeds up
	   opaque move and resize which	can be unacceptably slow without
	   buffer. However, this option	may add	a lot of memory	to your	X
	   server (depending on	the size of the	image used to set the
	   background).	In summary, using outline move and resize for modules
	   which use such a colorset may be a good idea.

	   Shape, TiledShape and AspectShape take a file name as an argument,
	   search the ImagePath	and use	it as the shape	bitmap.	TiledShape
	   produces repeated copies of the bitmap with no scaling, Shape
	   causes the bitmap to	be stretched to	fit whatever object the
	   colorset is applied to and AspectShape stretches to fit but retains
	   the bitmap aspect ratio. If the file	is a pixmap in xpm format the
	   shape mask (all opaque pixels) of the pixmap	is used. For png and
	   svg images, the shape mask is equivalent to all not completely
	   transparent pixels (alpha > 0).

	   Warning Due to the way X11 implements shapes	you cannot take	back
	   making windows shaped. You may have to restart fvwm or the shaped
	   application.

	   ?Gradient ... creates a pixmap and stretches	it to fit the window.
	   ?Gradient may be one	of HGradient, VGradient, DGradient, BGradient,
	   SGradient, CGradient, RGradient or YGradient. The gradient types
	   are as follows: H is	horizontal; V is vertical; D is	diagonal from
	   top left to bottom right; B is a backwards diagonal from bottom
	   left	to top right; S	is concentric squares; C is concentric
	   circles; R is a radar like pattern and Y is a Yin Yang style	(but
	   without the dots). Please refer to the Color	Gradients section for
	   the syntax of gradients.

	   Tint	takes 2	arguments, a color and a percentage between 0 and 100.
	   It causes the image defined using ?Pixmap or	?Gradient to be	tinted
	   with	the specified color using the percentage. If the image is
	   transparent Tint tints only the image part. Unfortunately, a
	   colorset background specified using the Transparent option can give
	   strange results. See	the Transparent	option for details. With no
	   arguments this option removes the tint.

	   fgTint takes	2 arguments, a color and a percentage between 0	and
	   100.	It causes the color defined using fg to	be tinted with the
	   specified color using the percentage. With no arguments this	option
	   removes the tint.

	   bgTint takes	2 arguments, a color and a percentage between 0	and
	   100.	It causes the color defined using bg to	be tinted with the
	   specified color using the percentage. If the	sh and hi colors are
	   not specified, they are recomputed from the tinted bg color.	With
	   no arguments	this option removes the	tint.

	   Alpha takes a percentage between 0 and 100 as an argument. It
	   causes fvwm to merge	the image defined using	?Pixmap	or ?Gradient
	   with	the bg color using the percentage. If the percentage is	0 the
	   image is hidden and if it is	100 the	image is displayed as usual
	   (no merge). The default is 100 and it is restored if	no argument is
	   given.

	   fgAlpha takes a percentage between 0	and 100	as an argument.	It
	   causes fvwm to merge	the text and the colorset background using the
	   percentage. If the percentage is 0 the text is hidden and if	it is
	   100 the text	is displayed as	usual (no merge). This option has an
	   effect only with fonts loaded by Xft, see the Font Names and	Font
	   Loading section. The	default	is 100 and it is restored if no
	   argument is given.

	   Dither causes fvwm to dither	the image defined using	?Pixmap	or
	   ?Gradient. This is useful only with displays	with depth less	than
	   or equal to 16 (i.e., on displays which can only display less than
	   65537 colors	at once). The dithering	effect lets you	simulate
	   having more colors available	that you actually have.	NoDither
	   causes fvwm to do not dither	the images. Dither is the default if
	   the depth is	less than or equal to 8	(a screen with 256 colors or
	   less). In depth 15 (32768 colors) and 16 (65536 colors), the
	   default is NoDither,	however	this effect can	be useful with images
	   which contain a lot of close	colors.	For example a fine gradient
	   looks more smooth.

	   IconTint takes 2 arguments, a color and a percentage	between	0 and
	   100.	It causes fvwm or a module to tint the "icons" which are
	   rendered into the colorset background with the specified color
	   using a percentage. Here "icons" means, fvwm	Icons, fvwm menu
	   icons, MiniIcons which represent applications in various modules,
	   images loaded by modules (e.g., images specified by the Icon
	   FvwmButtons button option) ...etc. With no arguments	this option
	   removes the icon tint.

       IconAlpha takes a percentage between 0 and 100 as an argument. It
       causes fvwm to merge the	"icons"	which are rendered into	the colorset
       background using	this percentage. The default is	100 and	it is restored
       if no argument is given.

       Note: It	is equivalent to use "Tint a_color rate" and "Alpha a" if a =
       100 and the bg color is a_color.	This equivalence does not hold for
       IconAlpha and IconTint as the background	can be an image	or a gradient
       (and not	a uniform color	background). However, in some cases you	can
       achieve (almost)	the same effect	by using IconTint in the place of
       IconAlpha. This is preferable as, in general, IconAlpha generates more
       redrawing than IconTint.

       NoShape removes the shape mask from the colorset	while Plain removes
       the background pixmap or	gradient.

       Examples

	   Colorset 3 fg tan, bg navy

       If necessary this creates colorsets 0, 1, 2 and 3 and then changes
       colorset	3 to have a foreground of tan, a background of navy.

	   Colorset 3 bg "navy blue"

       changes the background color of colorset	3 to navy blue.	The foreground
       and pixmap are unchanged.

	   Colorset 3 AspectPixmap large_murky_dungeon.xpm

       causes depression.

	   Colorset 3 bg Average

       Sets the	background color and the relief	colors to match	the background
       pixmap. This is the default setting but it must be used if a background
       color was specified and is now not required.

	   Colorset 3 YGradient	200 3 blue 1000	navy 1 blue 1000 navy

       Adds a Yin Yang gradient	background pixmap to colorset 3. If the
       background is set to average it is recomputed along with	the foreground
       if that is set to contrast.

	   #!/bin/sh
	   FvwmCommand "Colorset 7 fg navy, bg gray"
	   while true
	   do
		   FvwmCommand "Colorset 7 fg gray"
		   sleep 1
		   FvwmCommand "Colorset 7 fg navy"
		   sleep 1
	   done

       Makes colorset 7	blink.

       The color names used in colorsets are saved as fvwm variables which can
       be substituted in any fvwm command. For example:

	   AddToFunc InitFunction
	   + I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]

       Where $[fg.cs0] is the foreground color of colorset zero. Please	refer
       to the Command Expansion	section	for more information.

       CleanupColorsets
	   Resets a definition of all colorsets.

       Color Gradients
	   A color gradient is a background that changes its color gradually
	   from	one hue	to a different one. Color gradients can	be used	by
	   various commands and	modules	of fvwm. There are eight types of
	   gradients: HGradient	is a horizontal	gradient, VGradient is
	   vertical, DGradient is diagonal from	top left to bottom right,
	   BGradient is	backwards diagonal from	bottom left to top right,
	   SGradient is	concentric squares, CGradient is concentric circles,
	   RGradient is	a radar	like pattern and YGradient is a	Yin Yang style
	   (but	without	the dots).

	   The color gradient syntax has two forms:

	   ?Gradient colors start-color	end-color

	   This	form specifies a linear	gradient. The arguments	denote the
	   total number	of colors to allocate (between 2 and 1000), the
	   initial color and the final color.

	   Example:

	       TitleStyle VGradient 20 rgb:b8/ce/bc rgb:5b/85/d0

	   ?Gradient colors segments color length color	[length	color] ...

	   The second form specifies a nonlinear gradient. The arguments are:
	   the total number of colors to allocate (between 2 and 1000),	then
	   the number of segments. For each segment, specify the starting
	   color, a relative length, then the ending color. Each subsequent
	   segment begins with the second color	of the last segment. The
	   lengths may be any non-negative integers. The length	of one segment
	   divided by the sum of all segments lengths is the fraction of the
	   colors that are used	for the	segment.

	   Examples:

	       Colorset	0 DGradient 128	2 lightgrey 50 blue 50 white

	       # 20% gradient from red to blue,
	       # 30% from blue to black,
	       # 50% from black	to grey
	       Colorset	0 DGradient 100	3 Red 20 Blue 30 Black 50 Grey

	       # 50% from blue to green, then
	       # 50% from yellow to red
	       Colorset	0 HGradient 128	3 Blue 1000 Green 1 Yellow 1000	Red

       Note: Some gradient styles may be slow and consume huge amounts of
       memory, so if you encounter performance problems	with them you may be
       better off by not using them. To	improve	performance you	can try	one or
       all of the following:

       + Turn hilighting of the	active menu item other than foreground color
       off:

       +

	   MenuStyle <style> Hilight3DOff, !HilightBack

       + Make sure sub menus do	not overlap the	parent menu. This can prevent
       menus being redrawn every time a	sub menu pops up or down.

       +

	   MenuStyle <style> PopupOffset 1 100

       + Run your X server with	backing	storage. If your X Server is started
       with the	-bs option, turn it off. If not	try the	-wm and	+bs options:

       +

	   startx -- -wm +bs

       + You may have to adapt this example to your system (e.g. if you	use
       xinit to	start X).

				  2023-08-29		      FVWM3COMMANDS(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fvwm3commands&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help