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

NAME

       FvwmTheme - an fvwm module for managing the appearance of fvwm and its modules

SYNOPSIS

       ModuleSynchronous Timeout 5 FvwmTheme

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

DESCRIPTION

       FvwmTheme creates appearance resources that may be shared by fvwm and other  modules.   It
       reads an initial configuration and also reacts to configuration commands and messages sent
       from fvwm so that the resources can be dynamically changed.

INVOCATION

       Starting with 2.5.1, FvwmTheme is obsolete, please read fvwm man page about  the  built-in
       colorsets solution.  However, all options are still the same, so this man page defines the
       exact Colorset syntax.

       FvwmTheme must be spawned as a module by fvwm.

       It is highly suggested that FvwmTheme is invoked before any other  modules  that  use  the
       colorsets   provided   by   FvwmTheme.    Thus  FvwmTheme  has  to  be  invoked  with  the
       'ModuleSynchronous' command by inserting the line 'ModuleSynchronous Timeout 5  FvwmTheme'
       in  the .fvwm2rc file right after the ImagePath has been defined.  Invoking FvwmTheme from
       the InitFunction, StartFunction or RestartFunction or later can cause excessive  redrawing
       of  already  running  modules.   It  is  highly suggested that the configuration lines for
       FvwmTheme appear in the configuration file before FvwmTheme is started.  You  can  find  a
       proper  sample  fvwm  setup at the end of this document.  It is pointless to run more than
       one FvwmTheme so there is no provision for using an alias name.

