           FvwmIconMan - an Fvwm Icon Manager

## SYNOPSIS

           FvwmIconMan is spawned by fvwm, so no command line invoca-
           tion will work.

## DESCRIPTION

           FvwmIconMan is an icon manager modeled after the TWM  icon
           manager.   The  user may have multiple icon managers, each
           of which are armed with a list of window  types  which  it
           manages.  For example, the user may have one manager which
           lists only emacs windows, and another which  lists  every-
           thing else. You may also specify what resolution each icon
           manager uses, for example, one  icon  manager  may  manage
           windows on all desks, and another may manage only those on
           the current desk, or page.

           Unlike the TWM icon manager,  FvwmIconMan  is  limited  in
           only  having  the icons listed vertically. Also unlike the
           TWM icon manager, it sports a three dimensional look (when
           the display depth is sufficient).

           You  may  bind  fvwm functions to mouse buttondown events,
           and to the event where the mouse enters one  of  the  but-
           tons.  For  example, you could bind the first mouse button
           to the Iconify function, and the second  mouse  button  to
           the Identify function.

           FvwmIconMan  can  be set to display which window currently
           has the keyboard focus, and by binding  the  select  event
           (see  below)  to  the fvwm Focus function, you can emulate
           the TWM icon manager's behavior. Unfortunately, the  Focus
           function  warps  the  cursor  to  the  target window. This
           FvwmIconMan distribution includes a patch to  fvwm  2.0.41
           which  modifes  the  behavior of Focus so that it takes an
           argmument to control whether or not it warps the cursor.

## INITIALIZATION

           During initialization,  FvwmIconMan  searches  though  the
           fvwm   configuration   file  for  the  options  which  are
           described below. It is highly recommended  that  you  make
           FvwmIconMan  be  a  sticky window. And if you want to make
           use of the followfocus option, and/or binding an action to
           Focus, then you should make FvwmIconMan clicktofocus.

## INVOCATION

           FvwmIconMan  can  be invoked by inserting the line 'Module
           FvwmIconMan' in the .fvwmrc file. If FvwmIconMan is to  be
           spawned  during  fvwm's  initialization,  then  this  line
           or keystroke to invoke it  later.  FvwmIconMan  should  be
           placed  in the ModulePath (defined in the .fvwmrc file) in
           order for fvwm to find it.

## CONFIGURATION OPTIONS

           With the exception of the nummanagers option, all  of  the
           options  may  be  defined  on a per-manager basis. So, for
           example, the user may have his emacs manager  with  a  red
           foreground,  and his xterm manager with a blue one. A con-
           figuration line may therefore have one of two forms:

           *FvwmIconMan*optionname optionvalue
                  To specify that  the  optionname  takes  the  value
                  optionvalue for all managers.

           *FvwmIconMan*managerid*optionname optionvalue
                  To  specify  that  the  option optionname takes the
                  value optionvalue for manager managerid.

                  The following options may be specified:

           *FvwmIconMan*nummanagers num
                  num is a positive integer specifying the total num-
                  ber of icon managers.  Since FvwmIconMan would like
                  to know how many managers there are before handling
                  any  manager  specific  options,  this  should come
                  first. Default is 1.

           *FvwmIconMan*[id*]resolution resolution
                  Specifies when the manager will  display  an  entry
                  for  a  certain  window. resolution may take one of
                  the following values: global,  desk,  or  page.  If
                  global,  then  all  windows of the appropriate type
                  (see the show and dontshow options below)  will  be
                  shown. If desk, then only those windows on the cur-
                  rent desk will be down.  And  if  page,  then  only
                  those  windows  on  the current page will be shown.
                  Default is global.

           *FvwmIconMan*[id*]showtitle boolean
                  If true, then print the window title names  in  the
                  manager,  if  false,  then  print  the  icon names.
                  Default is false.

           *FvwmIconMan*[id*]font font
                  Specifies the font to be used for labeling the but-
                  Specified the geometry of the manager. If the geom-
                  etry is specified with  a  negative  y  coordinate,
                  then  the  window manager will grow upwards. Other-
                  wise, it will shrink downwards.

           *FvwmIconMan*[id*]foreground foreground
                  Specifies the default foreground color.

           *FvwmIconMan*[id*]background background
                  Specifies the default background color.

           *FvwmIconMan*[id*]plainbutton style [forecolor backcolor]
                  Specifies how normal buttons look. style may be one
                  of  flat, up, or down, and describes how the button
                  is drawn. The color options are both optional,  and
                  if not set, then the default colors are used. If on
                  a monochrome  screen,  then  the  style  option  is
                  ignored, but must still be set.

           *FvwmIconMan*[id*]selectbutton style [forecolor backcolor]
                  Same as the plainbutton option, but  specifies  the
                  look of buttons when the mouse is over them.

           *FvwmIconMan*[id*]focusbutton style [forecolor backcolor]
                  Same  as  the plainbutton option, but specifies the
                  look of buttons whose  windows  have  the  keyboard
                  focus.

           *FvwmIconMan*[id*]focusandselectbutton   style  [forecolor
                  back- color]
                  Same  as  the plainbutton option, but specifies the
                  look of buttons which are both selected,  and  have
                  the keyboard focus.

           *FvwmIconMan*[id*]action event response[,response...]
                  Tells  FvwmIconMan to send the commands in response
                  to fvwm when event is done. Event may take  on  one
                  of  the  values: select, click1, click2, or click3.
                  Default is iconify for all three  buttons  and  nop
                  for select.  Select refers to the cursor entering a
                  button in the manager.

                  The two following options control which windows get
                  handled  by  which  managers. A manager can get two
                  lists, one of windows to show, and one  of  windows
                  list.  If only the dontshow list is given, then the
                  manager will show all windows except those  in  the
                  list.  If  both lists are given, then a window will
                  be shown if it is not in the dontshow list, and  in
                  the  show  list.  And  finally,  if neither list is
                  given, then the manager will  handle  all  windows.
                  Each  list  is  made  up  of  patterns  of the form
                  type=pattern, where type is one of class, resource,
                  title, or icon, and pattern is a regular expression
                  of the same format used in the fvwm style  command.
                  Quotes  around the pattern will be taken as part of
                  the regular expression. If a window could  be  han-
                  dled  by  more  than  one manager, then the manager
                  with the lowest id gets it.

           *FvwmIconMan*[id*]show pattern list
                  If a window matches one  of  the  patterns  in  the
                  list, then it may be handled by this manager.

           *FvwmIconMan*[id*]dontshow pattern list
                  If  a  window  matches  one  of the patterns in the
                  list, then it may not be handled by this manager.

           *FvwmIconMan*[id*]followfocus boolean
                  If boolean is  true,  then  the  button  appearance
                  reflects which window currently has focus.  Default
                  is false.

           *FvwmIconMan*[id*]sort boolean
                  If boolean is true, then the icon manager  is  kept
                  sorted. Default is true.

