FvwmProxy(1) | Fvwm Modules | FvwmProxy(1) |
FvwmProxy - the fvwm proxy module
FvwmProxy is spawned by fvwm, so no command line invocation will work.
The FvwmProxy allows the user to locate and control windows obscured by other windows by using small non-overlapping proxy windows. The default capabilities include raising and lowering the proxied windows.
Using the sample configuration, pressing Alt-Tab cycles through the windows and allows the use of assignable click actions on the proxies. Releasing the Alt key deactivates the proxy windows. By default, pressing the left or right mouse buttons on a proxy window raises or lowers the associated proxied window respectively. An additional mapping can have the proxies automatically appear by just holding the Alt key.
Proxy windows are always on top and try to center on the regular window they proxy. A simple collision algorithm tweaks the positions of the proxy windows to prevent them from overlapping.
The FvwmProxy program is original work by Jason Weber.
Copyright 2002, Jason Weber. No guarantees or warranties or anything are provided or implied in any way whatsoever. Use this program at your own risk.
FvwmProxy can be invoked by inserting the line 'Module FvwmProxy' in the .fvwm2rc file. This can be placed on a line by itself, if FvwmProxy is to be spawned during fvwm's initialization, or can be bound to a menu or mouse button or keystroke to invoke it later. Fvwm will search directory specified in the ModulePath configuration option to attempt to locate FvwmProxy.
The following are excerpts from a .fvwm2rc file which describe FvwmProxy initialization commands:
Key Tab A M SendToModule FvwmProxy Circulate \
ScanForWindow East South (CurrentPage)
Key Tab A SM SendToModule FvwmProxy Circulate \
ScanForWindow West North (CurrentPage)
*FvwmProxy: Action ModifierRelease M SendToModule FvwmProxy Hide
But Meta-Shift-Tab can be awkward, so Meta-Q may be a better alternative.
Key Q A M SendToModule FvwmProxy Circulate \
ScanForWindow West North (CurrentPage)
You might consider adding !Sticky to the (CurrentPage) conditional if you use Sticky for low-interactivity programs, like load meters and music players.
To have the proxies immediately pop up when you hold the Alt key, add
If that's too intrusive, you can assign Alt-Esc to switch the proxies on and off by adding
Key Meta_L A N SendToModule FvwmProxy Show
Key Escape A M SendToModule FvwmProxy ShowToggle
Some platforms have problems where general Alt key combinations becoming otherwise dysfunctional after defining these mappings. If this happens, it might be difficult to take full advantage of this module.
To have the mouse jump to the center instead of the upper left corner, try adding
or just make your own list function from scratch, for example
AddToFunc WindowListFunc
+ I WarpToWindow 50 50
DestroyFunc WindowListFunc
AddToFunc WindowListFunc
+ I WindowId $[w.id] Raise
+ I WindowId $[w.id] WarpToWindow 50 50
Note that the default configuration does not activate any Next/Prev operations for Alt-Tab since that sequence is, by default, used by another module. Adding appropriate key mappings to your .fvwm2rc will switch this responsibility to FvwmProxy.
If you use ProxyIconified, you might consider adding Iconify actions.
AddToFunc WindowListFunc
+ I WindowId $[w.id] Iconify Off
AddToFunc Raise-and-Deiconify
+ I WindowId $[w.id] Raise
+ I WindowId $[w.id] Iconify Off
*FvwmProxy: Action Click1 Raise-and-Deiconify
*FvwmProxy: Action Click2 Iconify
You can set up some basic slots fairly easily.
*FvwmProxy: GroupSlot 2 *FvwmProxy: GroupCount 5 *FvwmProxy: SlotStyle 1 MiniIcon *FvwmProxy: SlotStyle 7 Pixmap "squeeze.xpm" *FvwmProxy: SlotStyle 8 Pixmap "mini-up.xpm" *FvwmProxy: SlotStyle 9 Pixmap "mini-bball.xpm" *FvwmProxy: SlotStyle 10 Pixmap "mini-cross.xpm" *FvwmProxy: SlotAction 1 Click1 Popup WindowMenu *FvwmProxy: SlotAction 7 Click1 SendToModule FvwmProxy IsolateToggle *FvwmProxy: SlotAction 8 Click1 SendToModule FvwmProxy SoftToggle *FvwmProxy: SlotAction 9 Click1 Iconify *FvwmProxy: SlotAction 10 Click1 DeleteIn this example, WindowMenu is something you would have to define. If your proxy width is too small, some slots can get cut off.
Undo and redo can be easily mapped to any keys.
Key Z A 3 SendToModule FvwmProxy Undo Key R A 3 SendToModule FvwmProxy Redo
You can rotate through an isolated group using any keys. For example, meta cursor-up and cursor-down could traverse the group.
Key Up A 3 SendToModule FvwmProxy PrevIsolated Key Down A 3 SendToModule FvwmProxy NextIsolated
A somewhat impractical example of a group definition using GIMP is as follows:
*FvwmProxy: Group "GIMP" Include "The GIMP" *FvwmProxy: Group "GIMP" Include "Module Manager" *FvwmProxy: Group "GIMP" SoftInclude "Unit Editor" *FvwmProxy: Group "GIMP" AutoInclude *FvwmProxy: Group "GIMP" AutoSoft *FvwmProxy: Group "GIMP" Exclude "Preferences"
This sets up a hard attachment between the windows "The GIMP" and "Module Manager". The "Unit Editor" is also in the group, but only responds to movement of one of the hard inclusions. Any window in the same process or with the same client leader is also associated, but they default to soft inclusion, except "Preferences" which is explicitly excluded. Note that in this case, the explicit soft inclusion of "Unit Editor" is redundant with the combination of AutoInclude and AutoSoft. However, if AutoSoft was not specified, the explicit SoftInclude would distinguish that pattern from the otherwise hard inclusion under just AutoInclude.
Jason Weber
19 October 2022 (2.7.0) | 3rd Berkeley Distribution |