STANNIX Solutions for the Real World


Manual: Fvwm2Form

FvwmForm(1)					Fvwm Modules					 FvwmForm(1)

NAME
       FvwmForm - input form module for Fvwm

SYNOPSIS
       Module FvwmForm [ Alias ]

       FvwmForm must be spawned by Fvwm.  If invoked from the command line, FvwmForm prints its version num‐
       ber and exits.

DESCRIPTION
       FvwmForm	 provides a mechanism to get user input and act accordingly.  This is achieved by means of a
       form that the user can fill out, and from which the user can select actions he wants Fvwm to take.  A
       form consists of five types of items: text labels, single-line text inputs, mutually-exclusive selec‐
       tions, multiple-choice selections, and action buttons.  These items are arranged into several  lines,
       with a very flexible layout.

       A text label only serves the purpose of explanation.  It cannot accept any input.

       A timeout entry provides a mechanism for timing out the form and performing a certain action when the
       timeout	occurs.	  The countdown is displayed similar to a text label except that it updates with the
       amount of time left.

       A text input field can be used to edit a single-line string.   FvwmForm	accepts	 Emacs-style  cursor
       movement keys.  See FvwmFormInput for details.  Mouse copy is not supported, but you can paste.

       A selection consists of several choices.

       The selection itself is a logical entity that doesn't have any display feature.

       Each  choice  is	 displayed as a push-button followed by a explanatory text label.  When selected, an
       exclusive choice shows a circle in the middle, while a multiple choice shows a check.

       An action button, when activated sends one or more commands to Fvwm or executes shell commands.	 The
       shell  commands	can  contain  the content of the input fields on the form and reflect the setting of
       choices on the form.

       The action buttons can be activated thru keyboard or mouse.

INITIALIZATION
       FvwmForm invoked without an alias uses configuration commands  starting with "*FvwmForm".

       Normally you would invoke FvwmForm with an alias representing the name of a form,  its  configuration
       commands	 and  configuration file.  For example, the command "Module FvwmForm Rlogin" uses configura‐
       tion commands starting with "*Rlogin", and reads the optional configuration file "Rlogin".

       All forms, regardless of alias,	scan first for configuration commands that start with  "*FvwmFormDe‐
       fault".	 These	commands  normally come from the builtin form "FvwmForm-Form" which  saves  commands
       to the file ".FvwmForm".

       The physical reading of the optional input file, ".FvwmForm", is done only the first time FvwmForm is
       invoked, or after "FvwmForm-Form" updates the file.

       When  the  file ".FvwmForm" is read,  it is done	 by sending the command "Read .FvwmForm	 Quiet"	  to
       fvwm.  Because of  the	way the	 "read" command works, the file can  reside in	your  personal	fvwm
       user  directory,	 or  be	 in the fvwm data directory.  See the description of the read command in the
       fvwm man page for more information about the environment variable $FVWM_USERDIR.

       Then FvwmForm reads the rest of the configuration fvwm has stored up.  Fvwm stores  configuration  on
       an  ongoing basis.  The initial configuration comes from the .fvwm2rc file.  Other sources, including
       "Read" commands can define a form.

       When letting  FvwmForm and fvwm	read files, remember that these files  contain	commands   that	 can
       execute shell commands,	so  you should be careful about setting permissions on these files.

       When  FvwmForm  is  invoked  with a window context, e.g. from a window menu, all commands it sends to
       Fvwm will have that window context.  This would allow FvwmForm to control the window  it	 is  invoked
       from.

       After  all  the configuration commands have been read, FvwmForm displays the form defined by the com‐
       mands.

