Man Linux: Main Page and Category List

NAME

       FvwmProxy - the fvwm proxy module

SYNOPSIS

       FvwmProxy  is spawned by fvwm, so no command line invocation will work.

DESCRIPTION

       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.

COPYRIGHTS

       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.

INVOCATION

       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.

CONFIGURATION OPTIONS

       *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.

COMMANDS

       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.

SAMPLE CONFIGURATION

       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.

AUTHOR

       Jason Weber