CONFIGURATION OPTIONS

       FvwmTheme supports some configuration options.

       *FvwmTheme: Colorset n options
              Creates or modifies colorset n. Each colorset has four colors, an  optional  pixmap
              and an optional shape mask.  The four colors are used by modules as the foreground,
              background, highlight and shadow colors.  When a colorset is created it defaults to
              a  foreground  of  black and background of gray.  The background and foreground are
              marked as "average" and "contrast" (see later) so that just specifying a pixmap  or
              gradient gives sensible results.

              Warning:  The  highest colorset number used determines memory consumption.  Thus if
              you define 'Colorset 100000', the memory for 100001 colorsets is used.   Keep  your
              colorset numbers as small as possible.

              options  is  a  comma  separated  list  containing  some of the keywords: fg, Fore,
              Foreground, bg, Back, Background, hi, Hilite, Hilight,  sh,  Shade,  Shadow,  fgsh,
              Pixmap, TiledPixmap, AspectPixmap, Transparent, RootTransparent, Shape, TiledShape,
              AspectShape, NoShape, ?Gradient, Tint,  fgTint,  bgTint,  Alpha,  fgAlpha,  Dither,
              NoDither, IconTint, IconAlpha, NoShape and Plain.

              fg,  Fore  and  Foreground  take a color name as an argument and set the foreground
              color.  The special name Contrast may be used to select a color that contrasts well
              with  the background color.  To reset the foreground color to the default value you
              can simply omit the color name.

              bg, Back and Background take a color name as an argument  and  set  the  background
              color.   It  also  sets  the  highlight  and shadow colors to values that give a 3d
              effect unless these have been explicitly set with the options below.   The  special
              name Average may be used to select a color that is the average color of the pixmap.
              If the pixmap is tinted with the Tint option, the tint is not taken in  account  in
              the  computation  of the average color. You should use the bgTint option to get the
              "real" average color.  The background color is reset to the default  value  if  the
              color name is omitted.

              hi,  Hilite  and  Hilight  take  a  color name as an argument and set the highlight
              color.  If the highlight color is not explicitly set, the default is  to  calculate
              it  from  the  background  color.  To switch back to the default behavior the color
              name can be omitted.

              sh, Shade and Shadow take a color name as an argument and set the shadow color.  If
              the  shadow  color  is  not explicitly set, the default is to calculate it from the
              background color.  To switch back to the default behavior the  color  name  can  be
              omitted.

              fgsh  takes  a  color  name as an argument and sets the color used by the shadowing
              font effect. See the FONT SHADOW EFFECTS section of the fvwm man page.  By  default
              this  color  is computed from the foreground and background colors.  To switch back
              to the default the color name can be omitted.

              Pixmap, TiledPixmap and AspectPixmap take a file name as an  argument,  search  the
              ImagePath  and  use  it as the background pixmap.  Any transparent parts are filled
              with the background color.  Not specifying a file name  removes  any  existing  one
              from  the  colorset.   TiledPixmap  produces  repeated  copies of the image with no
              scaling, Pixmap causes the image  to  be  stretched  to  fit  whatever  object  the
              colorset  is  applied  to  and  AspectPixmap stretches to fit but retains the image
              aspect ratio.

              Transparent tries to create a transparent background pixmap.   The  pixmap  may  be
              used  as a window background to achieve root transparency.  For this you should use
              the ParentalRelativity fvwm style.  The root background change may be  detected  or
              not,  this depends on the program used to set the background. If you use fvwm-root,
              xsetbg (xli), FvwmBacker with a solid or a colorset colors or a recent  version  of
              Esetroot (>= 9.2) a background change should be detected. If background changes are
              not detected (e.g., if you use xv or xsetroot) you can force detection by using the
              -d option of fvwm-root:
              xv -root -quit mybg.png; fvwm-root -d
              Due to the way X implements transparency no guarantees can be made that the desired
              effect can be achieved. The application may even  crash.   If  you  experience  any
              problems with this option, do not use it.

              Using  outline move and resize (see the OpaqueMoveSize command and the ResizeOpaque
              style) as well as setting the WindowShadeShrinks style may help.  The  transparency
              achieved  with  Transparent  depends  on  whether  the  colorset  is applied to the
              foreground or the background of a window. In the second case  the  transparency  is
              relative  to  the parent window of the window on which the colorset is defined. For
              example:
              Colorset 12 VGradient 200 grey30 grey60
              Colorset 17 Transparent
              *FvwmIconMan: Colorset 12
              *FvwmIconMan: PlainColorset 17
              gives an IconMan with a vertical grey gradient background and the buttons  use  the
              background (by transparency). To obtain a (root) transparent IconMan:
              Colorset 12 Transparent
              Colorset 17 Transparent
              Colorset 18 Transparent
              Colorset 19 Transparent
              ...
              *FvwmIconMan: Colorset 12
              *FvwmIconMan: PlainColorset 17
              *FvwmIconMan: FocusColorset 18
              *FvwmIconMan: IconColorset  19
              The  Colorset  IconMan  option  defines  the  IconMan  window  background,  but the
              PlainColorset  and  the  FocusColorset  are  drawn  on  the  foreground.  So,   the
              transparency  of  the  IconMan buttons is achieved by drawing nothing.  Now if this
              IconMan is swallowed in an FvwmButtons as:
              FvwmButtons:(Colorset 10, Swallow "FvwmIconMan" 'FvwmIconMan')
              then, IconMan become a child of FvwmButtons  and  it  is  transparent  relative  to
              FvwmButtons.  So,  in this case IconMan uses Colorset 10 as background. If you want
              root  transparency  use  the  RootTransparent  option.  FvwmButtons,   FvwmIconMan,
              FvwmIdent,  FvwmScroll  and  FvwmTaskBar  are  relatively simple. There is one main
              colorset option which defines the background of the window and the other  colorsets
              (if  any)  are  drawn  on the foreground. The case of FvwmWinList and FvwmProxy are
              simpler. With FvwmWinList all the colorsets are drawn on the  foreground  and  with
              FvwmProxy  the  two  colorsets  refer  to the window backgrounds. FvwmPager is more
              complicated as almost everything in  the  pager  are  windows  with  some  parental
              relations  (the mini windows are the child and the desktops are the parents and all
              this is complicated by  the  hilighted  page).  So,  the  colorsets  apply  to  the
              background of these windows. You should experiment. For FvwmForm and FvwmScript the
              situation is similar.  There is a main window (a child of the  root  window)  which
              corresponds  to  the  main  colorset  and most of the widgets are windows which are
              children of the main window.  Tint may work or not  with  the  Transparent  option.
              When  the colorset is drawn on the foreground Tint should work. In the other cases,
              tinting works in some exceptional cases (and may be very slow).  Tinting  may  work
              with  fvwm  menu  (without animation). In the other case tinting may work if your X
              server has backing store enabled (try xdpyinfo to see  if  this  the  case).   But,
              there  is  a  chance  that the backing store support of your X server does not work
              well with the terrible hack used to Tint the  ParentRelative  Pixmap.  So,  to  get
              tinted root transparency it is more safe to use the RootTransparent option.

              RootTransparent  [  buffer  ]  creates  a root transparent background. To make this
              option work, you must use  an  Esetroot  compatible  program,  fvwm-root  with  the
              --retain-pixmap  option or FvwmBacker with the RetainPixmap option (and colorset or
              solid backgrounds).  The buffer keyword is useful only when the Tint option is used
              too.  This  speeds  up  creation of windows which use the colorset (useful for fvwm
              menus) at the cost of memory usage.  It also speeds up opaque move and resize which
              can  be  unacceptably  slow  without buffer.  However, this option may add a lot of
              memory to your X server (depending on the  size  of  the  image  used  to  set  the
              background). In summary, using outline move and resize for modules which use such a
              colorset may be a good idea.

              Shape, TiledShape and AspectShape take a file  name  as  an  argument,  search  the
              ImagePath  and  use it as the shape bitmap.  TiledShape produces repeated copies of
              the bitmap with no scaling, Shape causes the bitmap to be stretched to fit whatever
              object  the colorset is applied to and AspectShape stretches to fit but retains the
              bitmap aspect ratio.  If the file is a pixmap in xpm format, the shape mask of  the
              pixmap is used.

              Warning:  Due  to  the  way  X11  implements  shapes  and the implementation of the
              FvwmTheme module you cannot take back making  windows  shaped.   You  may  have  to
              restart fvwm or the shaped application.

              ?Gradient  ...  creates a pixmap and stretches it to fit the window.  ?Gradient may
              be  one  of  HGradient,  VGradient,  DGradient,  BGradient,  SGradient,  CGradient,
              RGradient  or YGradient.  The gradient types are as follows:  H is horizontal; V is
              vertical; D is diagonal from top left to bottom right; B is  a  backwards  diagonal
              from  bottom left to top right; S is concentric squares; C is concentric circles; R
              is a radar like pattern and Y is a Yin Yang style (but without the dots, we are not
              that  mad).   Please  refer to the COLOR GRADIENTS section in the fvwm man page for
              the syntax of gradients.

              Tint takes 2 arguments, a color and a percentage between 0 and 100.  It causes  the
              image  defined  using  ?Pixmap  or  ?Gradient to be tinted with the specified color
              using the percentage.  If the image is transparent Tint tints only the image  part.
              Unfortunately,  a  colorset  background  specified using the Transparent option can
              give strange results. See the Transparent option for details.   With  no  arguments
              this option removes the tint.

              fgTint  takes  2  arguments, a color and a percentage between 0 and 100.  It causes
              the color defined using fg  to  be  tinted  with  the  specified  color  using  the
              percentage.  With no arguments this option removes the tint.

              bgTint  takes  2  arguments, a color and a percentage between 0 and 100.  It causes
              the color defined using bg  to  be  tinted  with  the  specified  color  using  the
              percentage.   If  the  sh and hi colors are not specified, they are recomputed from
              the tinted bg color.  With no arguments this option removes the tint.

              Alpha takes a percentage between 0 and 100 as an argument.  It causes fvwm to merge
              the  image  defined  using  ?Pixmap  or  ?Gradient  with  the  bg  color  using the
              percentage. If the percentage is 0 the image is hidden and if it is 100  the  image
              is  displayed  as  usual  (no  merge).  The default is 100 and it is restored if no
              argument is given.

              fgAlpha takes a percentage between 0 and 100 as an argument.   It  causes  fvwm  to
              merge  the text and the colorset background using the percentage. If the percentage
              is 0 the text is hidden and if it is 100 the text is displayed as usual (no merge).
              This  option  has  an  effect only with fonts loaded by Xft, see the FONT NAMES AND
              FONT LOADING section of fvwm man page.  The default is 100 and it is restored if no
              argument is given.

              Dither causes fvwm to dither the image defined using ?Pixmap or ?Gradient.  This is
              useful only with displays with depth less than or equal to 16  (i.e.,  on  displays
              which  can only display less than 65537 colors at once).  The dithering effect lets
              you simulate having more colors available that you actually have.  NoDither  causes
              fvwm  to do not dither the images.  Dither is the default if the depth is less than
              or equal to 8 (a screen with 256 colors or less).  In depth 15 (32768  colors)  and
              16  (65536 colors), the default is NoDither, however this effect can be useful with
              images which contain a lot of close colors. For example a fine gradient  will  look
              more smooth.

              IconTint  takes 2 arguments, a color and a percentage between 0 and 100.  It causes
              fvwm or a module  to  tint  the  "icons"  which  are  rendered  into  the  colorset
              background  with  the specified color using a percentage.  Here "icons" means, fvwm
              Icons, fvwm menu icons, MiniIcons which represent applications in various  modules,
              images  loaded  by  modules  (e.g., images specified by the Icon FvwmButtons button
              option) ...etc.  With no arguments this option removes the icon tint.

              IconAlpha takes a percentage between 0 and 100 as an argument.  It causes  fvwm  to
              merge  the  "icons"  which  are  rendered  into  the colorset background using this
              percentage.  The default is 100 and it is restored if no argument is given.

              Note: It is equivalent to use "Tint a_color rate" and "Alpha a" if a = 100 and  the
              bg  color  is a_color. This equivalence does not hold for IconAlpha and IconTint as
              the background can be an image or a gradient (and not a uniform color  background).
              However,  in  some cases you can achieve (almost) the same effect by using IconTint
              in the place of IconAlpha. This is preferable as, in general,  IconAlpha  generates
              more redrawing than IconTint.

              NoShape removes the shape mask from the colorset while Plain removes the background
              pixmap or gradient.

