"Fossies" - the Fresh Open Source Software archive 
Member "fvwm-2.7.0/modules/FvwmProxy/FvwmProxy.1" of archive fvwm-2.7.0.tar.gz:
Table of Contents
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 capabilites 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.
- *FvwmProxy: Colorset
n
- Specifies the color theme for unselected proxy windows.
- *FvwmProxy: SelectColorset
n
- Specifies the color theme for the selected proxy window.
- *FvwmProxy: IconifiedColorset
n
- Specifies the color theme for proxy windows of iconified windows. This
is only meaningful in conjuction with the ProxyIconified option on.
- *FvwmProxy:
Font font
- Specifies the font used for large proxy window text. This usually
contains the icon string and is nearly vertically centered in the proxy.
If there is no icon string, the title bar string is used. If this text exceeds
the width of the proxy, it is cropped on the right. If no Font is specified,
a default is used.
- *FvwmProxy: SmallFont font
- Specifies the font used for
the auxillary proxy window text. This usually contains the title bar string,
but is omitted if it is identical to the icon string and that text was
not cropped. The text is drawn close to the bottom of the proxy and should
probably be the smallest legible font available. If this text exceeds the
width of the proxy, it is cropped on the left. If no SmallFont is specified,
this text is never drawn.
- *FvwmProxy: Width w
- Specifies the size in X of
each proxy window. The default is 180.
- *FvwmProxy: Height h
- Specifies the
size in Y of each proxy window. The default is 60.
- *FvwmProxy: Separation
d
- Specifies the minimum distance between proxy windows when adjusting for
collisions. The default is 10.
- *FvwmProxy: ShowMiniIcons bool
- If true, proxy
windows show the mini icon for the window they represent, if it has a mini
icon. The default is true.
- *FvwmProxy: EnterSelect bool
- If true, a proxy
is automatically selected when the mouse is moved over the proxy, even
if no mouse buttons are pressed. The default is false.
- *FvwmProxy: ProxyMove
bool
- If true, moving a proxy window will move the window it represents. Currently,
the proxied window doesn’t recognize snap effects during this operation.
The default is false.
- *FvwmProxy: ProxyIconified bool
- If true, continue
to show proxy windows when they are iconified. In addition, consider adding
click actions that Iconify on and off, such as on the middlemouse button.
The default is false.
- *FvwmProxy: ShowOnly mode
- Limits the appearance of
proxy windows during the Show action. The supported modes are Selected,
Covered, Grouped, and All. The default is All which shows every proxy window
on the current desk. Select mode will only show the proxy window for the
selected window. If no window is selected, the currently focused window
is treated as the select window for ShowOnly filtering. Covered mode extends
Select mode to add proxy windows that overlap the select real window. Just
using Selected mode can result in untouchable proxy windows that disappear
before you can reach them. Grouped mode extends Covered mode to show proxy
windows in the same window group as the selected window. In all cases, iconified
proxy windows never appear if ProxyIconified is false.
- *FvwmProxy: Action
mouseaction response
- Tells FvwmProxy to do the specified response when the
given action is done. The currently supported mouse actions are: Click1,
Click2, Click3 and so on, representing mouse clicks with various buttons.
By default, the module supports 3 mouse buttons, but it can be compiled
to support more. The default responses are Raise, Nop, and Lower for Click1,
Click2, and Click3, respectively.
- *FvwmProxy: Action Select command
- This
selects an fvwm function to be called during a FvwmProxy Hide command for
the window whose proxy was selected. The default is WindowListFunc. WindowListFunc
is predefined by the fvwm install. You can replace it, add to it, or supply
an independent function.
- *FvwmProxy: Action Show command
- This selects an
fvwm function to be called during a FvwmProxy Show command. The default
is Nop.
- *FvwmProxy: Action Hide command
- This selects an fvwm function to
be called during a FvwmProxy Hide command. The default is Nop.
- *FvwmProxy:
Action Abort command
- This selects an fvwm function to be called during a
FvwmProxy Abort command. The default is Nop.
- *FvwmProxy: Action Mark command
- This
selects an fvwm function to be called on a window after it is marked. The
default is Nop.
- *FvwmProxy: Action Unmark command
- This selects an fvwm function
to be called on a marked window just after another window gets the mark.
The default is Nop.
- *FvwmProxy: Action ModifierRelease modifiers command
- This
selects an fvwm function to be called while proxies are shown and the specified
modifiers are all released. The modifiers are specified using the same
syntax as in the Mouse command. The default is Nop.
- *FvwmProxy: Group groupname
command pattern
- For the given named group, adjust inclusion of the windows
matching the pattern. The groupname is a string identifier used to associate
windows. The window pattern uses the same format as the Style command. The
supported commands are Include, SoftInclude, WeakInclude, WeakSoftInclude,
and Exclude. The commands ending in Include identify a pattern to add windows
to the group. Exclude identifies pattern to counteract inclusion pattern
or auto-inclusion (see flags below). All exclusion checks follow all inclusion
checks. Soft inclusion limits the windows in that pattern to only move when
an non-soft window in the group moves. Moving or resizing these windows does
not affect any other windows. They are also immune to edge effects. Soft
inclusion also affects provocation effects (see below). Weak inclusion prevents
inclusion purely on name, instead relying on X11 leader or process id matching.
Weakly included names will not start a group, but will join a group in
the same known process or with the same leader. Once the window has joined,
the name is just used to determine if the inclusion is soft.
- *FvwmProxy:
Group groupname flag
- For the given named group, activate the given flag.
The supported flags are AutoInclude, AutoSoft, and IgnoreIDs. All window
grouping is normally checked to only group windows that are in the same
process or that have the same X11 client leader. IgnoreIDs deactivates this
mechanism. AutoInclude automatically includes any window that matches the
same process or client leader, without having to name them specifically.
AutoSoft makes all AutoInclusions soft (see inclusion description above).
- *FvwmProxy: Group groupname provocation pattern
- The provocation flags allow
you to customize whether grouped windows provoke each other in response
to a raise/lower, desk move, drag, or iconification change. The compound
provocation flag is of the form (No|Inherit)(Hard|Soft)(Raise|Desk|Drag|Icon|All).
The pattern is optional and should already have been included. The pattern
limits the change to only affect that part of the group. The first element
of the flag is optional and can turn off the effect, or, with a pattern,
can dynamically inherit the setting for the group. The default is to turn
the effect on. The second element can be used to only apply the change to
windows with the soft state either on or off. The default is to change both.
The third element specifies what provoking effect is being changed: window
raise/lower, moving to another desk, dragging windows together, toggling
iconification, or all of these. If either the provoking window or a potentially
provoked window has an effect turned off, the provocation does not occur.
- *FvwmProxy: SlotWidth w
- This specifies the width of the icons used in slots.
The default is 16.
- *FvwmProxy: SlotHeight h
- This specifies the height of
the icons used in slots. The default is 16.
- *FvwmProxy: SlotSpace d
- This
specifies the space between icons used in slots. The default is 4.
- *FvwmProxy:
GroupSlot n
- This specifies the first slot that represent a colored group.
Group slots don’t need icons as the are drawn by predetermined means. The
default is 2.
- *FvwmProxy: GroupCount n
- This specifies the number of group
slots. The default is 6.
- *FvwmProxy: SlotStyle n style
- For non-group slots,
this defines the appears of the indicated slot. The style format matches
ButtonStyle command. The default is nothing.
- *FvwmProxy: SlotAction n mouseaction
response
- For non-group slots, this defines the behavior of the indicated
slot. The mouse action and response is used the same as the FvwmProxy Action
configuration. The default is Nop.
- *FvwmProxy: UndoLimit n
- This specifies
the number of entries in the undo buffer. this limits how far back you can
undo. The default is 8.
- SendToModule FvwmProxy Show
- Activate proxy
windows for all windows on the current desk that do not use the WindowListSkip
option. If the desk is switched, new proxies are automatically generated.
- SendToModule FvwmProxy Hide
- Deactivate all proxy windows. If a proxy is
selected (such as with the Next and Prev commands), the Select Action is
call on the window that the proxy represents. The default action includes
raising the window and warping the mouse to a position over that window.
- SendToModule FvwmProxy ShowToggle
- If shown, hide. If hidden, show.
- SendToModule
FvwmProxy Abort
- Deactivate all proxy windows. This differs from the Hide
command in that no action is taken on any selected window.
- SendToModule
FvwmProxy Circulate command
- Tell FvwmProxy to run a conditional command
and mark the result. The imbedded command SendToModule FvwmProxy Mark is
automatically appended after the optional condition, so supplying your
own imbedded command will probably fail. An example argument to Circulate
is ScanForWindow East South (CurrentPage). If the proxies aren’t already
shown (such as with the Show command), any Circulate command will automatically
show the proxies.
- SendToModule FvwmProxy Next (obsolete)
- If a proxy window
is selected, the next proxy is selected. Windows with the WindowListSkip
option are ignored. The proxies are sorted left to right during the Show
command. If no proxy is currently selected, but a proxy on this desk was
selected on a recent show, that proxy is selected. If no proxy on this desk
was recently selected, the leftmost proxy is used. This nearly duplicates
the functionality of Circulate ScanForWindow East South (CurrentPage).
- SendToModule FvwmProxy Prev (obsolete)
- If a proxy window is selected, the
previous proxy is selected. The starting point is the same as with the Next
command, except that the choice with no recent selection is the rightmost
proxy. This nearly duplicates the functionality of Circulate ScanForWindow
West North (CurrentPage).
- SendToModule FvwmProxy SoftToggle
- Toggle the soft
group inclusion setting for the selected window. This setting is the same
that can be activated using the SoftInclude and AutoSoft commands inside
the FvwmProxy Group configuration.
- SendToModule FvwmProxy IsolateToggle
- Toggle
the isolation setting for the selected window’s group. Isolated groups only
allow one member to not be iconified at a time. The members are also coerced
to the same position and size, constrained by their size increment.
- SendToModule
FvwmProxy PrevIsolated
- If focused on a member of a isolating group, deiconify
the member higher on list. If no member is higher, deiconify the last member.
- SendToModule FvwmProxy NextIsolated
- If focused on a member of a isolating
group, deiconify the member lower on list. If no member is higher, deiconify
the first member.
- SendToModule FvwmProxy Undo
- Attempt to undo the last window
move and/or resize.
- SendToModule FvwmProxy Redo
- Attempt to redo the most
recent Undo. If another move or resize occurs since the previous undo, the
redo buffer will be cleared.
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
Key Meta_L A N SendToModule FvwmProxy Show
If that’s too intrusive, you can assign Alt-Esc to switch the proxies on
and off by adding
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
AddToFunc WindowListFunc
+ I WarpToWindow 50 50
or just make your own list function from scratch, for example
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 Delete
In 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
Table of Contents