DEFAULTS
       FvwmForm creates a built-in form named "FvwmForm-Form" that creates a file called ".FvwmForm".	This
       file  contains  saved  default form colors and fonts.  Other forms use these defaults unless they are
       overridden within the form.

       The default creating form would normally be invoked from a "module menu".  For example, if  you	call
       your module menu "Module-Popup", you would add the line:
       AddToMenu "Module-Popup" "FvwmForm Defaults" FvwmForm FvwmForm-Form
       When you select "FvwmForm Defaults" from your module menu, a form is displayed that shows the current
       defaults	 and  allows  you to change them.  If you activate the "Save Restart Me" button, the ".Fvwm‐
       Form" file is written and "FvwmForm-Form" exits and restarts to show the new defaults.

       An example of what this file might contain after a save is:
	 # This file last created by FvwmForm-Form on Sun Nov 28 11:18:26 EST 1999.
	 *FvwmFormDefault: Font 10x20
	 *FvwmFormDefault: InputFont 8x13bold
	 *FvwmFormDefault: ButtonFont 10x20
	 *FvwmFormDefault: TimeoutFont 10x20
	 *FvwmFormDefault: Fore white
	 *FvwmFormDefault: Back cornflowerblue
	 *FvwmFormDefault: Colorset -1
	 *FvwmFormDefault: ItemFore green
	 *FvwmFormDefault: ItemBack gray40
	 *FvwmFormDefault: ItemColorset -1
	 *FvwmFormDefault: ButtonPointer hand2
	 *FvwmFormDefault: ButtonInPointer star
	 *FvwmFormDefault: InputPointer gumby
	 *FvwmFormDefault: ButtonPointerFore blue
	 *FvwmFormDefault: ButtonPointerBack gray
	 *FvwmFormDefault: ButtonInPointerFore gray
	 *FvwmFormDefault: ButtonInPointerBack blue
	 *FvwmFormDefault: InputPointerFore
	 *FvwmFormDefault: InputPointerBack
       The commands in this file are just like any other  FvwmForm  command  except  that  they	 start	with
       "*FvwmFormDefault".

       FvwmForm only reads the file ".FvwmForm" the first time it is started or after the file is changed by
       "FvwmForm-Form".	  It  does so by sending the command "*FvwmFormDefault: Read x". With "x" set to "y"
       or "n".	"n" makes FvwmForm send a "read .FvwmForm quiet" command to fvwm.

VARIABLE SUBSTITUTION
       If you supply variables and values on the command line used to start FvwmForm (like this):

       Module FvwmForm MyForm ACTION=Browse "TITLE=Browse Form"

       Then all FvwmForm input commands undergo variable substitution.	The variables from the command	line
       are  exported.  Then every command gets expanded using the variables from the environment.  For exam‐
       ple, assuming the above invocation of "MyForm", commands would be changed like this:

       Before  *MyForm: Text "$TITLE, Home $HOME, Going to $ACTION"
       After   *MyForm: TEXT "Browse Form, Home /home/me, Going to Browse"

       Using this facility should make it possible for one form to be used for different sets of input data.

