Man Linux: Main Page and Category List

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 number 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 selections, 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  configuration
       commands starting with "*Rlogin", and reads the optional  configuration
       file "Rlogin".

       All  forms, regardless of alias,  scan first for configuration commands
       that start with  "*FvwmFormDefault".   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 commands.

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  ".FvwmForm"
       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 example,
       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-independent  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
            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. See FvwmTheme.

       *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. See FvwmTheme.

       *FvwmForm: ItemBack color
           Specifies the background color for the text input windows, and  the
           buttons.   Buttons are displayed 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 ItemColorset 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 following:

       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  command
           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
           itself.  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, restore 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 cursor 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 configuration commands.  The option type
           is one of the following:

       single          The selections are mutually exclusive.

       multiple        This is a multiple-choice selection.

       *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 resets.  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 control 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
                       backslash.

                       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-independent
           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  allow  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  pointername  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 button.  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  directory,  [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 logout.  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.  FvwmForm 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.