Provided by: fvwm_2.6.5.ds-3_amd64 bug

NAME

       FvwmCommand - fvwm command external interface

SYNOPSIS

       FvwmCommand [-cmrvw] [-S name] [-i level] [-f name] [-F level] [command...]

DESCRIPTION

       FvwmCommand  lets you monitor fvwm transaction and issue fvwm command from a shell command
       line or scripts.  FvwmCommand takes each argument as a fvwm command. Quotes can be used to
       send commands including spaces.
       FvwmCommand 'FvwmPager 0 1'

INVOCATION

       FvwmCommandS  should  be spawned once by fvwm, either in .fvwm2rc file, from menu, or from
       FvwmConsole.  From then on, FvwmCommand can be called from a shell or  script  to  execute
       fvwm commands.

       From within .fvwm2rc file:
       Module FvwmCommandS

           or

       AddToFunc StartFunction "I" Module FvwmCommandS

       Then, in script file or from shell:

       FvwmCommand  'popup Utilities'

OPTIONS

       -c  Informs  FvwmCommand  to read multiple commands from the standard input instead of the
           one command specified in the command line arguments.  This disables -m or -i.

           (echo "Exec xload"; echo "Beep") | FvwmCommand -c

       -F <level>
           Specifies the level of fvwm window flags FvwmCommand outputs.

           0   No window flags will be printed.

           2   Full window flags will be printed if information level, -i option, is 2 or 3.

       -f <name>
           Specifies an alternative FIFO set to communicate with a server.  The default FIFO  set
           is  /var/tmp/FvwmCommand-${DISPLAY}C, in which FvwmCommand..C is used to send commands
           and  FvwmCommand..M   is   to   receive   messages.   If   that   path   is   unusable
           ${FVWM_USERDIR}/FvwmCommand-${DISPLAY}  will  be used instead.  FvwmCommandS must have
           been invoked with  the  same  <name>  as  its  first  argument  prior  to  FvwmCommand
           invocation.  Alternatively, option -S can be used. Refer option -S.  This option -f is
           useful when a dedicated connection is necessary to run a background job while  another
           connection is kept for interactive use.

       -i <level>
           Specifies the level of information that FvwmCommand outputs.

           0   Error messages only.
               FvwmCommand -i0 FvwmBanner
               will show a banner without any output. On the other hand,
               FvwmCommand -i 0 foobar
               will return,
               [fvwm][executeModule]: <<ERROR>> No such module
               ´foobar´ in ModulePath '/usr/lib/X11/fvwm'

               Note  that  Fvwm  doesn't  return  any  error  messages  in cases like below since
               'windowid' itself is a valid command.

               FvwmCommand -i 0 'windowid foo bar'

           1   Errors, replies and window configuration information. This is the default.
               FvwmCommand send_windowlist
               Information like below will show up.

               0x02000014 window               FvwmConsole
               0x02000014 icon                 FvwmConsole
               0x02000014 class                XTerm
               0x02000014 resource             FvwmConsole
               0x01c00014 window               console
               0x01c00014 icon                 console
               0x01c00014 class                XTerm
               0x01c00014 resource             console
               0x01000003 window               Fvwm Pager
               0x01000003 icon
               0x01000003 class                FvwmModule
               0x01000003 resource             FvwmPager
               0x00c0002c window               emacs: FvwmCommand.man
               0x00c0002c icon                 FvwmCommand.man
               0x00c0002c icon file            xemacs.xpm
               0x00c0002c class                Emacs
               0x00c0002c resource             emacs
               end windowlist
               The first column shows the window ID number,  which  can  be  used  in  'windowid'
               command.   The  second  column shows the information types.  The last column shows
               the information contents.  If no information is returned,  add  -w  <time>  or  -r
               option.  This might be needed in heavily loaded systems.

           2   Above and static window information.
               FvwmCommand -i2 'FvwmPager 0 1'
               The below is its output.

               0x03c00003 frame                x 962, y 743, width 187, height 114
               0x03c00003 desktop              0
               0x03c00003 StartIconic          no
               0x03c00003 OnTop                yes
               0x03c00003 Sticky               yes
               0x03c00003 WindowListSkip       yes
               0x03c00003 SuppressIcon         no
               0x03c00003 NoiconTitle          no
               0x03c00003 Lenience             no
               0x03c00003 StickyIcon           no
               0x03c00003 CirculateSkipIcon    no
               0x03c00003 CirculateSkip        no
               0x03c00003 ClickToFocus         no
               0x03c00003 SloppyFocus          no
               0x03c00003 SkipMapping          no
               0x03c00003 Handles              no
               0x03c00003 Title                no
               0x03c00003 Mapped               no
               0x03c00003 Iconified            no
               0x03c00003 Transient            no
               0x03c00003 Raised               no
               0x03c00003 Visible              no
               0x03c00003 IconOurs             no
               0x03c00003 PixmapOurs           no
               0x03c00003 ShapedIcon           no
               0x03c00003 Maximized            no
               0x03c00003 WmTakeFocus          no
               0x03c00003 WmDeleteWindow       yes
               0x03c00003 IconMoved            no
               0x03c00003 IconUnmapped         no
               0x03c00003 MapPending           no
               0x03c00003 HintOverride         yes
               0x03c00003 MWMButtons           no
               0x03c00003 MWMBorders           no
               0x03c00003 title height         0
               0x03c00003 border width         4
               0x03c00003 base size            width 8, height 7
               0x03c00003 size increment       width 9, height 9
               0x03c00003 min size             width 8, height 7
               0x03c00003 max size             width 32767, height 32767
               0x03c00003 gravity              SouthEast
               0x03c00003 pixel                text 0xffffff, back 0x7f7f7f
               0x03c00003 window               Fvwm Pager
               0x03c00003 icon                 Fvwm Pager
               0x03c00003 class                FvwmModule
               0x03c00003 resource             FvwmPager

           3   All information available.
               FvwmCommand -i3 'Killmodule Fvwm*'
               This will report which windows are closed.
               0x03400003 destroy
               0x02400002 destroy

       -m  Monitors   fvwm  window  information  transaction.  FvwmCommand  continuously  outputs
           information that it receives without exiting.  This option can be used in a background
           job often combined with -i3 option in order to control windows dynamically.
           FvwmCommand -mi3 | grep 'iconify'
           It will report when windows are iconified or de-iconified.

           Note:  FvwmCommand does not block buffer its output but many utilities such as grep or
           sed use block buffer. The output of the next example will not  show  up  until  either
           FvwmCommand is terminated or stdout buffer from grep is filled.
           FvwmCommand -mi3 | grep ' map' |
           sed 's/\(0x[0-9a-f]*\).*/windowid \1 move 0 0/'
           Instead,  use  tools  with buffer control such as pty or perl.  The below will iconify
           new windows when opened.
           Fvwm -mi3 | perl -ne '
           $|=1;
           print "windowid $1 iconify\n" if /^(0x\S+) add/;
           ´ > ~/.FvwmCommandC

       -r  Waits for a reply before it exits.  FvwmCommand exits if no information  or  error  is
           returned in a fixed amount of time period. (Refer option -w.)  The option -r overrides
           this time limit and wait for at least one message back.  After the initial message, it
           will  wait  for  another  message  for the time limit.  This option is useful when the
           system is too loaded to make any prediction when the  system  is  responding  AND  the
           command causes some message to be sent back.

       -S <name>
           Invokes another server, FvwmCommandS, with FIFO set <name>.
           If  -f  option is not used with this option, the invoking FvwmCommand uses the default
           FIFO to communicate the default server to invoke a new server.
           If -f option is used with this option, the invoking FvwmCommand uses the default  FIFO
           to  communicate  the  default server to invoke a new server. Then, switch the FIFO set
           and start communicating the new server.
           This option -S is useful when a dedicated connection is necessary to run a  background
           job while another connection is kept for interactive use.

           If  the  <name>  is a relative path name, that is relative from where fvwm is running,
           not from where FvwmCommand is invoked.

       -v  Returns FvwmCommand version number and exits.

       -w <time>
           Waits for <time> micro seconds for a message.  FvwmCommand exits if no information  or
           error  is  returned  in  a  fixed amount of time period unless option -m is used.  The
           default is 500 ms. This option overrides this default value.