CONFIGURATION
       The following commands can be set in the .fvwm2rc file or thru any of the other ways  that  fvwm	 can
       accept  commands.   The simplest technique is to create a file in the read-only architecture-indepen‐
       dent data directory, [PREFIX/share/fvwm] or your personal fvwm directory [$HOME/.fvwm], that  matches
       the form alias.

       In the following paragraphs the string "FvwmForm" would normally be the form alias.

       FvwmForm reads commands before the form is ever displayed, and while the form is being displayed.

       The following commands are accepted before the form is displayed:
       Back
       Button
       ButtonFont
       ButtonInPointer
       ButtonInPointerFore
       ButtonInPointerBack
       ButtonPointer
       ButtonPointerFore
       ButtonPointerBack
       Choice
       Command
       Colorset
       Font
       Fore
       GrabServer
       Input
       InputFont
       InputPointer
       ItemBack
       ItemColorset
       ItemFore
       InputPointerFore
       InputPointerBack
       Line
       Message
       PadVText
       Position
       Selection
       Separator
       Text
       Timeout
       TimeoutFont
       Title
       UseData
       WarpPointer

       The following commands are accepted while the form is displayed:
       Map
       Stop
       UnMap

       The  "Map",  "UnMap"  and "Stop" facility is under development and is currently not explained in this
       document, since it is likely to change.

       The order of the options DOES matter.  The first background text color, "*FvwmFormBack",	 encountered
       before a displayable item sets the default background color for the entire form.

       Other than that, colors, fonts, text, choices and buttons can be intermixed in any order.  The are no
       builtin limits on form size, number of items on a form, or number of fonts or colors used.

       *FvwmForm: GrabServer
	   This	 option makes FvwmForm grab the mouse pointer on startup.  This feature is useful for things
	   like logout verification.

       *FvwmForm: WarpPointer
	   This option makes FvwmForm warp the mouse pointer into its window on startup.  It saves the	user
	   some mouse-travelling.

       *FvwmForm: Geometry geometry
	   Specifies  the FvwmForm window location.  This is similar to what the Position option does but is
	   more flexible.

       *FvwmForm: Position x y
	   Puts the FvwmForm window at location (x, y) on the screen.  By convention, a negative x (y) value
	   measures distance from the right (bottom) of the screen.

	   If this option is omitted, FvwmForm starts at the center of the screen.

       *FvwmForm: Colorset n
	   Tells the module to use colorset n.

       *FvwmForm: Back color
	   Specifies the background color of the FvwmForm window and any text  in  the	window.	  The  first
	   background  color FvwmForm reads determines the overall screen background color. Switches off the
	   Colorset option.  See DEFAULTS.

       *FvwmForm: Fore color
	   Specifies the foreground color for displaying text labels.  Switches	 off  the  Colorset  option.
	   See DEFAULTS.

       *FvwmForm: ItemColorset n
	   Tells the module to use colorset n for items.

       *FvwmForm: ItemBack color
	   Specifies  the  background  color  for the text input windows, and the buttons.  Buttons are dis‐
	   played as 3D depressable buttons.  Inputs are displayed as  3D  indented  fields.   Medium  shade
	   background colors work best.	 Switches off the ItemColorset option.	See DEFAULTS.

       *FvwmForm: ItemFore color
	   Specifies the foreground color for the text input strings and button text. Switches off the Item‐
	   Colorset option.  See DEFAULTS.

       *FvwmForm: Font font
	   Specifies the font for displaying plain text.  See DEFAULTS.

       *FvwmForm: ButtonFont font
	   Specifies the font for text in the action buttons.  See DEFAULTS.

       *FvwmForm: InputFont font
	   Specifies the font for text input.  See DEFAULTS.

       *FvwmForm: TimeoutFont font
	   Specifies the font for display the timeout counter and related text.	 See DEFAULTS.

       *FvwmForm: Line justification
	   Starts  a  new  line.  A line can contain any number of text, input, buttons and choice items.  A
	   FvwmForm window can have any number of lines.  The width of the window is  that  of	the  longest
	   line.

	   Justification of items in the line is specified by justification, which can be one of the follow‐
	   ing:

       left	       Items are justified to the left of the window.

       right	       Items are justified to the right of the window.

       center	       Items are placed in the center of the window.

       expand	       If there is only one item in the line, the item is centered in the window.  If two or
		       more items are present, they are spread to fill the whole width of the window.

       *FvwmForm: Message
	   Defines  a text area on the form that contains the last error message from fvwm.  For purposes of
	   determining form size, the message area is considered to be 80 bytes long.  Its actual length  is
	   the	same  as the message received.	If the message exceeds 80 bytes, you can see the rest of the
	   message by resizing the form.

	   You should not attempt to put any text, buttons or input fields on the same line after a  message
	   field.  Messages greater than 80 bytes will overlay the remainder of the line.

       *FvwmForm: PadVText Pixels
	   The number of pixels used as vertical padding between text items, line to line.  The default is 6
	   which looks good on lines containing text intermixed with input boxes, choices or buttons.

	   For straight text, such as might appear on a help form, padding of zero looks better.

	   (There are lots of other padding values used in form layout which can't currently be changed with
	   commands.)

       *FvwmForm: Text string
	   Displays  string  as	 plain	text.	Line breaks must be achieved by multiple *FvwmForm: Line and
	   *FvwmForm: Text options.  Blanks may be used to provide extra padding between items.

       *FvwmForm: Title string
	   Displays string as the window's title.  The string must be enclosed in double quotes.  Using this
	   command with anything other than a string enclosed in quotes creates a blank title.	If this com‐
	   mand is not used, the window title is the form alias.

       *FvwmForm: Input name size init_string
	   Specifies a text input item with name name.	A sub window of size characters in width is used for
	   editing.  If init_string is present, it is the initial string when FvwmForm starts or resets	 it‐
	   self.  The default initial string is "".

	   You	can  mouse  paste into an input field using button 2.  Buttons 1 and 3 move the cursor in an
	   input field.

	   Input fields are always in insert mode, overtyping is not supported.

	   Emacs type keystrokes are supported.

	   Control-a, Home and Begin move to the front of an input field.  Control-e and End move to the end
	   of an input field.  Control-b and Left move left in an input field.	 Control-f  and	 Right	move
	   right  in an input field.  Control-p, Up, and Shift-Tab move to a previous input field if any, if
	   the form has one input field, recall previous value.	 Control-n, Down, Return, Line-feed and	 Tab
	   move to the next input field if any, if the form has one input field, for control-n and Down, re‐
	   store  previous  input  value.   Control-h  moves backward in an input field erasing a character.
	   Control-d and Delete delete the next character in an input field.  Control-k erases for the	cur‐
	   sor to the end of an input field.  Control-u erases the entire input field.

	   When	 a  form  executes  a  command, all the input values are saved in a ring of input history 50
	   items deep.

	   Meta(mod2)-"<" retrieves the previous value of an input field.  Meta(mod2)-">" retrieves the next
	   value of an input field.

	   (For forms with one input field, use the much easier arrow keys.)

       *FvwmForm: Selection name type
	   This option starts a selection item with name name.	Its choices are specified in following	con‐
	   figuration commands.	 The option type is one of the following:

       single	       The selections are mutually exclusive.

       multiple	       This is a multiple-choice selection.

       *FvwmForm: Separator
	   Draws a 2 pixel shaded line across the form as a visual indication of a separate area.

       *FvwmForm: Choice name value on | off string
	   Specifies  a choice for a proceeding selection.  The choice item has a name and a value these are
	   used in commands.  See *FvwmForm: Command.  The string is displayed to the right  of	 the  choice
	   button as a label.

	   The	choice assumes the specified initial state ("on" means selected) when FvwmForm starts or re‐
	   sets.  If the selections are mutually exclusive, FvwmForm does NOT detect inconsistencies in	 the
	   initial  states  of	the choices, i.e. two or none of the choices can be selected.  However, once
	   the user selects a choice, FvwmForm	assures only one is selected.

       *FvwmForm: Button type string [key]
	   This option specifies an action button.  The button has string as a label, and executes a set  of
	   Fvwm command when it is activated.  The commands are the following *FvwmForm: Commands.

	   The optional key specifies a keyboard shortcut that activates the button.  It is in either a con‐
	   trol	 character,  specified as ^@, ^A, ..., ^_, or a function key, specified as F1, F2, ..., F35.
	   Control keys that are used for cursor movement in text input fields cannot activate any  buttons,
	   with	 the exception of TAB (^I), RETURN (^M), LINEFEED (^J), which can activate a button when the
	   cursor is in the last text input field.

	   The behavior of the button is determined by type:

       continue	       FvwmForm continues execution after sending the commands.

       restart	       After sending the commands, FvwmForm resets all the values to the initial  ones,	 and
		       then continues execution.

       quit	       FvwmForm quits after sending the commands.

       *FvwmForm: Command command
	   This option specifies an Fvwm command associated with the current button.  There can be more than
	   one	command	 attached to a button.	Commands that appear before any *FvwmForm: Button option are
	   executed at start-up time.  This is usually a beep that gets the user's attention.

	   Commands starting with an exclamation mark (!) are executed by FvwmForm, all other  commands	 are
	   sent	 to  Fvwm for execution.  Before sending each command to Fvwm, FvwmForm recognizes variables
	   of the following forms, and supply values to them.

       $(name)	       If name corresponds to a text input field, the result is	 the  user's  input  string.
		       The  special  chars  single-quote, double-quote and backslash are preceded by a back‐
		       slash.

		       If name corresponds to a choice, the result is the value of the choice (as  specified
		       in  *FvwmForm: Choice) if the choice is selected.  If the choice is not selected, the
		       result is a blank string.

		       If name corresponds to a selection, the result will be a list of the selected  values
		       of all its choices separated by spaces.

       $(name?string)  If  name	 is  a	text input field and its value is not an empty string, the result is
		       string, with recursive variable substitution applied.  If the input value  is  empty,
		       the result is empty.

		       If name is a choice and it is selected, the result is string, with recursive variable
		       substitution applied.  If the choice is not selected, the result is empty.

       $(name!string)  The same as the above, except that the converse conditions are taken.

		       When using the "?" and "!" forms to pass a string, the string is delimited by a right
		       parenthesis.   If  you need to put a right parenthesis in a string, precede the right
		       parenthesis with a backslash.

       *FvwmForm: UseData datafile leading
	   Tells FvwmForm to read a data file and extract data from module commands that match the "leading"
	   argument and an input, choice, or selection variable in a form.

	   This lets a form display current fvwm module configuration data.  For  an  example  of  how	this
	   works,  examine  the file "FvwmForm-Rlogin" which is installed in read-only architecture-indepen‐
	   dent data directory, [PREFIX/share/fvwm] and shown below.

	   For choices, the setting of the button is represented as the word "on",  all other values  for  a
	   setting are treated as off.

	   For	selections, the setting of each choice button is determined by matching the current value of
	   the selection against each choice.  Currently, this only works correctly for selections that	 al‐
	   low a single choice.

       *FvwmForm: ButtonPointer pointername
	   Change  the default mouse pointer (hand2) used when hovering over a button.	The pointername must
	   be one of the names defined in the include file X11/cursorfont.h (without the XC_  prefix).	 See
	   DEFAULTS.

       *FvwmForm: ButtonInPointer pointername
	   Change the default mouse pointer (hand1) used while a button is pressed in.	The pointername must
	   be  one  of the names defined in the include file X11/cursorfont.h (without the XC_ prefix).	 See
	   DEFAULTS.

       *FvwmForm: InputPointer pointername
	   Change the default mouse pointer (xterm) used while the pointer is over a text field.  The point‐
	   ername must be one of the names defined in the include file	X11/cursorfont.h  (without  the	 XC_
	   prefix).  See DEFAULTS.

       *FvwmForm: ButtonPointerFore|Back color
	   Change  the default mouse pointer foreground and background colors used when hovering over a but‐
	   ton.	 See DEFAULTS.

       *FvwmForm: ButtonInPointerFore|Back color
	   Change the default mouse pointer foreground and background colors used while a button is  pressed
	   in.	See DEFAULTS.

       *FvwmForm: InputPointerFore|Back color
	   Change  the default mouse pointer foreground and background colors used while the pointer is over
	   a text field.  See DEFAULTS.

       *FvwmForm: Timeout seconds command "text"
	   Set up FvwmForm to time out after the amount of seconds specified.  When  the  timer	 hits  zero,
	   command  executes.  The text field is displayed much like a Text field, except that a '%%' in the
	   line is replaced automatically by the amount of time left on the timer.  The value  gets  updated
	   every second as the timer counts down.  There can only be one timeout field per form.

