2 .\" @(#)@PACKAGE@-@VERSION@ @RELDATELONG@
3 .TH FvwmProxy 1 "@RELDATELONG@ (@VERSION@)" Fvwm "Fvwm Modules"
6 FvwmProxy \- the fvwm proxy module
8 FvwmProxy is spawned by fvwm, so no command line invocation will work.
11 The FvwmProxy allows the user to locate and control windows obscured
12 by other windows by using small non-overlapping proxy windows.
13 The default capabilites include raising and lowering the proxied windows.
15 Using the sample configuration, pressing Alt-Tab cycles through the windows
16 and allows the use of assignable click actions on the proxies.
17 Releasing the Alt key deactivates the proxy windows.
18 By default, pressing the left or right mouse buttons on a proxy window
19 raises or lowers the associated proxied window respectively.
20 An additional mapping can have the proxies automatically appear by just
23 Proxy windows are always on top and try to center on the regular
25 A simple collision algorithm tweaks the positions of the proxy windows
26 to prevent them from overlapping.
29 The FvwmProxy program is original work by Jason Weber.
31 Copyright 2002, Jason Weber. No guarantees or warranties or anything
32 are provided or implied in any way whatsoever. Use this program at your
36 FvwmProxy can be invoked by inserting the line 'Module FvwmProxy' in
37 the .fvwm2rc file. This can be placed on a line by itself, if FvwmProxy
38 is to be spawned during fvwm's initialization, or can be bound to a
39 menu or mouse button or keystroke to invoke it later. Fvwm will search
40 directory specified in the ModulePath configuration option to attempt
43 .SH CONFIGURATION OPTIONS
45 .IP "*FvwmProxy: Colorset \fIn\fP"
46 Specifies the color theme for unselected proxy windows.
48 .IP "*FvwmProxy: SelectColorset \fIn\fP"
49 Specifies the color theme for the selected proxy window.
51 .IP "*FvwmProxy: IconifiedColorset \fIn\fP"
52 Specifies the color theme for proxy windows of iconified windows.
53 This is only meaningful in conjuction with the ProxyIconified option on.
55 .IP "*FvwmProxy: Font \fIfont\fP"
56 Specifies the font used for large proxy window text.
57 This usually contains the icon string and is nearly vertically centered
59 If there is no icon string, the title bar string is used.
60 If this text exceeds the width of the proxy, it is cropped on the right.
61 If no Font is specified, a default is used.
63 .IP "*FvwmProxy: SmallFont \fIfont\fP"
64 Specifies the font used for the auxillary proxy window text.
65 This usually contains the title bar string, but is omitted if it
66 is identical to the icon string and that text was not cropped.
67 The text is drawn close to the bottom of the proxy and should
68 probably be the smallest legible font available.
69 If this text exceeds the width of the proxy, it is cropped on the left.
70 If no SmallFont is specified, this text is never drawn.
72 .IP "*FvwmProxy: Width \fIw\fP"
73 Specifies the size in X of each proxy window. The default is 180.
75 .IP "*FvwmProxy: Height \fIh\fP"
76 Specifies the size in Y of each proxy window. The default is 60.
78 .IP "*FvwmProxy: Separation \fId\fP"
79 Specifies the minimum distance between proxy windows when adjusting
80 for collisions. The default is 10.
82 .IP "*FvwmProxy: ShowMiniIcons \fIbool\fP"
83 If true, proxy windows show the mini icon for the window they represent,
84 if it has a mini icon. The default is true.
86 .IP "*FvwmProxy: EnterSelect \fIbool\fP"
87 If true, a proxy is automatically selected when the mouse is moved
88 over the proxy, even if no mouse buttons are pressed.
91 .IP "*FvwmProxy: ProxyMove \fIbool\fP"
92 If true, moving a proxy window will move the window it represents.
93 Currently, the proxied window doesn't recognize snap effects during
94 this operation. The default is false.
96 .IP "*FvwmProxy: ProxyIconified \fIbool\fP"
97 If true, continue to show proxy windows when they are iconified.
98 In addition, consider adding click actions that Iconify on and off,
99 such as on the middlemouse button. The default is false.
101 .IP "*FvwmProxy: ShowOnly \fImode\fP"
102 Limits the appearance of proxy windows during the Show action.
103 The supported modes are Selected, Covered, Grouped, and All.
104 The default is All which shows every proxy window on the current desk.
105 Select mode will only show the proxy window for the selected window.
106 If no window is selected, the currently focused window is treated
107 as the select window for ShowOnly filtering.
108 Covered mode extends Select mode to add proxy windows
109 that overlap the select real window.
110 Just using Selected mode can result in untouchable proxy windows
111 that disappear before you can reach them.
112 Grouped mode extends Covered mode to show proxy windows in the
113 same window group as the selected window.
114 In all cases, iconified proxy windows never appear if ProxyIconified is false.
116 .IP "*FvwmProxy: Action \fImouseaction\fP \fIresponse\fP"
117 Tells FvwmProxy to do the specified \fIresponse\fP when the given
118 \fIaction\fP is done.
119 The currently supported mouse actions are: Click1, Click2, Click3 and so on,
120 representing mouse clicks with various buttons.
121 By default, the module supports 3 mouse buttons, but it can be
122 compiled to support more.
123 The default responses are Raise, Nop, and Lower for Click1, Click2, and Click3,
126 .IP "*FvwmProxy: Action Select \fIcommand\fP"
127 This selects an fvwm function to be called during a FvwmProxy Hide command
128 for the window whose proxy was selected.
129 The default is WindowListFunc. WindowListFunc is predefined by the
130 fvwm install. You can replace it, add to it,
131 or supply an independent function.
133 .IP "*FvwmProxy: Action Show \fIcommand\fP"
134 This selects an fvwm function to be called during a FvwmProxy Show command.
137 .IP "*FvwmProxy: Action Hide \fIcommand\fP"
138 This selects an fvwm function to be called during a FvwmProxy Hide command.
141 .IP "*FvwmProxy: Action Abort \fIcommand\fP"
142 This selects an fvwm function to be called during a FvwmProxy Abort command.
145 .IP "*FvwmProxy: Action Mark \fIcommand\fP"
146 This selects an fvwm function to be called on a window after it is marked.
149 .IP "*FvwmProxy: Action Unmark \fIcommand\fP"
150 This selects an fvwm function to be called on a marked window just after
151 another window gets the mark.
154 .IP "*FvwmProxy: Action ModifierRelease \fImodifiers\fP \fIcommand\fP"
155 This selects an fvwm function to be called while proxies are shown and
156 the specified modifiers are all released. The modifiers are specified
157 using the same syntax as in the Mouse command.
160 .IP "*FvwmProxy: Group \fIgroupname\fP \fIcommand\fP \fIpattern\fP"
161 For the given named group, adjust inclusion of the windows matching
163 The groupname is a string identifier used to associate windows.
164 The window pattern uses the same format as the Style command.
165 The supported commands are Include, SoftInclude, WeakInclude,
166 WeakSoftInclude, and Exclude.
167 The commands ending in Include identify a pattern to add windows
169 Exclude identifies pattern to counteract inclusion pattern
170 or auto-inclusion (see flags below).
171 All exclusion checks follow all inclusion checks.
172 Soft inclusion limits the windows in that pattern to only move
173 when an non-soft window in the group moves.
174 Moving or resizing these windows does not affect any other windows.
175 They are also immune to edge effects.
176 Soft inclusion also affects provocation effects (see below).
177 Weak inclusion prevents inclusion purely on name,
178 instead relying on X11 leader or process id matching.
179 Weakly included names will not start a group,
180 but will join a group in the same known process or with the same leader.
181 Once the window has joined,
182 the name is just used to determine if the inclusion is soft.
184 .IP "*FvwmProxy: Group \fIgroupname\fP \fIflag\fP
185 For the given named group, activate the given flag.
186 The supported flags are AutoInclude, AutoSoft, and IgnoreIDs.
187 All window grouping is normally checked to only group windows
188 that are in the same process or that have the same X11 client leader.
189 IgnoreIDs deactivates this mechanism.
190 AutoInclude automatically includes any window that matches
191 the same process or client leader, without having to name them specifically.
192 AutoSoft makes all AutoInclusions soft (see inclusion description above).
194 .IP "*FvwmProxy: Group \fIgroupname\fP \fIprovocation\fP \fIpattern\fP"
195 The provocation flags allow you to customize whether grouped windows
196 provoke each other in response to a raise/lower, desk move, drag,
197 or iconification change.
198 The compound provocation flag is of the form
199 (No|Inherit)(Hard|Soft)(Raise|Desk|Drag|Icon|All).
200 The pattern is optional and should already have been included.
201 The pattern limits the change to only affect that part of the group.
202 The first element of the flag is optional and can turn off the effect,
203 or, with a pattern, can dynamically inherit the setting for the group.
204 The default is to turn the effect on.
205 The second element can be used to only apply the change to windows
206 with the soft state either on or off.
207 The default is to change both.
208 The third element specifies what provoking effect is being changed:
209 window raise/lower, moving to another desk, dragging windows together,
210 toggling iconification, or all of these.
211 If either the provoking window or a potentially provoked window has
212 an effect turned off, the provocation does not occur.
214 .IP "*FvwmProxy: SlotWidth \fIw\fP"
215 This specifies the width of the icons used in slots.
218 .IP "*FvwmProxy: SlotHeight \fIh\fP"
219 This specifies the height of the icons used in slots.
222 .IP "*FvwmProxy: SlotSpace \fId\fP"
223 This specifies the space between icons used in slots.
226 .IP "*FvwmProxy: GroupSlot \fIn\fP"
227 This specifies the first slot that represent a colored group.
228 Group slots don't need icons as the are drawn by predetermined means.
231 .IP "*FvwmProxy: GroupCount \fIn\fP"
232 This specifies the number of group slots.
235 .IP "*FvwmProxy: SlotStyle \fIn\fP \fIstyle\fP"
236 For non-group slots, this defines the appears of the indicated slot.
237 The style format matches ButtonStyle command.
238 The default is nothing.
240 .IP "*FvwmProxy: SlotAction \fIn\fP \fImouseaction\fP \fIresponse\fP"
241 For non-group slots, this defines the behavior of the indicated slot.
242 The mouse action and response is used the same as the FvwmProxy
243 Action configuration.
246 .IP "*FvwmProxy: UndoLimit \fIn\fP"
247 This specifies the number of entries in the undo buffer.
248 this limits how far back you can undo.
253 .IP "SendToModule FvwmProxy Show"
254 Activate proxy windows for all windows on the current desk that
255 do not use the WindowListSkip option.
256 If the desk is switched, new proxies are automatically generated.
258 .IP "SendToModule FvwmProxy Hide"
259 Deactivate all proxy windows.
260 If a proxy is selected (such as with the Next and Prev commands),
261 the Select Action is call on the window that the proxy represents.
262 The default action includes raising the window and
263 warping the mouse to a position over that window.
265 .IP "SendToModule FvwmProxy ShowToggle"
266 If shown, hide. If hidden, show.
268 .IP "SendToModule FvwmProxy Abort"
269 Deactivate all proxy windows.
270 This differs from the Hide command in that no action is taken
271 on any selected window.
273 .IP "SendToModule FvwmProxy Circulate \fIcommand\fP"
274 Tell FvwmProxy to run a conditional command and mark the result.
275 The imbedded command \fISendToModule FvwmProxy Mark\fP is automatically
276 appended after the optional condition, so supplying your own imbedded
277 command will probably fail.
278 An example argument to Circulate is
279 \fIScanForWindow East South (CurrentPage)\fP.
280 If the proxies aren't already shown (such as with the Show command),
281 any Circulate command will automatically show the proxies.
283 .IP "SendToModule FvwmProxy Next (obsolete)"
284 If a proxy window is selected, the next proxy is selected.
285 Windows with the WindowListSkip option are ignored.
286 The proxies are sorted left to right during the Show command.
287 If no proxy is currently selected, but a proxy on this desk was
288 selected on a recent show, that proxy is selected.
289 If no proxy on this desk was recently selected,
290 the leftmost proxy is used.
291 This nearly duplicates the functionality of
292 Circulate ScanForWindow East South (CurrentPage).
294 .IP "SendToModule FvwmProxy Prev (obsolete)"
295 If a proxy window is selected, the previous proxy is selected.
296 The starting point is the same as with the Next command, except
297 that the choice with no recent selection is the rightmost proxy.
298 This nearly duplicates the functionality of
299 Circulate ScanForWindow West North (CurrentPage).
301 .IP "SendToModule FvwmProxy SoftToggle"
302 Toggle the soft group inclusion setting for the selected window.
303 This setting is the same that can be activated using the SoftInclude
304 and AutoSoft commands inside the FvwmProxy Group configuration.
306 .IP "SendToModule FvwmProxy IsolateToggle"
307 Toggle the isolation setting for the selected window's group.
308 Isolated groups only allow one member to not be iconified at a time.
309 The members are also coerced to the same position and size,
310 constrained by their size increment.
312 .IP "SendToModule FvwmProxy PrevIsolated"
313 If focused on a member of a isolating group,
314 deiconify the member higher on list.
315 If no member is higher, deiconify the last member.
317 .IP "SendToModule FvwmProxy NextIsolated"
318 If focused on a member of a isolating group,
319 deiconify the member lower on list.
320 If no member is higher, deiconify the first member.
322 .IP "SendToModule FvwmProxy Undo"
323 Attempt to undo the last window move and/or resize.
325 .IP "SendToModule FvwmProxy Redo"
326 Attempt to redo the most recent Undo.
327 If another move or resize occurs since the previous undo,
328 the redo buffer will be cleared.
330 .SH SAMPLE CONFIGURATION
331 The following are excerpts from a .fvwm2rc file which describe
332 FvwmProxy initialization commands:
335 Key Tab A M SendToModule FvwmProxy Circulate \\
336 ScanForWindow East South (CurrentPage)
337 Key Tab A SM SendToModule FvwmProxy Circulate \\
338 ScanForWindow West North (CurrentPage)
340 *FvwmProxy: Action ModifierRelease M SendToModule FvwmProxy Hide
343 But Meta-Shift-Tab can be awkward, so Meta-Q may be a better alternative.
346 Key Q A M SendToModule FvwmProxy Circulate \\
347 ScanForWindow West North (CurrentPage)
351 You might consider adding !Sticky to the (CurrentPage) conditional if you
352 use Sticky for low-interactivity programs, like load meters and music players.
354 To have the proxies immediately pop up when you hold the Alt key, add
357 Key Meta_L A N SendToModule FvwmProxy Show
360 If that's too intrusive, you can assign Alt-Esc to switch the proxies
364 Key Escape A M SendToModule FvwmProxy ShowToggle
367 Some platforms have problems where general Alt key combinations becoming
368 otherwise dysfunctional after defining these mappings.
369 If this happens, it might be difficult to take full advantage of this module.
371 To have the mouse jump to the center instead of the upper left corner,
375 AddToFunc WindowListFunc
376 + I WarpToWindow 50 50
379 or just make your own list function from scratch, for example
382 DestroyFunc WindowListFunc
383 AddToFunc WindowListFunc
384 + I WindowId $[w.id] Raise
385 + I WindowId $[w.id] WarpToWindow 50 50
389 Note that the default configuration does not activate any Next/Prev operations
390 for Alt-Tab since that sequence is, by default, used by another module.
391 Adding appropriate key mappings to your .fvwm2rc will switch this
392 responsibility to FvwmProxy.
394 If you use ProxyIconified, you might consider adding Iconify actions.
397 AddToFunc WindowListFunc
398 + I WindowId $[w.id] Iconify Off
400 AddToFunc Raise-and-Deiconify
401 + I WindowId $[w.id] Raise
402 + I WindowId $[w.id] Iconify Off
404 *FvwmProxy: Action Click1 Raise-and-Deiconify
405 *FvwmProxy: Action Click2 Iconify
409 You can set up some basic slots fairly easily.
412 *FvwmProxy: GroupSlot 2
413 *FvwmProxy: GroupCount 5
415 *FvwmProxy: SlotStyle 1 MiniIcon
416 *FvwmProxy: SlotStyle 7 Pixmap "squeeze.xpm"
417 *FvwmProxy: SlotStyle 8 Pixmap "mini-up.xpm"
418 *FvwmProxy: SlotStyle 9 Pixmap "mini-bball.xpm"
419 *FvwmProxy: SlotStyle 10 Pixmap "mini-cross.xpm"
421 *FvwmProxy: SlotAction 1 Click1 Popup WindowMenu
422 *FvwmProxy: SlotAction 7 Click1 SendToModule FvwmProxy IsolateToggle
423 *FvwmProxy: SlotAction 8 Click1 SendToModule FvwmProxy SoftToggle
424 *FvwmProxy: SlotAction 9 Click1 Iconify
425 *FvwmProxy: SlotAction 10 Click1 Delete
428 In this example, WindowMenu is something you would have to define.
429 If your proxy width is too small, some slots can get cut off.
431 Undo and redo can be easily mapped to any keys.
434 Key Z A 3 SendToModule FvwmProxy Undo
435 Key R A 3 SendToModule FvwmProxy Redo
439 You can rotate through an isolated group using any keys.
440 For example, meta cursor-up and cursor-down could traverse the group.
443 Key Up A 3 SendToModule FvwmProxy PrevIsolated
444 Key Down A 3 SendToModule FvwmProxy NextIsolated
448 A somewhat impractical example of a group definition using GIMP
452 *FvwmProxy: Group "GIMP" Include "The GIMP"
453 *FvwmProxy: Group "GIMP" Include "Module Manager"
454 *FvwmProxy: Group "GIMP" SoftInclude "Unit Editor"
455 *FvwmProxy: Group "GIMP" AutoInclude
456 *FvwmProxy: Group "GIMP" AutoSoft
457 *FvwmProxy: Group "GIMP" Exclude "Preferences"
461 This sets up a hard attachment between the windows "The GIMP"
462 and "Module Manager".
463 The "Unit Editor" is also in the group, but only responds
464 to movement of one of the hard inclusions.
465 Any window in the same process or with the same client leader
466 is also associated, but they default to soft inclusion,
467 except "Preferences" which is explicitly excluded.
468 Note that in this case, the explicit soft inclusion of
469 "Unit Editor" is redundant with the combination of
470 AutoInclude and AutoSoft.
471 However, if AutoSoft was not specified, the explicit
472 SoftInclude would distinguish that pattern from the otherwise
473 hard inclusion under just AutoInclude.