NAME
FvwmIconMan - an Fvwm Icon Manager
SYNOPSIS
FvwmIconMan is spawned by fvwm, so no command line invocation 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 everything 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 buttons. 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 should be placed in the InitFunction and ResetFunction declarations, or it can be bound to a menu, mouse button, 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 configuration 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 number 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 current 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 buttons.
- *FvwmIconMan*[id*]geometry geometry
-
Specified the geometry of the manager. If the geometry is specified with a negative y coordinate, then the window manager will grow upwards. Otherwise, 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 backcolor]
-
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 to ignore. If only the show list is given, then that manager will show only the windows in the 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 handled 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 managers, 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 argument results in Focus warping the cursor to the target window, and the value of 0 makes Focus not warp the cursor. 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 manager is set to grow upwards, on some machines it may wander occasionally.
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 gracefully as it should.
AUTHOR
Brady Montz ([email protected]).
THANKS
Thanks to David Berson ([email protected]).