STANNIX Solutions for the Real World


Manual: Fvwm2Cpp

FvwmCpp(1)					Fvwm Modules					  FvwmCpp(1)

NAME
       FvwmCpp - the Fvwm  Cpp pre-processor

SYNOPSIS
       Module FvwmCpp [options] filename

       The  FvwmCpp  module can only be invoked by fvwm.  Command line invocation of the FvwmCpp module will
       not work.

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

INVOCATION
       FvwmCpp can be invoked as a module using an fvwm command, from the .fvwm2rc file, a menu,  mousebind‐
       ing, 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

OPTIONS
       Some options can be specified following the modulename:

       -cppopt option
	      Lets  you pass an option to the cpp program.  Not really needed as any unknown options will be
	      passed on automatically.

       -cppprog name
	      Instead of invoking "/usr/lib/cpp", fvwm will invoke name.

       -outfile filename
	      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	any‐
	      thing important even if it has read-only protection.

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

       -noread
	      Causes  the  pre-processed  file	to  be	not read by fvwm. Useful to pre-process a FvwmScript
	      script with FvwmCpp.

CONFIGURATION OPTIONS
       FvwmCpp defines some values for use in the pre-processor file:

       TWM_TYPE
	      Always set to "fvwm".

       SERVERHOST
	      The name of the machine running the X Server.

       CLIENTHOST
	      The name of the machine running fvwm.

       HOSTNAME
	      The host name of the machine running fvwm. Generally the same as CLIENTHOST.

       OSTYPE The operating system for CLIENTHOST.

       USER   The name of the person running fvwm.

       HOME   The home directory of the person running fvwm.

       VERSION
	      The X11 version.

       REVISION
	      The X11 revision number.

       VENDOR The X server vendor.

       RELEASE
	      The X server release number.

       SCREEN The screen number.

       WIDTH  The screen width in pixels.

       HEIGHT The screen height in pixels.

       X_RESOLUTION
	      Some distance/pixel measurement for the horizontal direction, I think.

       Y_RESOLUTION
	      Some distance/pixel measurement for the vertical direction, I think.

       PLANES Number of color planes for the X server display

       BITS_PER_RGB
	      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 or GreyScale.

       FVWM_CLASS
	      The visual class that fvwm is using, e.g. TrueColor.

       FVWM_COLOR
	      Yes or No, Yes if the FVWM_CLASS is neither StaticGrey or GreyScale.

       FVWM_VERSION
	      The fvwm version number, ie 2.0

       OPTIONS
	      Some combination of SHAPE, XPM, NO_SAVEUNDERS, and Cpp, as defined in configure.h	 at  compile
	      time.

       FVWM_MODULEDIR
	      The  directory  where fvwm looks for .fvwm2rc and modules by default, as determined at compile
	      time.

       FVWM_USERDIR
	      The value of $FVWM_USERDIR.

       SESSION_MANAGER
	      The value of $SESSION_MANAGER. Undefined if this variable is not set.

EXAMPLE PROLOG
       #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

BUGS
       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	mes‐
       sages.  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)
       and not
       "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 -' 

AUTHOR
       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		   19 October 2022 (2.7.0)				  FvwmCpp(1)