## SAMPLE CONFIGURATION

           This  first  example  is  of  a the simplest invocation of
           FvwmIconMan, which only has one manager, and  handles  all
           windows:

           ##############################################################
           # Load any modules which should be started during
           # fvwm initialization
           ModulePath /usr/lib/X11/fvwm:/usr/bin/X11
           Module FvwmIconMan

           # Make FvwmIconMan title-bar-less, sticky, and give it an icon
           Style "Fvwm*"      Icon toolbox.xpm,NoTitle,NoHandles,Sticky
           Style "FvwmIconMan" HandleWidth 5, Handles, BorderWidth 5
           ##############################################################
           #Definitions used by the modules

           *FvwmIconMan*nummanagers 1
           *FvwmIconMan*resolution  global
           *FvwmIconMan*background  slategrey
           *FvwmIconMan*foreground  white
           *FvwmIconMan*font        7x13
           *FvwmIconMan*geometry    194x100-0+73

           This example is my personal configuration. It has two man-
           agers, one for emacs and one for  everything  else,  minus
           things  with  no  icon  title. Only windows on the current
           page are displayed. Notice the argument to  Focus  in  the
           select  action.  This only works if you apply the included
           patch for fvwm. A nonzero argument to focus, or  no  argu-
           ment  results  in  Focus  warping the cursor to the target
           window, and the value of 0 makes Focus not warp  the  cur-
           sor.  Note how the geometry and show options are specified
           per manager, and the others are common to all:

           *FvwmIconMan*numManagers 2
           *FvwmIconMan*Resolution  page
           *FvwmIconMan*background  steelblue
           *FvwmIconMan*foreground  white
           *FvwmIconMan*font        7x13
           *FvwmIconMan*action      click1 Iconify
           *FvwmIconMan*action      click2 Iconify
           *FvwmIconMan*action      click3 Module "FvwmIdent" FvwmIdent
           *FvwmIconMan*action      select Focus 0
           *FvwmIconMan*showtitle   false
           *FvwmIconMan*followfocus true
           *FvwmIconMan*sort        true
           *FvwmIconMan*plainbutton          up white steelblue
           *FvwmIconMan*selectbutton         down white steelblue
           *FvwmIconMan*focusbutton          up white brown
           *FvwmIconMan*focusandselectButton down white brown

           *FvwmIconMan*1*geometry   194x100-204-90
           *FvwmIconMan*1*show       resource=emacs resource=gemacs

           *FvwmIconMan*2*geometry   194x100-0-90
           *FvwmIconMan*2*dontshow   icon=Untitled

## UNFINISHED BUSINESS

           There is one bug that I know  of.  A  honest  to  goodness
           solution  to  this would be appreciated. When an icon man-

           When  a  manager  is  in  page resolution, and the page is
           switched, the manager updates the windows after every fvwm
           event  comes  in,  causing  it  to rapidly grow and shrink
           until it finally settles into the new configuration.  This
           doesn't happen when in desk resolution.

           It doesn't handle windows without resource names as grace-
           fully as it should.

## AUTHOR

           Brady Montz (bradym@cs.arizona.edu).

## THANKS

           Thanks to David Berson (berson@cs.pitt.edu).