FvwmEvent gets config info from fvwm's module configuration database (see fvwm(1), section MODULECOMMANDS), and looks for certain configuration options:
*FvwmEvent: Cmd command
This determines the fvwm function that is to be called with the event parameters. You might want
to do one of the following (details below):
# play sounds
*FvwmEvent: Cmd builtin-rplay
# execute distinct fvwm functions
*FvwmEvent: Cmd
# execute distinct external programs
*FvwmEvent: Cmd exec
This version of FvwmEvent has builtin rplay support which does not need to invoke an external
audio player to play sounds. The rplay support is enabled when FvwmEvent is compiled with
HAVE_RPLAY defined and when FvwmEvent:Cmd is set to builtin-rplay. See remarks below if FvwmEvent
is invoked in FvwmAudio compatibility mode.
For example:
*FvwmEvent: Cmd builtin-rplay
*FvwmEvent: add_window drip.au
rplay can be obtained via anonymous ftp at
<URL:ftp://ftp.sdsu.edu/pub/rplay> or
<URL:ftp://ftp.x.org/contrib/Event/audio/rplay>
FvwmEvent also has support for any other external program. e.g: the rsynth 'say' command:
*FvwmEvent: Cmd "Exec /rsynth/say"
*FvwmEvent: destroy_window "window closed"
You can also use fvwm's builtin Echo command as FvwmEvent:Cmd to obtain debug output for fvwm
events quietly. I used this setup to debug FvwmAuto:
*FvwmEvent: Cmd Echo
*FvwmEvent: focus_change "focus change"
*FvwmEvent: raise_window "raise window"
You can even call different shell commands for each event just by setting
*FvwmEvent: Cmd exec
*FvwmEvent: add_window 'killname "APPL ERROR"'
*FvwmEvent: PassId
Specifies that the event action will have an ID parameter added to the end of the command line.
Most events will have the windowID of the window that the event refers to, new_desk will have the
new desk number. The windowID is a hexadecimal string preceded by 0x, desk numbers are decimal.
*FvwmEvent: window-manager-eventaction-or-filename
Binds particular actions to window manager events.
e.g. for audio-events:
*FvwmEvent: startup TaDa.au
*FvwmEvent: shutdown Elvis_Left.au
*FvwmEvent: unknown doh.au
*FvwmEvent: new_page beam_trek.au
*FvwmEvent: new_desk beam_trek.au
*FvwmEvent: old_add_window drip.au
*FvwmEvent: raise_window swoosh.au
*FvwmEvent: lower_window swoosh.au
*FvwmEvent: old_configure_window hammer.au
*FvwmEvent: focus_change boing.au
*FvwmEvent: enter_window boing.au
*FvwmEvent: leave_window boing.au
*FvwmEvent: destroy_window explosion.au
*FvwmEvent: iconify ploop.au
*FvwmEvent: deiconify ploop.au
*FvwmEvent: window_name huh.au
*FvwmEvent: icon_name beep.au
*FvwmEvent: visible_icon_name beep.au
*FvwmEvent: res_class beep.au
*FvwmEvent: res_name beep.au
*FvwmEvent: end_windowlist twang.au
*FvwmEvent: icon_location beep.au
*FvwmEvent: map beep.au
*FvwmEvent: error beep.au
*FvwmEvent: config_info beep.au
*FvwmEvent: end_config_info beep.au
*FvwmEvent: icon_file beep.au
*FvwmEvent: default_icon beep.au
*FvwmEvent: string plapper.au
*FvwmEvent: mini_icon beep.au
*FvwmEvent: windowshade beep.au
*FvwmEvent: dewindowshade beep.au
*FvwmEvent: visible_name beep.au
*FvwmEvent: sendconfig beep.au
*FvwmEvent: restack beep.au
*FvwmEvent: add_window beep.au
*FvwmEvent: configure_window beep.au
*FvwmEvent: visible_icon_name beep.au
*FvwmEvent: enter_window beep.au
*FvwmEvent: leave_window beep.au
*FvwmEvent: property_change beep.au
The window related event handlers are executed within a window context. Previously PassId was
used for this purpose, but now using PassId is not needed.
Note: The enter_window event is generated when the pointer enters a window. With the -passid
option, that window's id is passed to fvwm. An enter_window event is generated too when the
pointer leaves a window and moves into the root window. In this case, the id passed is 0.
Note: When the shutdown event arrives, FvwmEvent may be killed before it can trigger the
associated action.
Provided fvwm supports it (not yet), there's an additional event to replace all fvwm beeps with a
sound:
*FvwmEvent: beep beep.au
*FvwmEvent: Delay 5
Specifies that an event-action will only be executed if it occurs at least 5 seconds after the
previous event. Events that occur during the delay period are ignored. This option is useful if
you don't want several sounds playing at the same time. The default delay is 0 which disables the
Event delay.
*FvwmEvent: StartDelay delay
Specifies that an event-action will only be executed if it occurs at least delay seconds after the
startup event. Events that occur during the delay period are ignored. This option is useful when
fvwm starts and restarts using an audio player. The default delay is 0.