WRAPPER

       FvwmCommand.sh has bourne shell function definitions to keep the syntax  similar  to  fvwm
       configuration file.  This file is to be sourced:
       . FvwmCommand.sh
       DesktopSize 5x5
       FvwmCommand.pm is for perl in order to keep the syntax similar to fvwm configuration file.
       Commas can be used to separate fvwm commands' arguments.
       use FvwmCommand;
       if( $ARGV[0] eq 'home' ) {
           Desk 0,0; GotoPage '1 1';
       }elsif( $ARGV[0] eq 'jump' ) {
           Desk "0 2"; GotoPage 0, 1;
       }
       Although arguments in FvwmCommand are not case sensitive as fvwm, the functions defined in
       FvwmCommand.sh and FvwmCommand.pl are case sensitive.

ERRORS

       If  the  following  error  message  show  up,  it  is most likely that FvwmCommandS is not
       running.
       FvwmCommand error in opening message fifo
       --No such file or directory--
       Fvwm modules don't return error messages  to  fvwm  but  output  on  stderr.  These  error
       messages will not be shown as FvwmCommand messages.

       FvwmCommand  is  an  interface to send commands to and receive information from Fvwm2 from
       processes which are not Fvwm modules.

EXAMPLES

         test1.pl      - takes 1 argument  't' to invoke FvwmTalk
                                           'td'  to kill FvwmTalk
                                           ''  to move windows
         test2.sh      - takes 1 argument  'b'  to invoke FvwmButtons
                                           'kb' to kill FvwmButtons
                                           'r'  to change # of button rows
                                           'c'  to change # of button columns
         ex-auto.pl    - auto raise small windows. It will keep them visible.
         ex-cascade.pl - cascade windows, then move them back.
         ex-grpmv.pl   - choose a group of windows to move together.

         Above examples are not meant to be practical but to show how it can
         be done.

         focus-link.pl
            This is a user programmable window focus script.
            Default behavior is:
             1. When a window is opened up, focus the window and move the pointer
                to it. The parent window regains focus when a window is closed.
                Parenthood is determined when a window is opened. It is the last
                focused window with the same X class.
             2. #1 would not occur to AcroRead opening window.
             3. #1 would not occur when SkipMapping is set and the window is the
                only window of its class.
             4. For Netscape find dialog window, addition to #1, resize the window
                to 300x150 pixels and move it to East edge of the screen.
                Download/upload windows will not be focused nor be in focus link
                list.
             5. Move appletviewer to NorthWest corner.
             6. Xterm won't focus back to its parent after closed.
             7. When a window is de-iconified, focus it and move the pointer.

         focus-Netscape.pl
             Focuses pop-up windows, such as 'open URL' or 'find' whenever
             opened up. This let the user to type in immediately without
             moving mouse. This script also moves 'download' window to the
             right edge to keep it visible. If this is invoked from
             .fvwm2rc, use as:

                 AddToFunc "StartFunction" "I" Module  FvwmCommandS
                 + "I" Exec $HOME/scripts/focus-Netscape.pl

         push-away.pl <direction> <window name>
             Pushes windows away to avoid overlapping. use as:

                 push-away.pl up 'Fvwm Pager'

SEE ALSO

       fvwm

AUTHOR

       FvwmCommand is the original work of Toshi Isogai.