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 de‐
15 fault 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 ad‐
92 justing 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 ef‐
109 fects 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 se‐
123 lected window. If no window is selected, the currently focused
124 window is treated as the select window for ShowOnly filtering.
125 Covered mode extends Select mode to add proxy windows that over‐
126 lap the select real window. Just using Selected mode can result
127 in untouchable proxy windows that disappear before you can reach
128 them. Grouped mode extends Covered mode to show proxy windows
129 in the same window group as the selected window. In all cases,
130 iconified proxy windows never appear if ProxyIconified is false.
131
132
133 *FvwmProxy: Action mouseaction response
134 Tells FvwmProxy to do the specified response when the given ac‐
135 tion is done. The currently supported mouse actions are:
136 Click1, Click2, Click3 and so on, representing mouse clicks with
137 various buttons. By default, the module supports 3 mouse but‐
138 tons, but it can be compiled to support more. The default re‐
139 sponses are Raise, Nop, and Lower for Click1, Click2, and
140 Click3, respectively.
141
142
143 *FvwmProxy: Action Select command
144 This selects an fvwm function to be called during a FvwmProxy
145 Hide command for the window whose proxy was selected. The de‐
146 fault is WindowListFunc. WindowListFunc is predefined by the
147 fvwm install. You can replace it, add to it, or supply an inde‐
148 pendent function.
149
150
151 *FvwmProxy: Action Show command
152 This selects an fvwm function to be called during a FvwmProxy
153 Show command. The default is Nop.
154
155
156 *FvwmProxy: Action Hide command
157 This selects an fvwm function to be called during a FvwmProxy
158 Hide command. The default is Nop.
159
160
161 *FvwmProxy: Action Abort command
162 This selects an fvwm function to be called during a FvwmProxy
163 Abort command. The default is Nop.
164
165
166 *FvwmProxy: Action Mark command
167 This selects an fvwm function to be called on a window after it
168 is marked. The default is Nop.
169
170
171 *FvwmProxy: Action Unmark command
172 This selects an fvwm function to be called on a marked window
173 just after another window gets the mark. The default is Nop.
174
175
176 *FvwmProxy: Action ModifierRelease modifiers command
177 This selects an fvwm function to be called while proxies are
178 shown and the specified modifiers are all released. The modi‐
179 fiers are specified using the same syntax as in the Mouse com‐
180 mand. The default is Nop.
181
182
183 *FvwmProxy: Group groupname command pattern
184 For the given named group, adjust inclusion of the windows
185 matching the pattern. The groupname is a string identifier used
186 to associate windows. The window pattern uses the same format
187 as the Style command. The supported commands are Include, Soft‐
188 Include, WeakInclude, WeakSoftInclude, and Exclude. The com‐
189 mands ending in Include identify a pattern to add windows to the
190 group. Exclude identifies pattern to counteract inclusion pat‐
191 tern or auto-inclusion (see flags below). All exclusion checks
192 follow all inclusion checks. Soft inclusion limits the windows
193 in that pattern to only move when an non-soft window in the
194 group moves. Moving or resizing these windows does not affect
195 any other windows. They are also immune to edge effects. Soft
196 inclusion also affects provocation effects (see below). Weak
197 inclusion prevents inclusion purely on name, instead relying on
198 X11 leader or process id matching. Weakly included names will
199 not start a group, but will join a group in the same known
200 process or with the same leader. Once the window has joined,
201 the name is just used to determine if the inclusion is soft.
202
203
204 *FvwmProxy: Group groupname flag
205 For the given named group, activate the given flag. The sup‐
206 ported flags are AutoInclude, AutoSoft, and IgnoreIDs. All win‐
207 dow grouping is normally checked to only group windows that are
208 in the same process or that have the same X11 client leader.
209 IgnoreIDs deactivates this mechanism. AutoInclude automatically
210 includes any window that matches the same process or client
211 leader, without having to name them specifically. AutoSoft
212 makes all AutoInclusions soft (see inclusion description above).
213
214
215 *FvwmProxy: Group groupname provocation pattern
216 The provocation flags allow you to customize whether grouped
217 windows provoke each other in response to a raise/lower, desk
218 move, drag, or iconification change. The compound provocation
219 flag is of the form (No|In‐
220 herit)(Hard|Soft)(Raise|Desk|Drag|Icon|All). The pattern is op‐
221 tional and should already have been included. The pattern lim‐
222 its the change to only affect that part of the group. The first
223 element of the flag is optional and can turn off the effect, or,
224 with a pattern, can dynamically inherit the setting for the
225 group. The default is to turn the effect on. The second ele‐
226 ment can be used to only apply the change to windows with the
227 soft state either on or off. The default is to change both.
228 The third element specifies what provoking effect is being
229 changed: window raise/lower, moving to another desk, dragging
230 windows together, toggling iconification, or all of these. If
231 either the provoking window or a potentially provoked window has
232 an effect turned off, the provocation does not occur.
233
234
235 *FvwmProxy: SlotWidth w
236 This specifies the width of the icons used in slots. The de‐
237 fault is 16.
238
239
240 *FvwmProxy: SlotHeight h
241 This specifies the height of the icons used in slots. The de‐
242 fault is 16.
243
244
245 *FvwmProxy: SlotSpace d
246 This specifies the space between icons used in slots. The de‐
247 fault is 4.
248
249
250 *FvwmProxy: GroupSlot n
251 This specifies the first slot that represent a colored group.
252 Group slots don't need icons as the are drawn by predetermined
253 means. The default is 2.
254
255
256 *FvwmProxy: GroupCount n
257 This specifies the number of group slots. The default is 6.
258
259
260 *FvwmProxy: SlotStyle n style
261 For non-group slots, this defines the appears of the indicated
262 slot. The style format matches ButtonStyle command. The de‐
263 fault is nothing.
264
265
266 *FvwmProxy: SlotAction n mouseaction response
267 For non-group slots, this defines the behavior of the indicated
268 slot. The mouse action and response is used the same as the
269 FvwmProxy Action configuration. The default is Nop.
270
271
272 *FvwmProxy: UndoLimit n
273 This specifies the number of entries in the undo buffer. this
274 limits how far back you can undo. The default is 8.
275
276
278 SendToModule FvwmProxy Show
279 Activate proxy windows for all windows on the current desk that
280 do not use the WindowListSkip option. If the desk is switched,
281 new proxies are automatically generated.
282
283
284 SendToModule FvwmProxy Hide
285 Deactivate all proxy windows. If a proxy is selected (such as
286 with the Next and Prev commands), the Select Action is call on
287 the window that the proxy represents. The default action in‐
288 cludes raising the window and warping the mouse to a position
289 over that window.
290
291
292 SendToModule FvwmProxy ShowToggle
293 If shown, hide. If hidden, show.
294
295
296 SendToModule FvwmProxy Abort
297 Deactivate all proxy windows. This differs from the Hide com‐
298 mand in that no action is taken on any selected window.
299
300
301 SendToModule FvwmProxy Circulate command
302 Tell FvwmProxy to run a conditional command and mark the result.
303 The imbedded command SendToModule FvwmProxy Mark is automati‐
304 cally appended after the optional condition, so supplying your
305 own imbedded command will probably fail. An example argument to
306 Circulate is ScanForWindow East South (CurrentPage). If the
307 proxies aren't already shown (such as with the Show command),
308 any Circulate command will automatically show the proxies.
309
310
311 SendToModule FvwmProxy Next (obsolete)
312 If a proxy window is selected, the next proxy is selected. Win‐
313 dows with the WindowListSkip option are ignored. The proxies
314 are sorted left to right during the Show command. If no proxy
315 is currently selected, but a proxy on this desk was selected on
316 a recent show, that proxy is selected. If no proxy on this desk
317 was recently selected, the leftmost proxy is used. This nearly
318 duplicates the functionality of Circulate ScanForWindow East
319 South (CurrentPage).
320
321
322 SendToModule FvwmProxy Prev (obsolete)
323 If a proxy window is selected, the previous proxy is selected.
324 The starting point is the same as with the Next command, except
325 that the choice with no recent selection is the rightmost proxy.
326 This nearly duplicates the functionality of Circulate ScanFor‐
327 Window West North (CurrentPage).
328
329
330 SendToModule FvwmProxy SoftToggle
331 Toggle the soft group inclusion setting for the selected window.
332 This setting is the same that can be activated using the SoftIn‐
333 clude and AutoSoft commands inside the FvwmProxy Group configu‐
334 ration.
335
336
337 SendToModule FvwmProxy IsolateToggle
338 Toggle the isolation setting for the selected window's group.
339 Isolated groups only allow one member to not be iconified at a
340 time. The members are also coerced to the same position and
341 size, constrained by their size increment.
342
343
344 SendToModule FvwmProxy PrevIsolated
345 If focused on a member of a isolating group, deiconify the mem‐
346 ber higher on list. If no member is higher, deiconify the last
347 member.
348
349
350 SendToModule FvwmProxy NextIsolated
351 If focused on a member of a isolating group, deiconify the mem‐
352 ber lower on list. If no member is higher, deiconify the first
353 member.
354
355
356 SendToModule FvwmProxy Undo
357 Attempt to undo the last window move and/or resize.
358
359
360 SendToModule FvwmProxy Redo
361 Attempt to redo the most recent Undo. If another move or resize
362 occurs since the previous undo, the redo buffer will be cleared.
363
364
366 The following are excerpts from a .fvwm2rc file which describe Fvwm‐
367 Proxy initialization commands:
368
369 Key Tab A M SendToModule FvwmProxy Circulate \
370 ScanForWindow East South (CurrentPage)
371 Key Tab A SM SendToModule FvwmProxy Circulate \
372 ScanForWindow West North (CurrentPage)
373
374 *FvwmProxy: Action ModifierRelease M SendToModule FvwmProxy Hide
375
376 But Meta-Shift-Tab can be awkward, so Meta-Q may be a better alterna‐
377 tive.
378
379 Key Q A M SendToModule FvwmProxy Circulate \
380 ScanForWindow West North (CurrentPage)
381
382
383 You might consider adding !Sticky to the (CurrentPage) conditional if
384 you use Sticky for low-interactivity programs, like load meters and mu‐
385 sic players.
386
387 To have the proxies immediately pop up when you hold the Alt key, add
388
389 Key Meta_L A N SendToModule FvwmProxy Show
390
391 If that's too intrusive, you can assign Alt-Esc to switch the proxies
392 on and off by adding
393
394 Key Escape A M SendToModule FvwmProxy ShowToggle
395
396 Some platforms have problems where general Alt key combinations becom‐
397 ing otherwise dysfunctional after defining these mappings. If this
398 happens, it might be difficult to take full advantage of this module.
399
400 To have the mouse jump to the center instead of the upper left corner,
401 try adding
402
403 AddToFunc WindowListFunc
404 + I WarpToWindow 50 50
405
406 or just make your own list function from scratch, for example
407
408 DestroyFunc WindowListFunc
409 AddToFunc WindowListFunc
410 + I WindowId $[w.id] Raise
411 + I WindowId $[w.id] WarpToWindow 50 50
412
413
414 Note that the default configuration does not activate any Next/Prev op‐
415 erations for Alt-Tab since that sequence is, by default, used by an‐
416 other module. Adding appropriate key mappings to your .fvwm2rc will
417 switch this responsibility to FvwmProxy.
418
419 If you use ProxyIconified, you might consider adding Iconify actions.
420
421 AddToFunc WindowListFunc
422 + I WindowId $[w.id] Iconify Off
423
424 AddToFunc Raise-and-Deiconify
425 + I WindowId $[w.id] Raise
426 + I WindowId $[w.id] Iconify Off
427
428 *FvwmProxy: Action Click1 Raise-and-Deiconify
429 *FvwmProxy: Action Click2 Iconify
430
431
432 You can set up some basic slots fairly easily.
433
434 *FvwmProxy: GroupSlot 2
435 *FvwmProxy: GroupCount 5
436
437 *FvwmProxy: SlotStyle 1 MiniIcon
438 *FvwmProxy: SlotStyle 7 Pixmap "squeeze.xpm"
439 *FvwmProxy: SlotStyle 8 Pixmap "mini-up.xpm"
440 *FvwmProxy: SlotStyle 9 Pixmap "mini-bball.xpm"
441 *FvwmProxy: SlotStyle 10 Pixmap "mini-cross.xpm"
442
443 *FvwmProxy: SlotAction 1 Click1 Popup WindowMenu
444 *FvwmProxy: SlotAction 7 Click1 SendToModule FvwmProxy IsolateToggle
445 *FvwmProxy: SlotAction 8 Click1 SendToModule FvwmProxy SoftToggle
446 *FvwmProxy: SlotAction 9 Click1 Iconify
447 *FvwmProxy: SlotAction 10 Click1 Delete
448
449 In this example, WindowMenu is something you would have to define. If
450 your proxy width is too small, some slots can get cut off.
451
452 Undo and redo can be easily mapped to any keys.
453
454 Key Z A 3 SendToModule FvwmProxy Undo
455 Key R A 3 SendToModule FvwmProxy Redo
456
457
458 You can rotate through an isolated group using any keys. For example,
459 meta cursor-up and cursor-down could traverse the group.
460
461 Key Up A 3 SendToModule FvwmProxy PrevIsolated
462 Key Down A 3 SendToModule FvwmProxy NextIsolated
463
464
465 A somewhat impractical example of a group definition using GIMP is as
466 follows:
467
468 *FvwmProxy: Group "GIMP" Include "The GIMP"
469 *FvwmProxy: Group "GIMP" Include "Module Manager"
470 *FvwmProxy: Group "GIMP" SoftInclude "Unit Editor"
471 *FvwmProxy: Group "GIMP" AutoInclude
472 *FvwmProxy: Group "GIMP" AutoSoft
473 *FvwmProxy: Group "GIMP" Exclude "Preferences"
474
475
476 This sets up a hard attachment between the windows "The GIMP" and "Mod‐
477 ule Manager". The "Unit Editor" is also in the group, but only re‐
478 sponds to movement of one of the hard inclusions. Any window in the
479 same process or with the same client leader is also associated, but
480 they default to soft inclusion, except "Preferences" which is explic‐
481 itly excluded. Note that in this case, the explicit soft inclusion of
482 "Unit Editor" is redundant with the combination of AutoInclude and Au‐
483 toSoft. However, if AutoSoft was not specified, the explicit SoftIn‐
484 clude would distinguish that pattern from the otherwise hard inclusion
485 under just AutoInclude.
486
487
489 Jason Weber
490
491
492
4933rd Berkeley Distribution 19 October 2022 (2.7.0) FvwmProxy(1)