Fvwm
NAME
SYNOPSIS
DESCRIPTION
VARIABLES
FUNCTIONS
EVENTS
EVENT LIST
ERROR REPORTING
SEE ALSO
BUGS
AUTHOR
NAME
|
Fvwm − Fvwm module interface for Tcl
|
SYNOPSIS
|
package require Fvwm
fvwm::send command ?windowid?
fvwm::bind event ?script?
fvwm::getConfig varname
?globPattern?
fvwm::getWindowList varname
fvwm::setMask list
fvwm::iconPath name ?option?
|
DESCRIPTION
|
Fvwm package is a Tcl-only package which provides
a way to build fvwm(1) modules on Tcl/Tk. Upon
package initialization it checks if script is invoked as
fvwm module and set ups pipes to communicate with
fvwm. If script doesn’t started as fvwm module,
package initialization fails. Package provides procedures to
set commands to fvwm and obtain information from it. It
provides procedures to parse fvwm WindowList and
ConfigInfo messages and way to handle messages sended
by fvwm just like Tk events.
Upon initialization Fvwm package removes all
fvwm-specific information from global argv variable
and changes argc accordingly. This information can be
accessed via package variables.
|
VARIABLES
|
Context
|
|
Contain information about context in which module is
called. It can be one of following strings:
|
|
NO_CONTEXT, WINDOW, TITLE,
ICON, ROOT, FRAME, SIDEBAR,
LEFT1 - LEFT5, RIGHT1 -
RIGHT5
which corresponds with parts of window decorations,
provided by fvwm |
|
Integer (decimal) identifier of window, in whose context
script was called
|
|
Name of fvwm configuration file (probably useless
for fvwm 2.0, because configuration info could be requested
from fvwm itself.
|
FUNCTIONS
|
sends a command to fvwm. Command is a string exactly as
it appears in .fvwmrc file. Command may be optionally
followed by window id, in this case it can be applied
to given window.
|
|
Instructs fvwm to send only certain events to this
script. List should contain list of event names (see EVENTS
below)
|
|
binds a script with specific fvwm event (see EVENTS
below) Script will be executed in global namespace appended
by list of event arguments. If script is omitted, current
script would be returned. Specifying empty string disables
processing of given event.
|
|
getConfig varname
?globPattern? |
|
Requests configuration information from fvwm and stores
it in the array varname. Glob pattern allows to
restrict configuration to lines matching pattern. |
|
Global configuration lines such as PixmapPath
would be always returned, but module-specific lines (those
which start from ‘*’), would be returned
only if they (with ‘*’ stripped off) match given
pattern. First word in line (without ‘*’) would
be used as array index. If multiple lines have same first
word, they would be concatenated into Tcl list.
Entries which are lists of directories (IconPath,
PixmapPath) are converted to Tcl list too. |
|
Requests information about current desktop state and
stores it in the given array variable. This array would have
indices: |
|
list of four coordinates of current page
|
|
containing Id of toplevel window.
|
|
name of default icon (used for windows which have no icon
defined) windowId,frame for each window there
is list of following values: windowId of window frame, X of
frame, Y of frame, width of frame, height of frame, height
of title, border width,
|
|
Offset of window base coordinates from top-left frame
corner
|
|
resize width increment, resize height increment,
|
|
minimum width, minimum height.
|
|
maximum width, maximum height.
|
|
icon label window id (or 0), icon pixmap window id (or
0),
|
|
gravity, string, as defined in
/usr/X11R6/include/X11/X.h
|
|
Title of icon for this window
|
|
Resource name for this window
|
|
Resource class for this window
|
|
Name of xpm file which is used as icon for this
window
|
|
Name of xpm file which is used as title icon (fvwm-95
only). |
|
iconPath filename ?option? |
|
Searches for given filename in fvwm pixmap or icon path
and returns full pathname of it if found. I don’t like
an idea to return Tcl image because there is two Tcl
extension which can create Xpm images - Img and Tix and I
don’t know which you’ll prefer. |
|
option can be either -pixmap or
-icon which would cause PixmapPath or
IconPath to be searched. Defaults to
PixmapPath.
|
EVENTS
|
Fvwm events are described in file docs/modules.tex
in fvwm distribution. If you are seriously planning to
develop fvwm module, you should read it anyway. Note that
event names in tcl Fvwm package differs in capitalization
from C constants, defined in fvwm’s module.h.
List of names is shown below.
When event handler is called it is appended by long list
of arguments. First argument passed is always event name,
thus allowing you to use same handlers for several event
types. All other fields are all field from fvwm packet body,
even they are appear completely useless. Refer to
modules.tex for description of this fields
For convinience we would note that if event is related to
particular window, its ID is passed as first argument, and
if event have text message associated with it, it is always
fourth (don’t counting event name).
There is one additional event type DeadPipe, which
occurs if eof on pipe is encountered. This event have
default handler, which exits from script. It can be
redefined to perform applicaton cleanup.
Event of type Error have default handler, which
raises Tcl error with same message as original event. This
error is raised from after idle handler to avoid
closing pipe, which is default Tcl behavoir in case of
unhandled errors in fileevent scripts.
|
EVENT LIST
|
NewPage NewDesk AddWindow RaiseWindow LowerWindow
ConfigureWindow FocusChange DestroyWindow Iconify Deiconify
WindowName IconName ResClass ResName End_WindowList
IconLocation Map Error ConfigInfo End_ConfigInfo IconFile
DefaultIcon String
|
|
FunctionEnd MiniIcon ScrollRegion
|
|
Dummy event, generated by package itself |
ERROR REPORTING
SEE ALSO
|
fvwm(1), docs/modules.tex in fvwm
distribution
|
BUGS
|
getWindowList doesn’t properly handle pixel color
values, returned by fvwm. Parsing event args should be
better (may be keyed lists), especially for AddWindow and
ConfigureWindow. There could be problems with wrong
capitalization in fvwm config file, because getConfig
and iconPath work in case-sensitive manner, and fvwm
seems to be case-insensitive.
|
AUTHOR
|
Victor Wagner <vitus@ice.ru>
|
|