1FvwmProxy(1) Fvwm Modules FvwmProxy(1)
2
3
4
6 FvwmProxy - the fvwm proxy module
7
9 FvwmProxy is spawned by fvwm, so no command line invocation will work.
10
11
13 The FvwmProxy allows the user to locate and control windows obscured by
14 other windows by using small non-overlapping proxy windows. The
15 default capabilities include raising and lowering the proxied windows.
16
17 Using the sample configuration, pressing Alt-Tab cycles through the
18 windows and allows the use of assignable click actions on the proxies.
19 Releasing the Alt key deactivates the proxy windows. By default,
20 pressing the left or right mouse buttons on a proxy window raises or
21 lowers the associated proxied window respectively. An additional map‐
22 ping can have the proxies automatically appear by just holding the Alt
23 key.
24
25 Proxy windows are always on top and try to center on the regular window
26 they proxy. A simple collision algorithm tweaks the positions of the
27 proxy windows to prevent them from overlapping.
28
29
31 The FvwmProxy program is original work by Jason Weber.
32
33 Copyright 2002, Jason Weber. No guarantees or warranties or anything
34 are provided or implied in any way whatsoever. Use this program at your
35 own risk.
36
37
39 FvwmProxy can be invoked by inserting the line 'Module FvwmProxy' in
40 the .fvwm2rc file. This can be placed on a line by itself, if FvwmProxy
41 is to be spawned during fvwm's initialization, or can be bound to a
42 menu or mouse button or keystroke to invoke it later. Fvwm will search
43 directory specified in the ModulePath configuration option to attempt
44 to locate FvwmProxy.
45
46
48 *FvwmProxy: Colorset n
49 Specifies the color theme for unselected proxy windows.
50
51
52 *FvwmProxy: SelectColorset n
53 Specifies the color theme for the selected proxy window.
54
55
56 *FvwmProxy: IconifiedColorset n
57 Specifies the color theme for proxy windows of iconified win‐
58 dows. This is only meaningful in conjunction with the ProxyI‐
59 conified option on.
60
61
62 *FvwmProxy: Font font
63 Specifies the font used for large proxy window text. This usu‐
64 ally contains the icon string and is nearly vertically centered
65 in the proxy. If there is no icon string, the title bar string
66 is used. If this text exceeds the width of the proxy, it is
67 cropped on the right. If no Font is specified, a default is
68 used.
69
70
71 *FvwmProxy: SmallFont font
72 Specifies the font used for the auxiliary proxy window text.
73 This usually contains the title bar string, but is omitted if it
74 is identical to the icon string and that text was not cropped.
75 The text is drawn close to the bottom of the proxy and should
76 probably be the smallest legible font available. If this text
77 exceeds the width of the proxy, it is cropped on the left. If
78 no SmallFont is specified, this text is never drawn.
79
80
81 *FvwmProxy: Width w
82 Specifies the size in X of each proxy window. The default is
83 180.
84
85
86 *FvwmProxy: Height h
87 Specifies the size in Y of each proxy window. The default is 60.
88
89
90 *FvwmProxy: Separation d
91 Specifies the minimum distance between proxy windows when
92 adjusting for collisions. The default is 10.
93
94
95 *FvwmProxy: ShowMiniIcons bool
96 If true, proxy windows show the mini icon for the window they
97 represent, if it has a mini icon. The default is true.
98
99
100 *FvwmProxy: EnterSelect bool
101 If true, a proxy is automatically selected when the mouse is
102 moved over the proxy, even if no mouse buttons are pressed. The
103 default is false.
104
105
106 *FvwmProxy: ProxyMove bool
107 If true, moving a proxy window will move the window it repre‐
108 sents. Currently, the proxied window doesn't recognize snap
109 effects during this operation. The default is false.
110
111
112 *FvwmProxy: ProxyIconified bool
113 If true, continue to show proxy windows when they are iconified.
114 In addition, consider adding click actions that Iconify on and
115 off, such as on the middlemouse button. The default is false.
116
117
118 *FvwmProxy: ShowOnly mode
119 Limits the appearance of proxy windows during the Show action.
120 The supported modes are Selected, Covered, Grouped, and All.
121 The default is All which shows every proxy window on the current
122 desk. Select mode will only show the proxy window for the
123 selected window. If no window is selected, the currently
124 focused window is treated as the select window for ShowOnly fil‐
125 tering. Covered mode extends Select mode to add proxy windows
126 that overlap the select real window. Just using Selected mode
127 can result in untouchable proxy windows that disappear before
128 you can reach them. Grouped mode extends Covered mode to show
129 proxy windows in the same window group as the selected window.
130 In all cases, iconified proxy windows never appear if ProxyI‐
131 conified is false.
132
133
134 *FvwmProxy: Action mouseaction response
135 Tells FvwmProxy to do the specified response when the given
136 action is done. The currently supported mouse actions are:
137 Click1, Click2, Click3 and so on, representing mouse clicks with
138 various buttons. By default, the module supports 3 mouse but‐
139 tons, but it can be compiled to support more. The default
140 responses are Raise, Nop, and Lower for Click1, Click2, and
141 Click3, respectively.
142
143
144 *FvwmProxy: Action Select command
145 This selects an fvwm function to be called during a FvwmProxy
146 Hide command for the window whose proxy was selected. The
147 default is WindowListFunc. WindowListFunc is predefined by the
148 fvwm install. You can replace it, add to it, or supply an inde‐
149 pendent function.
150
151
152 *FvwmProxy: Action Show command
153 This selects an fvwm function to be called during a FvwmProxy
154 Show command. The default is Nop.
155
156
157 *FvwmProxy: Action Hide command
158 This selects an fvwm function to be called during a FvwmProxy
159 Hide command. The default is Nop.
160
161
162 *FvwmProxy: Action Abort command
163 This selects an fvwm function to be called during a FvwmProxy
164 Abort command. The default is Nop.
165
166
167 *FvwmProxy: Action Mark command
168 This selects an fvwm function to be called on a window after it
169 is marked. The default is Nop.
170
171
172 *FvwmProxy: Action Unmark command
173 This selects an fvwm function to be called on a marked window
174 just after another window gets the mark. The default is Nop.
175
176
177 *FvwmProxy: Action ModifierRelease modifiers command
178 This selects an fvwm function to be called while proxies are
179 shown and the specified modifiers are all released. The modi‐
180 fiers are specified using the same syntax as in the Mouse com‐
181 mand. The default is Nop.
182
183
184 *FvwmProxy: Group groupname command pattern
185 For the given named group, adjust inclusion of the windows
186 matching the pattern. The groupname is a string identifier used
187 to associate windows. The window pattern uses the same format
188 as the Style command. The supported commands are Include, Soft‐
189 Include, WeakInclude, WeakSoftInclude, and Exclude. The com‐
190 mands ending in Include identify a pattern to add windows to the
191 group. Exclude identifies pattern to counteract inclusion pat‐
192 tern or auto-inclusion (see flags below). All exclusion checks
193 follow all inclusion checks. Soft inclusion limits the windows
194 in that pattern to only move when an non-soft window in the
195 group moves. Moving or resizing these windows does not affect
196 any other windows. They are also immune to edge effects. Soft
197 inclusion also affects provocation effects (see below). Weak
198 inclusion prevents inclusion purely on name, instead relying on
199 X11 leader or process id matching. Weakly included names will
200 not start a group, but will join a group in the same known
201 process or with the same leader. Once the window has joined,
202 the name is just used to determine if the inclusion is soft.
203
204
205 *FvwmProxy: Group groupname flag
206 For the given named group, activate the given flag. The sup‐
207 ported flags are AutoInclude, AutoSoft, and IgnoreIDs. All win‐
208 dow grouping is normally checked to only group windows that are
209 in the same process or that have the same X11 client leader.
210 IgnoreIDs deactivates this mechanism. AutoInclude automatically
211 includes any window that matches the same process or client
212 leader, without having to name them specifically. AutoSoft
213 makes all AutoInclusions soft (see inclusion description above).
214
215
216 *FvwmProxy: Group groupname provocation pattern
217 The provocation flags allow you to customize whether grouped
218 windows provoke each other in response to a raise/lower, desk
219 move, drag, or iconification change. The compound provocation
220 flag is of the form
221 (No|Inherit)(Hard|Soft)(Raise|Desk|Drag|Icon|All). The pattern
222 is optional and should already have been included. The pattern
223 limits the change to only affect that part of the group. The
224 first element of the flag is optional and can turn off the
225 effect, or, with a pattern, can dynamically inherit the setting
226 for the group. The default is to turn the effect on. The sec‐
227 ond element can be used to only apply the change to windows with
228 the soft state either on or off. The default is to change both.
229 The third element specifies what provoking effect is being
230 changed: window raise/lower, moving to another desk, dragging
231 windows together, toggling iconification, or all of these. If
232 either the provoking window or a potentially provoked window has
233 an effect turned off, the provocation does not occur.
234
235
236 *FvwmProxy: SlotWidth w
237 This specifies the width of the icons used in slots. The
238 default is 16.
239
240
241 *FvwmProxy: SlotHeight h
242 This specifies the height of the icons used in slots. The
243 default is 16.
244
245
246 *FvwmProxy: SlotSpace d
247 This specifies the space between icons used in slots. The
248 default is 4.
249
250
251 *FvwmProxy: GroupSlot n
252 This specifies the first slot that represent a colored group.
253 Group slots don't need icons as the are drawn by predetermined
254 means. The default is 2.
255
256
257 *FvwmProxy: GroupCount n
258 This specifies the number of group slots. The default is 6.
259
260
261 *FvwmProxy: SlotStyle n style
262 For non-group slots, this defines the appears of the indicated
263 slot. The style format matches ButtonStyle command. The
264 default is nothing.
265
266
267 *FvwmProxy: SlotAction n mouseaction response
268 For non-group slots, this defines the behavior of the indicated
269 slot. The mouse action and response is used the same as the
270 FvwmProxy Action configuration. The default is Nop.
271
272
273 *FvwmProxy: UndoLimit n
274 This specifies the number of entries in the undo buffer. this
275 limits how far back you can undo. The default is 8.
276
277
279 SendToModule FvwmProxy Show
280 Activate proxy windows for all windows on the current desk that
281 do not use the WindowListSkip option. If the desk is switched,
282 new proxies are automatically generated.
283
284
285 SendToModule FvwmProxy Hide
286 Deactivate all proxy windows. If a proxy is selected (such as
287 with the Next and Prev commands), the Select Action is call on
288 the window that the proxy represents. The default action
289 includes raising the window and warping the mouse to a position
290 over that window.
291
292
293 SendToModule FvwmProxy ShowToggle
294 If shown, hide. If hidden, show.
295
296
297 SendToModule FvwmProxy Abort
298 Deactivate all proxy windows. This differs from the Hide com‐
299 mand in that no action is taken on any selected window.
300
301
302 SendToModule FvwmProxy Circulate command
303 Tell FvwmProxy to run a conditional command and mark the result.
304 The imbedded command SendToModule FvwmProxy Mark is automati‐
305 cally appended after the optional condition, so supplying your
306 own imbedded command will probably fail. An example argument to
307 Circulate is ScanForWindow East South (CurrentPage). If the
308 proxies aren't already shown (such as with the Show command),
309 any Circulate command will automatically show the proxies.
310
311
312 SendToModule FvwmProxy Next (obsolete)
313 If a proxy window is selected, the next proxy is selected. Win‐
314 dows with the WindowListSkip option are ignored. The proxies
315 are sorted left to right during the Show command. If no proxy
316 is currently selected, but a proxy on this desk was selected on
317 a recent show, that proxy is selected. If no proxy on this desk
318 was recently selected, the leftmost proxy is used. This nearly
319 duplicates the functionality of Circulate ScanForWindow East
320 South (CurrentPage).
321
322
323 SendToModule FvwmProxy Prev (obsolete)
324 If a proxy window is selected, the previous proxy is selected.
325 The starting point is the same as with the Next command, except
326 that the choice with no recent selection is the rightmost proxy.
327 This nearly duplicates the functionality of Circulate ScanFor‐
328 Window West North (CurrentPage).
329
330
331 SendToModule FvwmProxy SoftToggle
332 Toggle the soft group inclusion setting for the selected window.
333 This setting is the same that can be activated using the SoftIn‐
334 clude and AutoSoft commands inside the FvwmProxy Group configu‐
335 ration.
336
337
338 SendToModule FvwmProxy IsolateToggle
339 Toggle the isolation setting for the selected window's group.
340 Isolated groups only allow one member to not be iconified at a
341 time. The members are also coerced to the same position and
342 size, constrained by their size increment.
343
344
345 SendToModule FvwmProxy PrevIsolated
346 If focused on a member of a isolating group, deiconify the mem‐
347 ber higher on list. If no member is higher, deiconify the last
348 member.
349
350
351 SendToModule FvwmProxy NextIsolated
352 If focused on a member of a isolating group, deiconify the mem‐
353 ber lower on list. If no member is higher, deiconify the first
354 member.
355
356
357 SendToModule FvwmProxy Undo
358 Attempt to undo the last window move and/or resize.
359
360
361 SendToModule FvwmProxy Redo
362 Attempt to redo the most recent Undo. If another move or resize
363 occurs since the previous undo, the redo buffer will be cleared.
364
365
367 The following are excerpts from a .fvwm2rc file which describe Fvwm‐
368 Proxy initialization commands:
369
370 Key Tab A M SendToModule FvwmProxy Circulate \
371 ScanForWindow East South (CurrentPage)
372 Key Tab A SM SendToModule FvwmProxy Circulate \
373 ScanForWindow West North (CurrentPage)
374
375 *FvwmProxy: Action ModifierRelease M SendToModule FvwmProxy Hide
376
377 But Meta-Shift-Tab can be awkward, so Meta-Q may be a better alterna‐
378 tive.
379
380 Key Q A M SendToModule FvwmProxy Circulate \
381 ScanForWindow West North (CurrentPage)
382
383
384 You might consider adding !Sticky to the (CurrentPage) conditional if
385 you use Sticky for low-interactivity programs, like load meters and
386 music players.
387
388 To have the proxies immediately pop up when you hold the Alt key, add
389
390 Key Meta_L A N SendToModule FvwmProxy Show
391
392 If that's too intrusive, you can assign Alt-Esc to switch the proxies
393 on and off by adding
394
395 Key Escape A M SendToModule FvwmProxy ShowToggle
396
397 Some platforms have problems where general Alt key combinations becom‐
398 ing otherwise dysfunctional after defining these mappings. If this
399 happens, it might be difficult to take full advantage of this module.
400
401 To have the mouse jump to the center instead of the upper left corner,
402 try adding
403
404 AddToFunc WindowListFunc
405 + I WarpToWindow 50 50
406
407 or just make your own list function from scratch, for example
408
409 DestroyFunc WindowListFunc
410 AddToFunc WindowListFunc
411 + I WindowId $[w.id] Raise
412 + I WindowId $[w.id] WarpToWindow 50 50
413
414
415 Note that the default configuration does not activate any Next/Prev
416 operations for Alt-Tab since that sequence is, by default, used by
417 another module. Adding appropriate key mappings to your .fvwm2rc will
418 switch this responsibility to FvwmProxy.
419
420 If you use ProxyIconified, you might consider adding Iconify actions.
421
422 AddToFunc WindowListFunc
423 + I WindowId $[w.id] Iconify Off
424
425 AddToFunc Raise-and-Deiconify
426 + I WindowId $[w.id] Raise
427 + I WindowId $[w.id] Iconify Off
428
429 *FvwmProxy: Action Click1 Raise-and-Deiconify
430 *FvwmProxy: Action Click2 Iconify
431
432
433 You can set up some basic slots fairly easily.
434
435 *FvwmProxy: GroupSlot 2
436 *FvwmProxy: GroupCount 5
437
438 *FvwmProxy: SlotStyle 1 MiniIcon
439 *FvwmProxy: SlotStyle 7 Pixmap "squeeze.xpm"
440 *FvwmProxy: SlotStyle 8 Pixmap "mini-up.xpm"
441 *FvwmProxy: SlotStyle 9 Pixmap "mini-bball.xpm"
442 *FvwmProxy: SlotStyle 10 Pixmap "mini-cross.xpm"
443
444 *FvwmProxy: SlotAction 1 Click1 Popup WindowMenu
445 *FvwmProxy: SlotAction 7 Click1 SendToModule FvwmProxy IsolateToggle
446 *FvwmProxy: SlotAction 8 Click1 SendToModule FvwmProxy SoftToggle
447 *FvwmProxy: SlotAction 9 Click1 Iconify
448 *FvwmProxy: SlotAction 10 Click1 Delete
449
450 In this example, WindowMenu is something you would have to define. If
451 your proxy width is too small, some slots can get cut off.
452
453 Undo and redo can be easily mapped to any keys.
454
455 Key Z A 3 SendToModule FvwmProxy Undo
456 Key R A 3 SendToModule FvwmProxy Redo
457
458
459 You can rotate through an isolated group using any keys. For example,
460 meta cursor-up and cursor-down could traverse the group.
461
462 Key Up A 3 SendToModule FvwmProxy PrevIsolated
463 Key Down A 3 SendToModule FvwmProxy NextIsolated
464
465
466 A somewhat impractical example of a group definition using GIMP is as
467 follows:
468
469 *FvwmProxy: Group "GIMP" Include "The GIMP"
470 *FvwmProxy: Group "GIMP" Include "Module Manager"
471 *FvwmProxy: Group "GIMP" SoftInclude "Unit Editor"
472 *FvwmProxy: Group "GIMP" AutoInclude
473 *FvwmProxy: Group "GIMP" AutoSoft
474 *FvwmProxy: Group "GIMP" Exclude "Preferences"
475
476
477 This sets up a hard attachment between the windows "The GIMP" and "Mod‐
478 ule Manager". The "Unit Editor" is also in the group, but only
479 responds to movement of one of the hard inclusions. Any window in the
480 same process or with the same client leader is also associated, but
481 they default to soft inclusion, except "Preferences" which is explic‐
482 itly excluded. Note that in this case, the explicit soft inclusion of
483 "Unit Editor" is redundant with the combination of AutoInclude and
484 AutoSoft. However, if AutoSoft was not specified, the explicit SoftIn‐
485 clude would distinguish that pattern from the otherwise hard inclusion
486 under just AutoInclude.
487
488
490 Jason Weber
491
492
493
4943rd Berkeley Distribution 05 September 2019 (2.6.9) FvwmProxy(1)