1. Décorations de fen?tres
Les décorations de fen?tres définissent l'apparence des fen?tres. Fvwm est capable de régler les
décorations de fen?tres en utilisant un th?me de couleurs ou bien des pixmaps (petites images).
Pour le premier exemple, nous allons définir une simple décoration de fen?tre sans pixmaps. Pour
commencer, il faut définir quelques ensembles de couleurs (colorsets) pour régler les couleurs de
base que votre décoration de fen?tre va utiliser. Les colorsets peuvent ?tre utilisés pour définir
les couleurs de toutes les parties de fvwm. Le code suivant met en place trois colorsets
simples.
#####
# Window Colorsets
###########
Colorset 3 fg #101060, bg #e6e7d7
Colorset 4 fg Black, bg #a6a797
Colorset 5 fg White, bg Black
Ceci met en place trois colorsets numérotés 3,4 et 5 qui ont ? la fois une couleur d'avant plan
(foreground) et une couleur d'arri?re plan (background). Les couleurs peuvent ?tre soit données
sous le format hexa ou peuvent etre référencées par des noms (en utilisant les conditions du
serveur X que vous pouvez trouver dans /etc/X11/rgb.txt). Les autres couleurs que vous pouvez
régler avec un colorset sont hilight (hi) et shade (sh). Les colorsets peuvent ?tre n'importe quel
nombre entier, mais essayer dans la mesure du possible de garder les nombres aussi petit que
possible étant donné que fvwm utilise de la mémoire pour chaque colorset en plus de ceux ou celui
que vous utilisez. Pour plus d'informations sur les colorsets, lisez la page man de FvwmThemes.
La décoration peut ?tre découpée en trois parties, TitleStyle, ButtonStyle et la BorderStyle. Le
code suivant met en place un decor simple :
#####
# Window Decor
###########
DestroyDecor MyDecor
AddToDecor MyDecor
+ TitleStyle LeftJustified Height 18
+ ButtonStyle 1 ActiveUp Vector 4 30x30@3 60x60@3 60x30@4 30x60@3 -- Flat
+ ButtonStyle 1 ActiveDown Vector 4 30x30@3 60x60@3 60x30@4 30x60@3 -- Flat
+ ButtonStyle 1 Inactive Vector 4 30x30@3 60x60@3 60x30@4 30x60@3 -- Flat
+ ButtonStyle 3 ActiveUp Vector 5 30x60@3 60x60@3 60x50@3 30x50@3 30x60@3 -- Flat
+ ButtonStyle 3 ActiveDown Vector 5 30x60@3 60x60@3 60x50@3 30x50@3 30x60@3 -- Flat
+ ButtonStyle 3 Inactive Vector 5 30x60@3 60x60@3 60x50@3 30x50@3 30x60@3 -- Flat
+ ButtonStyle 5 ActiveUp Vector 7 30x30@3 30x60@3 60x60@3 60x30@3 30x30@3 30x35@3 60x35@3 --
Flat
+ ButtonStyle 5 ActiveDown Vector 7 30x30@3 30x60@3 60x60@3 60x30@3 30x30@3 30x35@3 60x35@3 --
Flat
+ ButtonStyle 5 Inactive Vector 7 30x30@3 30x60@3 60x60@3 60x30@3 30x30@3 30x35@3 60x35@3 --
Flat
+ TitleStyle -- Flat
+ BorderStyle Simple -- NoInset Flat
+ ButtonStyle All -- UseTitleStyle
Ce décor met en place trois boutons, numérotés 1,3 et 5 (les positions sont les m?mes que pour la
section des
Raccourcis) utilisant les
vecteurs. Notez qu'avant qu'un bouton puisse ?tre ajouté ? un decor, il doit avant ?tre associé ?
une quelquonque action via quelques raccourcis. Chaque partie est suivit d'un '-- Flat' pour que
les boutons et la barre de titre ne semblent pas ?tre sortis ou rentrés dans la fen?tre. C'est
assez dur ? expliquer, la meilleure façon pour que vous compreniez est que vous testiez par vous
m?me (avec ou sans ce fameux -- Flat). Les vecteurs sont juste des dessins aux lignes simples.
Chaque vecteur est installé sur une grille 100x100 et peux avoir tout nombre de points, tous
connectés par des lignes. La syntaxe est 'Vector [nombre de points] [[point1] [point2] ...]'. Les
points sont définis par 'XxY@Z' ou Z peut ?tre tout nombre entre 0 et 4 représentant la couleur qui
doit ?tre utilisée pour la ligne. 0-Shadow(sh), 1-Hilight(hi), 2-Background(bg), 3-Foreground(fg),
4-Invisible.
Voici un exemple de décoration un peu plus élaboré utilisant les pixmaps pour les boutons et la
barre de titre.
#####
# Ukkosta Decor
###########
DestroyDecor UkkostaDecor
AddToDecor UkkostaDecor
+ TitleStyle LeftJustified Height 24
+ ButtonStyle 1 \
ActiveUp (Pixmap $[fvwm_img]/button/close-activeup.png -- Flat) \
ActiveDown (Pixmap $[fvwm_img]/button/close-activedown.png -- Flat) \
Inactive (Pixmap $[fvwm_img]/button/inactive.png -- Flat)
+ ButtonStyle 3 \
ActiveUp (Pixmap $[fvwm_img]/button/iconify-activeup.png -- Flat) \
ActiveDown (Pixmap $[fvwm_img]/button/iconify-activedown.png -- Flat) \
Inactive (Pixmap $[fvwm_img]/button/inactive.png -- Flat)
+ ButtonStyle 5 \
ActiveUp (Pixmap $[fvwm_img]/button/maximize-activeup.png -- Flat) \
ActiveDown (Pixmap $[fvwm_img]/button/maximize-activedown.png -- Flat) \
Inactive (Pixmap $[fvwm_img]/button/inactive.png -- Flat)
+ ButtonStyle 1 - Clear
+ ButtonStyle 3 - Clear MwmDecorMin
+ ButtonStyle 5 - Clear MwmDecorMax
+ TitleStyle AllActive MultiPixmap \
Main AdjustedPixmap $[fvwm_img]/decor/title-main-active.xpm, \
LeftEnd AdjustedPixmap $[fvwm_img]/decor/title-leftend-active.xpm, \
RightEnd AdjustedPixmap $[fvwm_img]/decor/title-rightend-active.xpm, \
UnderText AdjustedPixmap $[fvwm_img]/decor/title-undertext-active.xpm, \
LeftOfText AdjustedPixmap $[fvwm_img]/decor/title-leftoftext-active.xpm, \
RightOfext AdjustedPixmap $[fvwm_img]/decor/title-rightoftext-active.xpm
+ TitleStyle AllInactive MultiPixmap \
Main AdjustedPixmap $[fvwm_img]/decor/title-main-inactive.xpm, \
LeftEnd AdjustedPixmap $[fvwm_img]/decor/title-leftend-inactive.xpm, \
RightEnd AdjustedPixmap $[fvwm_img]/decor/title-rightend-inactive.xpm, \
UnderText AdjustedPixmap $[fvwm_img]/decor/title-undertext-inactive.xpm, \
LeftOfText AdjustedPixmap $[fvwm_img]/decor/title-leftoftext-inactive.xpm, \
RightOfext AdjustedPixmap $[fvwm_img]/decor/title-rightoftext-inactive.xpm
+ TitleStyle -- Flat
+ BorderStyle Simple -- NoInset Flat
+ ButtonStyle All -- UseTitleStyle
Maintenant que vous avez votre décor définit, nous avons besoin de dire aux fen?tres d'utiliser ce
décor et également leur indiquer quels colorsets utiliser. Ceci est fait de cette mani?re :
#####
# Window Styles
###########
Style "*" UseDecor MyDecor
Style "*" Font "xft:Sans:Bold:size=8:minspace=False:antialias=True"
Style "*" BorderWidth 1, HandleWidth 1
Style "*" MWMBorder, FirmBorder
Style "*" Colorset 4
Style "*" HilightColorset 3
Style "*" BorderColorset 5
Style "*" HilightBorderColorset 4
Ces lignes de Style indiquent ? toutes les fen?tres d'utiliser le Décor 'MyDecor', en accord avec
la mise en place des fonts, taille des bordures (BorderWidth), (Hilight)Colorset et
(Hilight)BorderColorset que la fen?tre utilise. J'aime bien que toutes mes fen?tres se ressemblent
mais certaines peuvent se dégager des autres par différents Colorsets et decors pour des
applications particuli?res.