DragonFly On-Line Manual Pages
FvwmCpp(1) FVWM Modules FvwmCpp(1)
FvwmCpp - the FVWM Cpp pre-processor
Module FvwmCpp [options] filename
The FvwmCpp module can only be invoked by fvwm. Command line
invocation of the FvwmCpp module will not work.
When fvwm executes the FvwmCpp module, FvwmCpp invokes the cpp pre-
processor on the file specified in its invocation, then FvwmCpp causes
fvwm to execute the commands in the resulting file.
FvwmCpp can be invoked as a module using an fvwm command, from the
.fvwm2rc file, a menu, mousebinding, or any of the many other ways fvwm
commands can be issued.
If the user wants his entire .fvwm2rc file pre-processed with FvwmCpp,
then fvwm should be invoked as:
fvwm -cmd "Module FvwmCpp .fvwm2rc"
Note that the argument to the option "-cmd" should be enclosed in
quotes, and no other quoting should be used.
When FvwmCpp runs as a module, it runs asynchronously from fvwm. If
FvwmCpp is invoked from the .fvwm2rc, the commands generated by FvwmCpp
may or may not be executed by the time fvwm processes the next command
in the .fvwm2rc. Invoke FvwmCpp this way for synchronous execution:
ModuleSynchronous FvwmCpp -lock filename
Some options can be specified following the modulename:
Lets you pass an option to the cpp program. Not really needed
as any unknown options will be passed on automatically.
Instead of invoking "/usr/lib/cpp", fvwm will invoke name.
Instead of creating a random unique name for the temporary file
for the preprocessed rc file, this option will let you specify
the name of the temporary file it will create. Please note that
FvwmCpp will attempt to remove this file before writing to it,
so don't point it at anything important even if it has read-only
-debug Causes the temporary file create by Cpp to be retained. This
file is usually called "/tmp/fvwmrcXXXXXX"
-lock If you want to use this option you need to start FvwmCpp with
ModuleSynchronous. This option causes fvwm to wait that the pre-
process finish and that FvwmCpp asks fvwm to Read the pre-
processed file before continuing. This may be useful at startup
if you use a session manager as Gnome. Also, this is useful if
you want to process and run a Form in a fvwm function.
Causes the pre-processed file to be not read by fvwm. Useful to
pre-process a FvwmScript script with FvwmCpp.
FvwmCpp defines some values for use in the pre-processor file:
Always set to "fvwm".
The name of the machine running the X Server.
The name of the machine running fvwm.
The host name of the machine running fvwm. Generally the same as
OSTYPE The operating system for CLIENTHOST.
USER The name of the person running fvwm.
HOME The home directory of the person running fvwm.
The X11 version.
The X11 revision number.
VENDOR The X server vendor.
The X server release number.
SCREEN The screen number.
WIDTH The screen width in pixels.
HEIGHT The screen height in pixels.
Some distance/pixel measurement for the horizontal direction, I
Some distance/pixel measurement for the vertical direction, I
PLANES Number of color planes for the X server display
Number of bits in each rgb triplet.
CLASS The X11 default visual class, e.g. PseudoColor.
COLOR Yes or No, Yes if the default visual class is neither StaticGrey
The visual class that fvwm is using, e.g. TrueColor.
Yes or No, Yes if the FVWM_CLASS is neither StaticGrey or
The fvwm version number, ie 2.0
Some combination of SHAPE, XPM, NO_SAVEUNDERS, and Cpp, as
defined in configure.h at compile time.
The directory where fvwm looks for .fvwm2rc and modules by
default, as determined at compile time.
The value of $FVWM_USERDIR.
The value of $SESSION_MANAGER. Undefined if this variable is not
#define TWM_TYPE fvwm
#define SERVERHOST spx20
#define CLIENTHOST grumpy
#define HOSTNAME grumpy
#define OSTYPE SunOS
#define USER nation
#define HOME /local/homes/dsp/nation
#define VERSION 11
#define REVISION 0
#define VENDOR HDS human designed systems, inc. (2.1.2-D)
#define RELEASE 4
#define SCREEN 0
#define WIDTH 1280
#define HEIGHT 1024
#define X_RESOLUTION 3938
#define Y_RESOLUTION 3938
#define PLANES 8
#define BITS_PER_RGB 8
#define CLASS PseudoColor
#define COLOR Yes
#define FVWM_VERSION 2.0 pl 1
#define OPTIONS SHAPE XPM Cpp
#define FVWM_MODULEDIR /local/homes/dsp/nation/modules
#define FVWM_USERDIR /local/homes/dsp/nation/.fvwm
#define SESSION_MANAGER local/grumpy:/tmp/.ICE-unix/440,tcp/spx20:1025
Module configurations do not become active until fvwm has restarted if
you use FvwmCpp on startup. FvwmCpp creates a temporary file and passes
this to fvwm, so you would have to edit this file too. There are some
problems with comments in your .fvwm2rc file. The comment sign # is
misinterpreted by the preprocessor. This has usually no impact on
functionality but generates annoying warning messages. The sequence /*
is interpreted as the start of a C comment what is probably not what
you want in a filename. You might want to try /?* (for filenames only)
or /\* or "/*" instead. Depending on your preprocessor you may have the
same problem with "//". Macros are not replaced within single (') or
double quotes ( back quotes (`) to circumvent this. Fvwm accepts back
quotes for quoting and at least FvwmButtons does too. The preprocessor
may place a space after a macro substitution, so with
#define MYCOMMAND ls
"Exec "MYCOMMAND" -l"
you might get
"Exec "ls " -l" (two words)
"Exec "ls" -l" (one word).
If you use gcc you can use this invocation to turn off '//' comments:
FvwmCpp -Cppprog '/your/path/to/gcc -C -E -' <filename>
FvwmCpp is the result of a random bit mutation on a hard disk,
presumably a result of a cosmic-ray or some such thing.
3rd Berkeley Distribution (not released yet) (2.5.20) FvwmCpp(1)