EXAMPLES
       All  of	the following "examples" are installed in the read-only architecture-independent data direc‐
       tory, [PREFIX/share/fvwm], during fvwm installation.

       The following commands create a menu to invoke the examples:

       DestroyMenu Forms
       AddToMenu Forms "&Q. QuitVerify" Module FvwmForm FvwmForm-QuitVerify
       AddToMenu Forms "&C. Capture"	Module FvwmForm FvwmForm-Capture
       AddToMenu Forms "&R. Rlogin"	Module FvwmForm FvwmForm-Rlogin
       AddToMenu Forms "&T. Talk"	Module FvwmForm FvwmForm-Talk

EXAMPLE 1 - Quit Verify
       This example simulates the mwm way of confirming logout.	 Return does the logout, Escape cancels	 lo‐
       gout.  It times out after 20 seconds and performs the equivalent of the 'Logout' button.
       DestroyModuleConfig  FvwmForm-QuitVerify: *
       *FvwmForm-QuitVerify: GrabServer
       *FvwmForm-QuitVerify: WarpPointer
       *FvwmForm-QuitVerify: Command	 Beep
       *FvwmForm-QuitVerify: Line	 center
       *FvwmForm-QuitVerify: Text	 "Do you really want to logout?"
       *FvwmForm-QuitVerify: Line	 expand
       *FvwmForm-QuitVerify: Button	 quit "Logout" ^M
       *FvwmForm-QuitVerify: Command	 Quit
       *FvwmForm-QuitVerify: Button	 restart   "Restart" ^R
       *FvwmForm-QuitVerify: Command	 Restart
       *FvwmForm-QuitVerify: Button	 quit "Cancel" ^[
       *FvwmForm-QuitVerify: Command	 Nop
       *FvwmForm-QuitVerify: Timeout	 20 Quit "Automatic logout will occur in %% seconds."

EXAMPLE 2 - Remote Login
       This example lets the user type in a host name, an optional user name, and opens an xterm window from
       the remote host.
       DestroyModuleConfig  FvwmForm-Rlogin: *
       *FvwmForm-Rlogin: WarpPointer
       *FvwmForm-Rlogin: Line	      center
       *FvwmForm-Rlogin: Text	      "Login to Remote Host"
       *FvwmForm-Rlogin: Line	      center
       *FvwmForm-Rlogin: Text	      "Host:"
       *FvwmForm-Rlogin: Input	      HostName	      20      ""
       *FvwmForm-Rlogin: Line	      center
       *FvwmForm-Rlogin: Selection    UserSel single
       *FvwmForm-Rlogin: Choice	      Default Default on      "same user"
       *FvwmForm-Rlogin: Choice	      Custom  Custom  off     "user:"
       *FvwmForm-Rlogin: Input	      UserName	      10      ""
       *FvwmForm-Rlogin: Line	      expand
       *FvwmForm-Rlogin: Button	      quit    "Login"	      ^M
       *FvwmForm-Rlogin: Command      Exec exec ssh $(Custom?-l $(UserName)) $(HostName) xterm -T xterm@$(HostName) -display $HOSTDISPLAY &
       # Before saving the data, remove any previously saved data:
       *FvwmForm-Rlogin: Command DestroyModuleConfig FvwmForm-RloginDefault: *
       # The "Login" button causes a login and a saving of the current data:
       *FvwmForm-Rlogin: Command !(			   /bin/echo \
	 "# Created by FvwmForm-Rlogin on: `/bin/date`.";  /bin/echo \
	 '*FvwmForm-RloginDefault: HostName $(HostName)';  /bin/echo \
	 '*FvwmForm-RloginDefault: UserName $(UserName)';  /bin/echo \
	 '*FvwmForm-RloginDefault: Default $(Default?on)'; /bin/echo \
	 '*FvwmForm-RloginDefault: Custom $(Custom?on)' \
       ) > ${FVWM_USERDIR}/.FvwmForm-Rlogin
       *FvwmForm-Rlogin: Button	      restart "Reset"
       *FvwmForm-Rlogin: Button	      quit    "Cancel"	      ^[
       *FvwmForm-Rlogin: Command      Nop
       # Tell FvwmForm to read vars from the .FvwmForm-RloginDefault file:
       *FvwmForm-Rlogin: UseData .FvwmForm-Rlogin *FvwmForm-RloginDefault

EXAMPLE 3 - Capture Window
       This example provides a front-end to xwd, xwud, and xpr.
       DestroyModuleConfig  FvwmForm-Capture: *
       *FvwmForm-Capture: Line	     center
       *FvwmForm-Capture: Text	     "Capture Window"
       *FvwmForm-Capture: Line	     left
       *FvwmForm-Capture: Text	     "File: "
       *FvwmForm-Capture: Input	     file	     25	     "/tmp/Capture"
       *FvwmForm-Capture: Line	     left
       *FvwmForm-Capture: Text	     "Printer: "
       *FvwmForm-Capture: Input	     printer	     20	     "$PRINTER"
       *FvwmForm-Capture: Line	     expand
       *FvwmForm-Capture: Selection  PtrType single
       *FvwmForm-Capture: Choice     PS	     ps	     on	     "PostScript"
       *FvwmForm-Capture: Choice     Ljet    ljet    off     "HP LaserJet"
       *FvwmForm-Capture: Line	     left
       *FvwmForm-Capture: Text	     "xwd options:"
       *FvwmForm-Capture: Line	     expand
       *FvwmForm-Capture: Selection  Options multiple
       *FvwmForm-Capture: Choice     Brd     -nobdrs off     "No border"
       *FvwmForm-Capture: Choice     Frm     -frame  on	     "With frame"
       *FvwmForm-Capture: Choice     XYZ     -xy     off     "XY format"
       *FvwmForm-Capture: Line	     expand
       *FvwmForm-Capture: Button     continue	     "Capture"	     ^M
       *FvwmForm-Capture: Command    Exec exec xwd -out $(file) $(Options) &
       *FvwmForm-Capture: Button     continue	     "Preview"
       *FvwmForm-Capture: Command    Exec exec xwud -in $(file) &
       *FvwmForm-Capture: Button     continue	     "Print"
       *FvwmForm-Capture: Command    Exec exec xpr -device $(PtrType) $(file) | lpr -P $(printer) &
       *FvwmForm-Capture: Button     quit	     "Quit"

EXAMPLE 4 - Talk Form
       This  example  provides	a  replacement for the module FvwmTalk.	 There are 2 forms, "FvwmForm-Talk."
       which executes commands, or sends commands to fvwm for execution, and "FvwmForm-TalkHelp."  which  is
       a help form.

       In  the help form, notice how vertical line spacing is changed.	Normal FvwmForm line spacing assumes
       text is intermixed with buttons, help forms require different spacing.

       # FvwmForm-Talk - Basic replacement for FvwmTalk
       DestroyModuleConfig  FvwmForm-Talk: *
       *FvwmForm-Talk: WarpPointer
       # Layout
       *FvwmForm-Talk: Line	    center
       *FvwmForm-Talk: Text	    "Talk to Fvwm"
       *FvwmForm-Talk: Line	    left
       *FvwmForm-Talk: Text	    "Command:"
       *FvwmForm-Talk: Input	    Command 80 ""
       *FvwmForm-Talk: Line	    left
       *FvwmForm-Talk: Text	    "Msg:"
       *FvwmForm-Talk: Message
       *FvwmForm-Talk: Line	    center
       # Buttons
       *FvwmForm-Talk: Button	    restart    "Return - Execute"	  ^M
       *FvwmForm-Talk: Command	      $(Command)
       *FvwmForm-Talk: Button	    continue	"F1 - Help" F1
       *FvwmForm-Talk: Command	      Module FvwmForm FvwmForm-TalkHelp
       *FvwmForm-Talk: Button	    restart	"F3 - Reset input" F3
       *FvwmForm-Talk: Command	      Nop
       *FvwmForm-Talk: Button	    quit	"F4 - Dismiss"	F4
       *FvwmForm-Talk: Command	      Nop

       # FvwmForm-TalkHelp - Help Text for FvwmForm-Talk
       DestroyModuleConfig  FvwmForm-TalkHelp: *
       *FvwmForm-TalkHelp: WarpPointer
       # Layout
       *FvwmForm-TalkHelp: Line	   center
       *FvwmForm-TalkHelp: Text	   "Talk to Fvwm - Help"
       *FvwmForm-TalkHelp: Line	   left
       *FvwmForm-TalkHelp: Text	   " "
       *FvwmForm-TalkHelp: Line	   left
       *FvwmForm-TalkHelp: PadVText 0
       *FvwmForm-TalkHelp: Text	   "Enter commands in the
       *FvwmForm-TalkHelp: Line	   left
       *FvwmForm-TalkHelp: Text	   "Commands beginning with
       *FvwmForm-TalkHelp: Line	   left
       *FvwmForm-TalkHelp: Text	   "shell as a sub-process of the form."
       *FvwmForm-TalkHelp: Line	   left
       *FvwmForm-TalkHelp: Text	   "All other commands are sent to fvwm for execution."
       *FvwmForm-TalkHelp: Line	   left
       *FvwmForm-TalkHelp: Text	   ""
       *FvwmForm-TalkHelp: Line	   left
       *FvwmForm-TalkHelp: Text	   "Fvwm error messages are shown on the
       *FvwmForm-TalkHelp: Line	   left
       *FvwmForm-TalkHelp: Text	   ""
       # Buttons
       *FvwmForm-TalkHelp: Line	   center
       *FvwmForm-TalkHelp: Button  quit	   "Return - Dismiss"	      ^M
       *FvwmForm-TalkHelp: Command   Nop

BUGS AND LIMITATIONS
       FvwmForm is a fairly simple method of providing input.  There is no input validation facility.  Fvwm‐
       Form has no way of dealing with lists.

       Report bugs to the fvwm-workers list.

COPYRIGHTS
       FvwmForm is original work of Thomas Zuwei Feng (ztfeng@math.princeton.edu).

       Copyright Feb 1995, Thomas Zuwei Feng.  No guarantees or warranties are provided or  implied  in	 any
       way whatsoever.	Use this program at your own risk.  Permission to use, modify, and redistribute this
       program is hereby given, provided that this copyright is kept intact.

CHANGES
       During  the  fall  of  1998,  Dan  Espen removed all form size limits, added unlimited font and color
       changing, form spacing control, configuration file reading, global control of appearance, synchronous
       command execution, Error message display, variable substitution, configurable pointers, and  lots  of
       other damage.  No additional copyright is imposed.

Fvwm					   19 October 2022 (2.7.0)				 FvwmForm(1)