COMMANDS

       The following fvwm command may be executed at any time to alter the colorsets.  It may  be
       bound to a menu item or typed into a module such as FvwmConsole.

       SendToModule FvwmTheme Colorset options
              The syntax is the same as the configuration option.

EXAMPLES

       *FvwmTheme: Colorset 3 fg wheat, bg navy

       If  necessary  this  creates colorsets 0, 1, 2 and 3 and then changes colorset 3 to have a
       foreground of wheat, a background of navy.

       *FvwmTheme: Colorset 3 bg "navy blue"

       changes the background color of colorset 3 to navy blue. The  foreground  and  pixmap  are
       unchanged.

       *FvwmTheme: Colorset 3 AspectPixmap large_murky_dungeon.xpm

       Causes depression.

       *FvwmTheme: Colorset 3 bg Average

       Sets  the  background  color and the relief colors to match the background pixmap. This is
       the default setting but it must be used if a background color was specified and is now not
       required.

       *FvwmTheme: Colorset 3 YGradient 200 3 \
         blue 1000 navy 1 blue 1000 navy

       Adds  a  Yin  Yang  gradient background pixmap to colorset 3.  If the background is set to
       average it is recomputed along with the foreground if that is set to contrast.

        #!/bin/sh
        FvwmCommand "SendToModule FvwmTheme Colorset 7 fg navy, bg gray"
        while true
        do
          FvwmCommand "SendToModule FvwmTheme Colorset 7 fg gray"
          sleep 1
          FvwmCommand "SendToModule FvwmTheme Colorset 7 fg navy"
          sleep 1
        done

       Makes colorset 7 blink.

       The color names used in colorsets can be substituted in any fvwm command.  Please refer to
       the  COMMAND  EXPANSION  section  in  the  fvwm  man  page  and  the  example  below for a
       description.

