Copy purify.fvwm2rc to /tmp - add instructions in README.
[fvwm.git] / modules / FvwmIconMan / FvwmIconMan.1.in
blobd2a6ff1ae2eb8e74031168f3d0517eceda205130
1 .\" t
2 .\" @(#)@PACKAGE@-@VERSION@ @RELDATELONG@
3 .de EX          \"Begin example
4 .ne 5
5 .if n .sp 1
6 .if t .sp .5
7 .nf
8 .in +.5i
9 ..
10 .de EE
11 .fi
12 .in -.5i
13 .if n .sp 1
14 .if t .sp .5
16 .TH FvwmIconMan 1 "@RELDATELONG@ (@VERSION@)" Fvwm "Fvwm Modules"
17 .UC
18 .SH NAME
19 FvwmIconMan \- an fvwm icon manager
20 .SH SYNOPSIS
21 FvwmIconMan is spawned by fvwm, so no command line invocation will work.
23 .SH DESCRIPTION
24 FvwmIconMan is an icon manager modeled after the TWM icon manager.
25 The user may have multiple icon managers, each of which armed with
26 a list of window types which it manages. For example, the user may
27 have one manager which lists only emacs windows, and another which
28 lists everything else. You may also specify what resolution each
29 icon manager uses, for example, one icon manager may manage
30 windows on all desks, and another may manage only those on the
31 current desk, page or screen. FvwmIconMan can display the
32 miniature icons provided by fvwm for its managed windows. The
33 managers may have a maximum number of columns (and so grows
34 vertically), a maximum number of rows (and then grows
35 horizontally), or stay at a fixed size, and adjust the size of the
36 window buttons to fit (think win95's Taskbar). And when support is
37 compiled in for the X Shape extension, then the manager windows
38 may be shaped.
40 You can specify actions to be run when mouse, or key events are received. For
41 example, you could bind the first mouse button to iconify the selected window,
42 and make bindings for the arrow keys to navigate the manager window without
43 the mouse.
45 FvwmIconMan can be set to display which window currently has the keyboard
46 focus, and by binding the select event (see below) to the fvwm Focus function,
47 you can emulate the TWM icon manager's behavior.
49 .SH INITIALIZATION
50 During initialization, FvwmIconMan searches though the fvwm configuration file
51 for the options which are described below. It is highly recommended that you
52 make FvwmIconMan be a sticky window. And if you want to make use of the
53 followfocus option, and/or binding an action to Focus, then you should make
54 FvwmIconMan clicktofocus. Also, when using the Shape option, it's recommended
55 that the FvwmIconMan window not be decorated at all by fvwm.
57 .SH INVOCATION
58 FvwmIconMan can be invoked by inserting the line 'Module FvwmIconMan' in
59 the .fvwm2rc file.  If FvwmIconMan is to be spawned during fvwm's
60 initialization, then this line should be placed in the StartFunction
61 declarations, or it can be bound to a menu, mouse button, or keystroke to
62 invoke it later.
64 If you wish to run FvwmIconMan in a transient mode, such as with the built in
65 window list, then pass Transient as an argument. The invocation "Module
66 FvwmIconMan Transient" will do nicely. In this mode, FvwmIconMan will pop up
67 one manager window directly under the cursor. When the mouse button is
68 released, it will execute the appropriate action, and then exit.  Things are
69 somewhat complicated by the fact that you can specify that FvwmIconMan creates
70 multiple manager windows, behavior which is unsuitable when running
71 transiently. So, when running transiently, FvwmIconMan will only create one
72 manager window. Use the manager id 'transient' to specify options for this
73 manager window.
75 FvwmIconMan may accept an alias name as an argument.
76 For example, "Module FvwmIconMan FvwmIconMan-Variant2".
78 .SH CONFIGURATION OPTIONS REFERENCE CHART
79 FvwmIconMan has acquired quite a few options. I assume others
80 share my dislike of paging though a long man page, so here is a
81 terse reference chart describing the available options. They are
82 described in more detail in the next section.
84 .ft C                   \" Courier
85 .nf
86 Name            Description                Default
87 .ft P
89 NumManagers     number of managers         1
90 Action          binds command to event     Mouse 0 N sendcommand Iconify
91 Background      default background         gray
92 ButtonGeometry  size of button in pixels
93 Colorset        default colorset
94 DontShow        list of windows to ignore
95 DrawIcons       use mini icons             false
96 FocusAndSelectButton                       flat grey black
97 FocusAndSelectColorset
98 FocusButton     style for focused buttons  up grey black
99 FocusColorset
100 FollowFocus     show which win has focus   false
101 Font                                       8x13
102 Foreground      default text color         white
103 Format          describes button label     "%c: %i"
104 IconName        manager icon name          FvwmIconMan
105 IconButton      style for icon buttons     up black grey
106 IconColorset
107 ManagerGeometry size of manager in buttons 0x1
108 MaxButtonWidth  max width of a button
109 MaxButtonWidthByColumns
110 NoIconAction    animate iconification      NOP
111 PlainButton     style for normal buttons   up black grey
112 PlainColorset
113 ReliefThickness size of button relief      2
114 Resolution      global/desk/page/screen    page
115 Reverse         normal, icon or none       none
116 SelectButton    style for selected buttons flat black grey
117 SelectColorset
118 Shape           use shape extension        false
119 Show            list of windows to show
120 ShowOnlyIcons   only icons visible         false
121 ShowNoIcons     icons are not displayed    false
122 ShowTransient   transient windows visible  false
123 ShowOnlyFocused only focused visible       false
124 Sort            keep managers sorted       name
125 SortWeight      weight for sorting
126 Tips            Tool Tips mode             none
127 TipsDelays      Tool Tips mapping delays   1000 300
128 TipsFont        Font for Tool Tips         default fvwm font
129 TipsColorset    Tool Tips Colorset         0
130 TipsFormat      describes Tips label       the Format value
131 TipsBorderWidth Tool Tips border size      1
132 TipsPlacement   Tips placement vs button   updown
133 TipsJustification Tips Just vs button      leftup
134 TipsOffsets     Tips placement Offsets     3 2
135 Title           manager title              FvwmIconMan
136 TitleButton     style for title button     raisededge black grey
137 TitleColorset
138 UseWinList      honor WinListSkip?         true
142 .SH CONFIGURATION OPTIONS
143 With the exception of the nummanagers option, all of the options may be
144 defined on a per-manager basis. So, for example, the user may have his emacs
145 manager with a red foreground, and his xterm manager with a blue one. A
146 configuration line may therefore have one of two forms:
148 .IP "*FvwmIconMan: OptionName OptionValue"
149 To specify that the \fIOptionName\fP takes the value \fIOptionValue\fP
150 for all managers.
151 .IP "*FvwmIconMan: ManagerId OptionName OptionValue"
152 To specify that the option \fIOptionName\fP takes the value \fIOptionValue\fP
153 for manager \fIManagerId\fP. \fIManagerId\fP may either be a positive integer,
154 or the string "transient". An integer id refers to managers which FvwmIconMan
155 creates when running normally, and an id of "transient" refers to the single
156 manager which FvwmIconMan creates when running transiently.
158 The old syntax, that uses an asterisk instead of white spaces
159 before \fIManagerId\fP and \fIOptionName\fP, is supported too,
160 but it is obsolete now.
163 The following options may be specified:
165 .IP "*FvwmIconMan: NumManagers \fInum\fP"
166 \fInum\fP is a positive integer specifying the total number of icon managers.
167 Since FvwmIconMan would like to know how many managers there are before
168 handling any manager specific options, this should come first. The default
169 is 1.
171 .IP "*FvwmIconMan: [id] Action \fItype\fP \fIbinding\fP"
172 Binds an FvwmIconMan command to an event. \fIType\fP may be one of the values:
173 Key, Mouse, or Select. Actions are described in the following section ACTIONS.
175 .IP "*FvwmIconMan: [id] Background \fIbackground\fP"
176 Specifies the default background color.
178 .IP "*FvwmIconMan: [id] ButtonGeometry \fIgeometry\fP"
179 Specifies the initial geometry of an individual button in pixels. If the
180 specified height is 0, then the button height is determined from the font
181 size. X and Y coordinates are ignored.
183 .IP "*FvwmIconMan: [id] Colorset \fIcolorset\fP"
184 The default colorset used. Overrides background and foreground. See FvwmTheme.
186 .IP "*FvwmIconMan: [id] DrawIcons \fIvalue\fP"
187 If your version of fvwm is capable of using mini icons, then this option
188 determines if FvwmIconMan displays the mini icons. Otherwise, it generates
189 an error message.  "true" means that mini icons are shown for iconified
190 windows, "false" that mini icons are never shown, and "always" that mini icons
191 are shown for all windows.
193 .IP "*FvwmIconMan: [id] FocusAndSelectButton \fIstyle\fP [\fIforecolor\fP \fIbackcolor\fP]"
194 Same as the plainbutton option, but specifies the look of buttons which are
195 both selected, and have the keyboard focus.
197 .IP "*FvwmIconMan: [id] FocusAndSelectColorset \fIcolorset\fP"
198 Works like focusandselectbutton but uses colorsets instead.  The style setting can
199 still only be applied with focusandselectbutton.  See FvwmTheme.
201 .IP "*FvwmIconMan: [id] FocusButton \fIstyle\fP [\fIforecolor\fP \fIbackcolor\fP]"
202 Same as the plainbutton option, but specifies the look of buttons whose
203 windows have the keyboard focus.
205 .IP "*FvwmIconMan: [id] FocusColorset \fIcolorset\fP"
206 Works like focusbutton but uses colorsets instead.  The style setting can still
207 only be applied with focusbutton.  See FvwmTheme.
209 .IP "*FvwmIconMan: [id] FollowFocus \fIboolean\fP"
210 If \fItrue\fP, then the button appearance reflects
211 which window currently has focus.  Default is false.
213 .IP "*FvwmIconMan: [id] Font \fIfont\fP"
214 Specifies the font to be used for labeling the buttons. The default is 8x13.
216 .IP "*FvwmIconMan: [id] Foreground \fIforeground\fP"
217 Specifies the default foreground color.
219 .IP "*FvwmIconMan: [id] Format \fIformatstring\fP"
220 A printf like format string which describes the string to be printed in the
221 manager window for each managed window. Possible flags are: %t, %i, %c, and
222 %r for the window's title, icon, class, or resource name, respectively.
223 The default is "%c: %i". \fBWarning\fP: m4 reserves the word \fIformat\fP,
224 so if you use m4, take appropriate action.
226 .IP "*FvwmIconMan: [id] IconName \fIiconstring\fP"
227 Specifies the window icon name for that manager window. \fIIconstring\fP
228 may either be a single word, or a string enclosed in quotes. The default is
229 "FvwmIconMan".
231 .IP "*FvwmIconMan: [id] IconButton \fIstyle\fP [\fIforecolor\fP \fIbackcolor\fP]"
232 Same as the plainbutton option, but specifies the look of buttons whose
233 windows are iconified.
235 .IP "*FvwmIconMan: [id] IconColorset \fIcolorset\fP"
236 Works like iconbutton but uses colorsets instead.  The style setting can still
237 only be applied with iconbutton.  See FvwmTheme.
239 .IP "*FvwmIconMan: [id] ManagerGeometry \fIgeometry\fP"
240 Specifies the initial geometry of the manager, in units of buttons. If
241 \fIheight\fP is 0, then the manager will use \fIwidth\fP columns, and will
242 grow vertically once it has more than \fIwidth\fP windows. Likewise, if
243 \fIwidth\fP is 0, it will use \fIheight\fP rows, and grow horizontally.  If
244 both are nonzero, then the manager window will be exactly that size, and stay
245 that way. As columns are created, the buttons will narrow to accommodate.  If
246 the geometry is specified with a negative y coordinate, then the window
247 manager will grow upwards. Otherwise, it will grow downwards.
249 .IP "*FvwmIconMan: [id] MaxButtonWidth \fIwidth\fP"
250 Defines a maximum for the width of a button (in pixels). By default there
251 is no maximum. A value of 0 resets the default. The maximum is only used
252 with a non growing manager (the ManagerGeometry option
253 specifies non zero width and height).
255 .IP "*FvwmIconMan: [id] MaxButtonWidthByColumns \fIcol\fP"
256 This is another way to set the button width.
257 col is the number of columns of icons.
258 The button width is determined by dividing
259 the total width of FvwmIconMan
260 by the number of columns.
261 For example if the
262 width of FvwmIconMan manager is 1024, MaxButtonWidthByColumns is 4
263 then MaxButtonWidth is 256.
264 This is useful when you do not
265 know, at config time, the width of the manager, for example,
266 for a swallowed FvwmIconMan.
268 .IP "*FvwmIconMan: [id] NoIconAction  \fIaction\fP"
269 Tells FvwmIconMan to do \fIaction\fP when a NoIcon style window is
270 iconified or de-iconified. Relevant coordinates are appended to \fIaction\fP so
271 that the icon can be traced to an FvwmIconMan button. An example action
272 is "*FvwwmIconMan: NoIconAction SendToModule FvwmAnimate animate". A blank or
273 null action turns this feature off.
275 .IP "*FvwmIconMan: [id] PlainButton \fIstyle\fP [\fIforecolor\fP \fIbackcolor\fP]"
276 Specifies how normal buttons look. \fIstyle\fP may be one of \fIflat\fP,
277 \fIup\fP, \fIdown\fP, \fIraisededge\fP, or \fIsunkedge\fP, and describes how
278 the button is drawn. The color options are both optional, and if not set, then
279 the default colors are used. If on a monochrome screen, then the \fIstyle\fP
280 option is ignored, but must still be set.
282 .IP "*FvwmIconMan: [id] PlainColorset \fIcolorset\fP"
283 Works like plainbutton but uses colorsets instead.  The style setting can
284 still only be applied with plainbutton.  See FvwmTheme.
286 .IP "*FvwmIconMan: [id] ReliefThickness \fInum\fP"
287 \fInum\fP is an integer specifying the number of pixels thick
288 that the relief at the edge of non-flat buttons should be.  Setting
289 this to 0 will produce flat buttons, as if the values for
290 \fIFocusAndSelectButton\fP, \fIFocusButton\fP, \fIIconButton\fP,
291 \fIPlainButton\fP, \fISelectButton\fP, and \fITitleButton\fP were
292 all set to \fIflat\fP.  If \fInum\fP is negative, the button
293 will be inverted as if you had used \fIReverse\fP for all classes.
295 .IP "*FvwmIconMan: [id] Resolution \fIresolution\fP"
296 Specifies when the manager will display an entry for a certain
297 window. \fIresolution\fP may take one of the following values:
298 global, desk, page, screen, !desk, !page, or !screen. If global,
299 then all windows of the appropriate type (see the show and
300 dontshow options below) will be shown. If desk, then only those
301 windows on the current desk are shown. If page, then only those
302 windows on the current page are shown. If screen, then only those
303 windows on the current Xinerama screen are shown. !desk reverses
304 the sense of desk, displaying only those windows not on the
305 current desk. Likewise, !page shows only those windows not on the
306 current page and !screen shows only those windows not on the
307 current Xinerama screen. The default is page. If Xinerama is not
308 active or only a single screen is used, page and screen are
309 equivalent.
311 This configuration line is respected when FvwmIconMan is running
312 as well, the resolution is changed dynamically.
314 .IP "*FvwmIconMan: [id] Reverse \fIclass\fP"
315 Causes certain classes of buttons to have their relief lines reversed so that
316 up and down styles are reversed. This has no affect on flat buttons. The class
317 can be icon, normal or none. The default is none.
319 .IP "*FvwmIconMan: [id] SelectButton \fIstyle\fP [\fIforecolor\fP \fIbackcolor\fP]"
320 Same as the plainbutton option, but specifies the look of buttons when the
321 mouse is over them.
323 .IP "*FvwmIconMan: [id] SelectColorset \fIcolorset\fP"
324 Works like selectbutton but uses colorsets instead.  The style setting can
325 still only be applied with selectbutton.  See FvwmTheme.
327 .IP "*FvwmIconMan: [id] Shape \fIboolean\fP"
328 If \fITrue\fP, then use make the window shaped. Probably only useful if you
329 have multiple columns or rows. If FvwmIconMan wasn't compiled to support the
330 Shape extension, this generates an error message. When using shaped windows,
331 it's recommended that a fvwm style is made for FvwmIconMan that has no borders.
332 Otherwise, fvwm will get confused.
334 .IP "*FvwmIconMan: [id] Sort \fIvalue\fP"
335 If \fIname\fP, then the manager list is sorted by name. If \fInamewithcase\fP,
336 then it is sorted by name sensitive to case. If \fIid\fP, then
337 the manager list is sorted by the window id, which never changes after the
338 window is created. If \fIweighted\fP, then the manager list is sorted by
339 weight (see the description of \fIsortweight\fP below). Or it can be set to
340 \fInone\fP, which results in no sorting. Default is \fIname\fP.
342 .IP "*FvwmIconMan: [id] SortWeight \fIweight\fP \fIpattern-list\fP"
343 Assigns the specified \fIweight\fP to windows that match \fIpattern-list\fP.
344 The list is made up of patterns of the form \fItype=pattern\fP, where type
345 is one of \fIclass\fP, \fIresource\fP, \fItitle\fP, or \fIicon\fP, and pattern
346 is an expression of the same format used in the fvwm style command
347 (minimalistic shell pattern matching). Multiple sort weights can be given.
348 Each window is matched against the list of sort weights, in order, and is
349 given the weight from the first match. Lower-weighted windows are placed
350 first in the manager list. For example:
352 *FvwmIconMan: Sort       weighted
353 *FvwmIconMan: SortWeight 1 class=XTerm title=special*
354 *FvwmIconMan: SortWeight 10 class=XTerm
355 *FvwmIconMan: SortWeight 5
357 In this example, xterm windows whose titles start with "special" (weight 1)
358 are listed first, followed by everything but other xterms (weight 5), and the
359 other xterms (weight 10) are listed last. If no default weight (empty pattern
360 list) is given, the default weight is 0. Only relevant if the sort type is
361 set to \fIweighted\fP.
363 .IP "*FvwmIconMan: [id] Title \fItitle-string\fP"
364 Specifies the window title string for that manager window. \fITitlestring\fP
365 may either be a single word, or a string enclosed in quotes. The default is
366 "FvwmIconMan". This will be drawn in the title bar of the manager window, if
367 any, and in the title button, which is the button drawn when the manager is
368 empty.
370 .IP "*FvwmIconMan: [id] TitleButton \fIstyle\fP [\fIforecolor\fP \fIbackcolor\fP]"
371 Same as the plainbutton option, but specifies the look of the title button
372 (the button drawn when the manager is empty). The manager's title is drawn
373 in the title button.
375 .IP "*FvwmIconMan: [id] UseWinList \fIboolean\fP"
376 If \fItrue\fP, then honor the WinListSkip style flag. Otherwise, all windows
377 are subject to possible management according to the show and dontshow lists.
380 The two following options control which windows get handled by which
381 managers. A manager can get two lists, one of windows to show, and one of
382 windows to ignore. If only the \fIshow\fP list is given, then that manager
383 will show only the windows in the list. If only the \fIDontShow\fP list is
384 given, then the manager will show all windows except those in the list. If
385 both lists are given, then a window will be shown if it is not in the
386 \fIDontShow\fP list, and in the \fIShow\fP list. And finally, if neither list
387 is given, then the manager will handle all windows. Each list is made up of
388 patterns of the form \fItype=pattern\fP, where type is one of \fIclass\fP,
389 \fIresource\fP, \fItitle\fP, or \fIicon\fP, and pattern is an expression of
390 the same format used in the fvwm style command (minimalistic shell pattern
391 matching). Quotes around the pattern will be taken as part of the
392 expression. If a window could be handled by more than one manager, then the
393 manager with the lowest id gets it.
395 .IP "*FvwmIconMan: [id] Show \fIpattern list\fP"
396 If a window matches one of the patterns in the list, then it may be handled
397 by this manager.
399 .IP "*FvwmIconMan: [id] DontShow \fIpattern list\fP"
400 If a window matches one of the patterns in the list, then it may not be
401 handled by this manager.
403 .IP "*FvwmIconMan: [id] ShowTransient \fIboolean\fP"
404 Show transient windows in the list (default false).
406 .IP "*FvwmIconMan: [id] ShowOnlyIcons \fIboolean\fP"
407 Only iconified windows are shown if \fIboolean\fP is true.
409 .IP "*FvwmIconMan: [id] ShowNoIcons \fIboolean\fP"
410 Only windows that are not iconified are shown if \fIboolean\fP is true.
412 .IP "*FvwmIconMan: [id] ShowOnlyFocused \fIboolean\fP"
413 Only window with the focus is shown if \fIboolean\fP is true.
417 The following two options control tips.
419 .IP "*FvwmIconMan: [id] Tips \fIvalue\fP"
420 where \fIvalue\fP can be always, needed or false. Default is false,
421 no tips are displayed. With always, tips are enabled. With needed,
422 a tip is displayed only if either the button string is truncated or
423 the tip string is not equal to the button string.
424 This configuration line is respected when FvwmIconMan is running
425 as well.
427 .IP "*FvwmIconMan: [id] TipsDelays \fIdelay\fP [\fImappeddelay\fP]"
428 where \fIdelay\fP and \fImappeddelay\fP are time out values in milliseconds.
429 If no \fImappeddelay\fP is given \fIdelay\fP is assumed. Default is
430 1000 300. When the cursor is on a button, FvwmIconMan wait \fIdelay\fP
431 milliseconds before displaying the tip. In the case where a tip is
432 already mapped and the cursor goes to an other button, FvwmIconMan
433 waits \fImappeddelay\fP milliseconds before displaying the new tip.
435 .IP "*FvwmIconMan: [id] TipsFont \fIfontname\fP"
436 Specifies the font to be used for tips. Default is the default fvwm
437 font.
439 .IP "*FvwmIconMan: [id] TipsColorset \fIcolorset\fP"
440 Specifies the colors for tips window. Default is colorset 0.
441 See  FvwmTheme.
443 .IP "*FvwmIconMan: [id] TipsFormat \fIformatstring\fP"
444 Similar to the Format option but for the tips window. The default is
445 the format string from the Format option.
447 .IP "*FvwmIconMan: [id] TipsBorderWidth \fIpixels\fP"
448 Specifies the border width (in pixels) of the tips window. Default is 1.
450 .IP "*FvwmIconMan: [id] TipsPlacement \fIvalue\fP"
451 where \fIvalue\fP can be up, down, right, left, updown or
452 leftright. This value specifies the position of the tips window
453 relative to its button.
454 Default is updown where buttons on the top half of the screen
455 get tips below the button, otherwise the tips
456 are above the button.
458 .IP "*FvwmIconMan: [id] TipsJustification \fIvalue\fP"
459 where \fIvalue\fP can be leftup, rightdown or center.
460 Specifies
461 the justification (direction) of the tips window relative to its button after
462 the tips window has been placed.
463 Default is leftup which means that if a tip is placed above or below
464 its button, then the left border of the tip and of the button are
465 aligned.
466 If the tip is placed on the left or on the right of its button, leftup
467 aligns the top borders. rightdown and center work like leftup but in
468 different directions.
469 The alignment is adjusted by the TipsOffset option.
470 See next option.
472 .IP "*FvwmIconMan: [id] TipsOffsets \fIplacementoffset\fP \fIjustoffset\fP"
473 where \fIplacementoffset\fP and \fIjustoffset\fP are offsets in pixels
474 for the TipsPlacement and TipsJustification configuration option.
475 Default is 3 2.
477 .SH ACTIONS
478 Actions are commands which may be bound to an event of the type: a key press, a
479 mouse click, or the mouse entering a window manager button - denoted by the
480 action types \fIKey\fP, \fIMouse\fP, and \fISelect\fP.
482 Normally, actions bound to a mouse click are executed when the button is
483 pressed. In transient mode, the action is executed when the button is
484 released, since it is assumed that FvwmIconMan was bound to some mouse
485 event. A tip/warning: FvwmIconMan still keeps track of the mouse button and
486 any modifier keys in this case, so if you bind FvwmIconMan to say,
487 meta-button3, then it would be wise to ensure that the action you want to
488 execute will be executed when the meta-button3 event occurs (which would be
489 the button release, assuming you kept your finger on the meta key).
491 The syntax for actions are:
493 .IP "\fBKey actions\fP: Key \fIKeysym\fP \fIModifiers\fP \fIFunctionList\fP"
494 \fIKeysym\fP and \fIModifiers\fP are exactly the same as for the fvwm \fIKey\fP
495 command.
497 .IP "\fBMouse actions\fP: Mouse \fIButton\fP \fIModifiers\fP \fIFunctionList\fP"
498 \fIButton\fP and \fIModifiers\fP are exactly the same as for the fvwm
499 \fIMouse\fP command.
501 .IP "\fBSelect actions\fP: Select \fIFunctionList\fP"
504 A \fIFunctionList\fP is a sequence of commands separated by commas. They are
505 executed in left to right order, in one shared context - which currently only
506 contains a pointer to the "current" button. If a button is selected (typically
507 by the mouse pointer sitting on it) when the action is executed, then the
508 current button is initialized to that button. Otherwise, it points to nothing.
510 Most of the available commands then modify this "current" button, either by
511 moving it around, making it become the selected button, or sending commands
512 to fvwm acting on the window represented by that button. Note that while this
513 current button is initialized to be the selected button, the selected button
514 does not implicitly follow it around. This way, the user can send commands
515 to various windows, without changing which button is selected.
517 Commands take five types of arguments: \fIInteger\fP, \fIManager\fP,
518 \fIWindow\fP, \fIButton\fP, and \fIString\fP. A \fIString\fP is a string
519 specified exactly as for fvwm - either in quotes or as a single word not in
520 quotes. Again, you may bind a sequence of commands to an event, by listing
521 them separated by commas.
523 \fIWindow\fP and \fIButton\fP types look exactly the same in the .fvwm2rc
524 file, but are interpreted as either specifying a managed window, or a
525 FvwmIconMan button representing a window. They can either be an integer (which
526 is interpreted module N where N is the number of buttons - so 0 is the first
527 and -1 is the last), or one of the strings: \fISelect\fP, \fIFocus\fP,
528 \fIUp\fP, \fIDown\fP, \fIRight\fP, \fILeft\fP, \fINext\fP,
529 \fIPrev\fP. \fISelect\fP and \fIFocus\fP refer to the currently selected or
530 focused button or window. \fIUp\fP, \fIDown\fP, \fIRight\fP, and \fILeft\fP
531 refer to the button or window above, below, to the right of, or to the left of
532 the current button in the manager window, allowing navigation around the
533 manager window. \fINext\fP and \fIPrev\fP designates the window, button, or
534 manager after or before the current button, allowing navigation of the one
535 dimensional list of windows which is drawn in the manager window. If the
536 manager is sorted, \fINext\fP and \fIPrev\fP move through the windows in
537 the sorted order.
539 The \fIManager\fP type can either be an integer, \fINext\fP, or \fIPrev\fP.
540 The meaning is analogous to that of the \fIButton\fP type, but in terms of
541 the integral index of the managers, restricted to managers which are nonempty.
543 The following functions are currently defined:
544 .IP "bif \fIButton\fP \fIInteger/String\fP"
545 A relative branch instruction. If \fIButton\fP is \fISelect\fP or \fIFocus\fP,
546 then take the branch if there is a selected button or a focused button. If
547 \fIButton\fP is an integer, then branch if nonzero. If it is one of \fIUp\fP,
548 \fIDown\fP, \fIRight\fP, \fILeft\fP, \fINext\fP, \fIPrev\fP, then the branch is
549 taken when the current button can move in that direction. If the branch is
550 taken, then \fIInteger\fP commands are skipped. No backwards branches are
551 allowed.
553 .IP "bifn \fIButton\fP \fIInteger/String\fP"
554 The complement of bif. The branch is taken if \fIButton\fP evaluates to false,
555 by the criteria listed for bif.
557 .IP "gotobutton \fIButton\fP"
558 Sets current button to \fIButton\fP. If \fIButton\fP is an integer, then
559 the current button is set to \fIButton\fP modulo the number of buttons,
560 in the whichever manager contains the selected button, if any.
562 .IP "gotomanager \fIManager\fP"
563 Sets button to button 0 of \fIManager\fP. This will only go to a visible,
564 nonempty manager. So an integral argument is taken modulo the number of such
565 managers.
567 .IP "jmp \fIInteger/String\fP"
568 Executes a relative jump of \fIInteger\fP instructions. Backwards jumps are
569 not allowed. The jump is computed relative to the instruction following the
570 jmp.
572 .IP "label \fIString\fP"
573 Provides a label that previous instructions can jump to. It will not be
574 visible to subsequent jump instructions, and the same label can be used
575 multiple times in the same instruction list (though it would be perverse
576 to do so.)
578 .IP "print \fIString\fP"
579 Prints \fIString\fP to the console. Useful for debugging actions.
581 .IP "printdebug"
582 Prints defined actions to the console. Should only be used by developers.
583 To enable this command, set CONFIG and FUNCTIONS variables to '1' in the
584 modules/FvwmIconMan/debug.h and recompile this module.
586 .IP "quit"
587 Quits FvwmIconMan.
589 .IP "refresh"
590 Causes all manager windows to redraw themselves.
592 .IP "ret"
593 Stop executing the entire action.
595 .IP "searchback \fIString\fP"
596 Sets button to button before the current one whose printed string in the
597 manager window matches specified \fIString\fP, which may contain wildcards.
599 .IP "searchforward \fIString\fP"
600 Sets button to button after the current one whose printed string in the
601 manager window matches specified \fIString\fP, which may contain wildcards.
603 .IP "select"
604 Selects the current button, if any. If a select action has been specified,
605 it will then be run. Therefore, it is considered unwise to set the select
606 button in the select action.
608 .IP "sendcommand \fICommand\fP"
609 Sends the fvwm command \fICommand\fP to the window represented by the current
610 button, if any.
612 .IP "warp"
613 Warps cursor to current button, if any.
616 .B Examples:
618 gotobutton select, gotobutton Down, select
620 Selects the button below the currently selected button. Since the
621 current button is already initialized to the selected button, this may be
622 shortened to "gotobutton Down, select".
625 gotobutton Up, select
627 Selects the button above the currently selected button.
630 gotobutton 0, select
632 Selects the first button of the current manager. If there is no current
633 manager, which is the case when no button is selected, then this does nothing.
636 gotobutton -1, select
638 Selects the last button of the current manager.
641 gotobutton focus, select
643 Selects the button corresponding to the focused window.
646 gotobutton focus, Iconify
648 Sends the fvwm command Iconify to the focused window. Note that this
649 does not change the selected button.
652 bif Next 3, gotobutton 0, select, ret, gotobutton Next, select
654 If a button is selected, and it's the last button, go to button 0. If it's
655 not the last button, go to the next button. Otherwise, do nothing. Basically,
656 this action cycles through all buttons in the current manager.
659 bif select 7, bif focus 3, gotomanager 0, select, ret, gotobutton focus, \\
660   select, ret, gotobutton down, select
662 This is good for sending to FvwmIconMan with a SendToModule command. If there
663 is a selected button, it moves down. Otherwise, if there is a focused button,
664 it is selected. Otherwise, button 0 of manager 0 gets selected.
667 bif select Select, bif focus Focus, gotomanager 0, select, ret, label Focus, \\
668   gotobutton focus, select, ret, label Select, gotobutton down, select
670 Same as previous, but using the label instruction.
673 In addition to being bound to keys and mice, actions can be sent from fvwm to
674 FvwmIconMan via the SendToModule command. Don't quote the command when using
675 SendToModule. Also, due to a bug in the current version of fvwm, don't quote
676 FvwmIconMan either.
678 .SH SAMPLE CONFIGURATIONS
679 This first example is of a the simplest invocation of FvwmIconMan, which only
680 has one manager, and handles all windows:
684 ##############################################################
685 # Load any modules which should be started during
686 # fvwm initialization
687 ModulePath /usr/lib/X11/fvwm:/usr/bin/X11
688 Module FvwmIconMan
690 # Make FvwmIconMan title-bar-less, sticky, and give it an icon
691 Style "Fvwm*"      Icon toolbox.xpm,NoTitle,NoHandles,Sticky
692 Style "FvwmIconMan" HandleWidth 5, Handles, BorderWidth 5
695 ##############################################################
696 ##############################################################
697 #Definitions used by the modules
699 *FvwmIconMan: NumManagers        1
700 *FvwmIconMan: Resolution         global
701 *FvwmIconMan: Background         slategrey
702 *FvwmIconMan: Foreground         white
703 *FvwmIconMan: Font               7x13
704 *FvwmIconMan: ButtonGeometry     100x0
705 *FvwmIconMan: ManagerGeometry    1x0-0+0
709 This example is the Reader's Digest version of my personal configuration. It
710 has two managers, one for emacs and one for everything else, minus things with
711 no icon title. Only windows on the current page are displayed. The use of the
712 \fIdrawicons\fP and \fIshape\fP options requires that fvwm and FvwmIconMan we
713 compiled with the correct options. Note how the geometry and show options are
714 specified per manager, and the others are common to all:
718 Style "FvwmIconMan"  NoTitle, Sticky, WindowListSkip, BorderWidth 0
719 Style "FvwmIconMan"  HandleWidth 0
722 Key F8 A N SendToModule FvwmIconMan bif select Select, bif focus Focus, \\
723   gotomanager 0, select, sendcommand WarpToWindow, ret, label Focus, \\
724   gotobutton focus, select, sendcommand WarpToWindow, ret, label Select, \\
725   gotobutton prev, select, sendcommand WarpToWindow
726 Key F9 A N SendToModule FvwmIconMan bif select Select, bif focus Focus, \\
727   gotomanager 0, select, sendcommand WarpToWindow, ret, label Focus, \\
728   gotobutton focus, select, sendcommand WarpToWindow, ret, label Select, \\
729   gotobutton next, select, sendcommand WarpToWindow
731 *FvwmIconMan: NumManagers 2
732 *FvwmIconMan: Resolution  page
733 *FvwmIconMan: Background  steelblue
734 *FvwmIconMan: Foreground  white
735 *FvwmIconMan: Font        7x13
736 *FvwmIconMan: UseWinList  true
737 *FvwmIconMan: DrawIcons   true
738 *FvwmIconMan: Shape       true
739 *FvwmIconMan: FollowFocus true
740 *FvwmIconMan: Sort        name
741 *FvwmIconMan: PlainButton          up white steelblue
742 *FvwmIconMan: SelectButton         down white steelblue
743 *FvwmIconMan: FocusButton          up white brown
744 *FvwmIconMan: FocusAndSelectButton down white brown
745 *FvwmIconMan: TitleButton          raisededge white steelblue
746 *FvwmIconMan: NoIconAction         "SendToModule FvwmAnimate animate"
748 *FvwmIconMan: 1 Title           "Emacs windows"
749 *FvwmIconMan: 1 IconName        "FvwmIconMan: Emacs"
750 *FvwmIconMan: 1 Format          "%i"
751 *FvwmIconMan: 1 Show            resource=emacs resource=gemacs
752 *FvwmIconMan: 1 ManagerGeometry 1x0-400+0
753 *FvwmIconMan: 1 ButtonGeometry  200x0
755 *FvwmIconMan: 2 Title           "All windows"
756 *FvwmIconMan: 2 IconName        "FvwmIconMan: all"
757 *FvwmIconMan: 2 Format          "%c: %i"
758 *FvwmIconMan: 2 DontShow        icon=Untitled
759 *FvwmIconMan: 2 ManagerGeometry 2x4-0+0
760 *FvwmIconMan: 2 ButtonGeometry  200x0
762 *FvwmIconMan: transient Geometry 194x100
763 *FvwmIconMan: transient DontShow icon=Untitled
764 *FvwmIconMan: transient Action   Mouse 0 A sendcommand select select Iconify
766 *FvwmIconMan: Action    Mouse   1 N sendcommand Iconify
767 *FvwmIconMan: Action    Mouse   2 N sendcommand WarpToWindow
768 *FvwmIconMan: Action    Mouse   3 N sendcommand "Module FvwmIdent FvwmIdent"
769 *FvwmIconMan: Action    Key     Left  N gotobutton Left, select
770 *FvwmIconMan: Action    Key     Right N gotobutton Right, select
771 *FvwmIconMan: Action    Key     Up    N gotobutton Up, select
772 *FvwmIconMan: Action    Key     Down  N gotobutton Down, select
773 *FvwmIconMan: Action    Key     q     N quit
777 .SH UNFINISHED BUSINESS
778 There is one bug that I know of. A honest to goodness solution to this would
779 be appreciated. When an icon manager is set to grow upwards or leftwards, on
780 some machines it may wander occasionally.
782 It doesn't handle windows without resource names as gracefully as it should.
784 .SH AUTHOR
785 Brady Montz (bradym@cs.arizona.edu).
787 .SH THANKS
789 Thanks to:
790         David Berson <berson@cs.pitt.edu>,
791         Gren Klanderman <greg@alphatech.com>,
792         David Goldberg <dsg@mitre.org>,
793         Pete Forman <gsez020@compo.bedford.waii.com>,
794         Neil Moore <amethyst@maxwell.ml.org>,
795         Josh M. Osborne <stripes@va.pubnix.com,
796         Adam Rice <wysiwyg@glympton.airtime.co.uk>,
797         Chris Siebenmann <cks@hawkwind.utcs.toronto.edu>,
798         Bjorn Victor <victor@delial.docs.uu.se>.
800 for contributing either code or truly keen ideas.