Colorsets are a powerful method to control colors. Colorsets create appearance resources that are shared by
fvwm and its modules. When a colorset is modified all parts of fvwm react to that change. A colorset
includes a foreground color, background color, shadow and highlight color (often based on the background
color), background face (this includes images and all kinds of gradients). There is a way to render
background face and specify other color operations.
In the 2.4.x versions a special module FvwmTheme was introduced to manage colorsets. Starting with the 2.5.x
beta version, the FvwmTheme functionality was moved to the core fvwm, so this module became obsolete. In
2.6.7 the FvwmTheme module was removed.
The old syntax:
*FvwmTheme: Colorset 0 fg black, bg rgb:b4/aa/94
*FvwmTheme: Colorset 1 fg black, bg rgb:a1/b2/c8
corresponds to the new syntax:
Colorset 0 fg black, bg rgb:b4/aa/94
Colorset 1 fg black, bg rgb:a1/b2/c8
Colorset num [options]
zero and can be a very large number.
‘Colorset 100000’, the memory for 100001 colorsets is used. Keep your colorset numbers as small as
# 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
in fvwm-themes, it defines the meaning of the first 40 colorsets for nearly all purposes:
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
options是一系列使用逗号分割的关键字列表，可使用的关键字有：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, Plain
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.
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.
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.
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.
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.
as the background pixmap. Any transparent parts are filled with the background color. Not specifying
a file name removes any existing image 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.
achieve root transparency. For this you should use the ParentalRelativity option to the Style
command. A subsequent 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 solid or colorset colors
or a recent version of Esetroot (>= 9.2) a background change is 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
achieved. The application may even crash. If you experience any problems with this option, do not
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 17 Transparent
*FvwmIconMan: Colorset 12
*FvwmIconMan: PlainColorset 17
transparency). To obtain a (root) transparent IconMan:
Colorset 17 Transparent
Colorset 18 Transparent
Colorset 19 Transparent
*FvwmIconMan: PlainColorset 17
*FvwmIconMan: FocusColorset 18
*FvwmIconMan: IconColorset 19
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:
in this case FvwmIconMan uses Colorset 10 as background. If you want root transparency use the
RootTransparent option. FvwmButtons FvwmIconMan, and FvwmIdent, 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 FvwmProxy is simpler, 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 some cases, tinting may be very slow.
Tinting may work with fvwm menu (without animation). Tinting may work better if your X server has
backing store enabled (try xdpyinfo to see if this the case). 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
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.
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 (all
opaque pixels) of the pixmap is used. For png and svg images, the shape mask is equivalent to all not
completely transparent pixels (alpha > 0).
Due to the way X11 implements shapes you cannot take back making windows shaped. You may have to
restart fvwm or the shaped application.
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).
Please refer to the Color Gradients section for the syntax of gradients.
?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.
using fg to be tinted with the specified color using the percentage. With no arguments this option
removes the tint.
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
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.
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. The default is 100 and it is restored if no argument is
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 looks more smooth.
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.
which are rendered into the colorset background using this percentage. The default is 100 and it is
restored if no argument is given.
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.
tan, a background of navy.
setting but it must be used if a background color was specified and is now not required.
recomputed along with the foreground if that is set to contrast.
FvwmCommand “Colorset 7 fg navy, bg gray”
FvwmCommand “Colorset 7 fg gray”
FvwmCommand “Colorset 7 fg navy”
command. For example:
+ I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]
section for more information.
Color gradients can be used by various commands and modules of fvwm. There are eight types of
gradients: HGradient is a horizontal gradient, VGradient is vertical, DGradient is diagonal from top
left to bottom right, BGradient is backwards diagonal from bottom left to top right, SGradient is
concentric squares, CGradient is concentric circles, RGradient is a radar like pattern and YGradient
is a Yin Yang style (but without the dots).
(between 2 and 1000), the initial color and the final color.
allocate (between 2 and 1000), then the number of segments. For each segment, specify the starting
color, a relative length, then the ending color. Each subsequent segment begins with the second color
of the last segment. The lengths may be any non-negative integers. The length of one segment divided
by the sum of all segments lengths is the fraction of the colors that are used for the segment.
# 30% from blue to black,
# 50% from black to grey
MenuStyle * \
# 50% from yellow to red
Colorset 0 HGradient 128 3 Blue 1000 Green 1 Yellow 1000 Red