SAMPLE FVWM CONFIGURATION

       Below you can find a fvwm configuration file that demonstrates the use  of  the  FvwmTheme
       module.   The order in which FvwmTheme and the other modules are configured and started is
       important.

        # where your images are
        ImagePath <put your image path here>

        #
        # FvwmTheme
        #
        # The FvwmTheme setup must be first in the config file,
        # right after the paths are set.
        #
        # Instead of the *FvwmTheme: Colorset... lines below you
        # could read in a file with these commands.  So to change
        # your color scheme you can simply copy a different file
        # over your palette file and restart fvwm:
        #
        # Read /home/my_user_name/.fvwm/.fvwm_palette
        #

        # 0 = Default colors
        # 1 = Inactive windows
        # 2 = Active windows
        # 3 = Inactive menu entry and menu background
        # 4 = Active menu entry
        # 5 = greyed out menu entry (only bg used)
        # 6 = module foreground and background
        # 7 = hilight colors
        *FvwmTheme: Colorset 0 fg black, bg rgb:b4/aa/94
        *FvwmTheme: Colorset 1 fg black, bg rgb:a1/b2/c8
        *FvwmTheme: Colorset 2 fg black, bg rgb:da/9a/68
        *FvwmTheme: Colorset 3 fg black, bg rgb:b4/aa/94, \
          VGradient 100 dtcolor5 rgb:b4/aa/94
        *FvwmTheme: Colorset 4 fg black, bg rgb:b4/aa/94
        *FvwmTheme: Colorset 5 fg rgb:d2/bf/a8, \
          bg rgb:b4/aa/94
        *FvwmTheme: Colorset 6 fg black, bg rgb:b4/aa/94, \
          VGradient 100 dtcolor5 rgb:b4/aa/94
        *FvwmTheme: Colorset 7 fg black, bg rgb:94/ab/bf

        # run FvwmTheme before anything else is done
        ModuleSynchronous Timeout 5 FvwmTheme

        #
        # general setup
        #
        Style * Colorset 1
        Style * HilightColorset 2
        MenuStyle * MenuColorset 3
        MenuStyle * ActiveColorset 4
        MenuStyle * GreyedColorset 5

        #
        # Applications
        #
        AddToFunc InitFunction
        + I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]

        #
        # module setup
        #

        # ... more FvwmPager config lines ...
        *FvwmPager: Colorset * 6
        *FvwmPager: BalloonColorset * 6
        *FvwmPager: HilightColorset * 7
        *FvwmPager: WindowColorsets 1 2

        # ... more FvwmIconMan config lines ...
        *FvwmIconMan: Colorset 6
        *FvwmIconMan: FocusColorset 2
        *FvwmIconMan: FocusAndSelectColorset 2
        *FvwmIconMan: PlainColorset 6
        *FvwmIconMan: SelectColorset 6
        *FvwmIconMan: TitleColorset 6

        # ... more FvwmButtons config lines ...
        *FvwmButtons: Colorset 6
        # sample button passing color to xterm
        *FvwmButtons: (Title xterm, \
          Action "Exec exec xterm -fg $[fg.cs6] -bg[bg.cs6]")

        # ... more FvwmWharf config lines ...
        *FvwmWharf: Colorset 6

        # ... more FvwmIdent config lines ...
        *FvwmIdent: Colorset 6

        # ... more FvwmWinList config lines ...
        *FvwmWinList: Colorset      1
        *FvwmWinList: FocusColorset 2
        *FvwmWinList: IconColorset  1

        # ... more FvwmTaskBar config lines ...
        *FvwmTaskBar: Colorset     6
        *FvwmTaskBar: IconColorset 6
        *FvwmTaskBar: TipsColorset 0

       If you need to have more colors and don't want to reinvent the  wheel,  you  may  use  the
       convention  used  in  fvwm-themes,  it  defines  the meaning of the first 40 colorsets for
       nearly all purposes:

        http://fvwm-themes.sourceforge.net/doc/colorsets

BUGS

       Initialization of fvwm, FvwmTheme and the other  modules  is  tricky.   Please  pay  close
       attention  to  the  text  in  the  INVOCATION section.  The example above demonstrates the
       proper way to get a FvwmTheme setup running.

AUTHOR

       Prefers to remain anonymous.  With help from Brad Giaccio and Dominik Vogt.

COPYRIGHT

       Copyright (C) 1999 Joey Shutup.  No guarantees or warranties or anything are  provided  or
       implied in any way whatsoever.  Use this program at your own risk.  Permission to use this
       program for any purpose is given, as long as the copyright is kept intact.