La première chose à faire est de configurer les paramètres principaux, comme les variables d'environnement, et les réglages de base du bureau. Une variable d'environnement est comme celle que vous utilisez dans le shell, vous pouvez y stocker des valeurs que vous pourrez utiliser à plusieurs endroits dans votre fichier .fvwm2rc. Vous comprenez donc que, si vos préférences changent, ce n'est pas difficile de changer la valeur d'une variable (au lieu de changer chaque réglage éparpillé dans votre fichier de config). J'utilise les variable d'environnement principalement pour dire à fvwm où chercher pour les différents outils utilisés dans la configuration.
Vous allez voir une petite suite d'exemples. Vous pouvez régler quelques variables d'environnement comme ci-dessous :
##### # Set Environment variables ########### SetEnv fvwm_home $[HOME]/.fvwm SetEnv fvwm_img $[fvwm_home]/images SetEnv fvwm_icon $[fvwm_home]/icons SetEnv fvwm_scrpt $[fvwm_home]/scripts SetEnv fvwm_wallpapers $[fvwm_img]/wallpaper
Vous pouvez aussi utiliser les variables d'environnement pour définir les programmes que vous souhaitez utiliser par défaut, par exemple :
SetEnv fvwm_webbrowser /usr/bin/firefox SetEnv fvwm_term /usr/bin/aterm SetEnv fvwm_mail /usr/bin/mutt SetEnv fvwm_media_player /usr/bin/xmms SetEnv fvwm_video_player /usr/bin/mplayer
Il faut ensuite définir ImagePath qui ressemble un peu à la variable d'environnement $PATH d'un shell. Cette fameuse variable ImagePath dit à FVWM où il devra chercher les images (icônes) que vous lui demandez d'afficher (les icônes du menu par exemple ou encore une barre de lancement rapide). La syntaxe typique de cette variable ressemble à ceci :
##### # Set the image path ########### ImagePath $[fvwm_icon]:$[fvwm_icon];.png:+
Je range toutes mes icônes dans le répertoire $[fvwm_icon]. Vous vous demandez pourquoi j'ai écrit deux fois ce répertoire sur la même ligne ? La raison est simple : la seconde fois, le repertoire est suivit de ;.png. Cela permet de dire à FVWM qu'il pourra utiliser les formats xpm (par defaut) ou bien les png (plus communs) pour les icônes.
Il faut maintenant définir les bureaux virtuels. FVWM vous permet d'avoir autant de bureaux virtuels que vous le voulez, et permet également chaque bureau virtuel d'avoir plusieurs pages ! Nous allons dire que vous voulez 3 bureaux virtuels avec chacun 9 pages dans une grille de 3pagesx3pages ; voila ce que vous devez faire :
##### # Virtual Desktops ########### DesktopSize 3x3 DesktopName 0 Main DesktopName 1 Work DesktopName 2 Games EdgeScroll 100 100 EdgeResistance 150 150 EdgeThickness 1
DesktopSize règle le nombre de pages sur chaque bureau virtuel, par exemple 3×3 créer une grille de 3pages x 3pages qui permet alors chaque bureau virtuel d'avoir 9pages comme vous pouvez le voir ci dessous :
# +-----+-----+-----+ # | | | | # +-----+-----+-----+ # | | | | # +-----+-----+-----+ # | | | | # +-----+-----+-----+
J'ai donc mis 3 bureaux virtuels respectivement appelés Main, Work and Games (numérotés 0, 1, 2). Une fonction intéressante qui s'appelle EdgeScroll permet de changer de Page lorsque la sourie touche le bord de l'écran. Cette option se définie par 2 pourcentages. Le premier indique le défilement horizontal et le deuxième le défilement vertical. 'EdgeScroll 100 100' permet de faire défiler entièrement l'écran vers une autre page lorsque la sourie touche un des bords. L'option EdgeResistance permet de configurer la 'résistance' ou le temps nécessaire avant le défilement. Et l'option EdgeThickness permet de définir la taille en pixel du bord de l'écran pour activer le défilement. Si vous n'aimez pas cette fonctionnalité, vous pouvez la désactiver mettant 'EdgeThickness 0' ou bien 'EdgeScroll 0 0'.
Nous allons maintenant voir le comportement par défaut de la souris et du focus. Voici un petit exemple :
##### # Mouse and Focus Behavior ########### ClickTime 350 MoveThreshold 3 Style * #Style_SloppyFocus">SloppyFocus, MouseFocusClickRaises
ClickTime est le temps en millisecondes entre le moment ou vous appuyez sur le bouton de la souris et que vous le relacher (un simple clic). Si vous maintenez le bouton plus longtemps, FVWM considère que le bouton de la souris est 'enfoncé'. L'option MoveThreshold est le nombre de pixels que peut parcourir la souris avant que FVWM considère cette action comme un 'déplacement'. Notez que tous ces paramètres ne sont pas à négliger, et ont un rôle important dans le comportement de votre gestionnaire de fenêtres et dans la créations de fonctions.
L'option Styles est une option également très importante dans la configuration de FVWM. Elle permet de changer l'apparence, le comportement, etc. des applications, des fenêtres. Cette option est largement utilisée, mais pour commencer, nous allons juste regarder quelle est sa syntaxe. Le '*' est un joker. Cela signifie que 'Style *' s'applique à toutes les fenètres sans exception. Puis, on ajoute les différentes options de styles séparées par des 'virgules'. Dans cet exemple, j'ai utilisé 'SloppyFocus'. Ceci configure le comportement du Focus : dès que la souris 'rentre' dans une fenètre, cette dernière obtient directement le Focus (sauf quelques exceptions comme par exemple les fenètres 'intégrées' au bureau). Le deuxième paramètre 'MouseFocusClickRaises' concerne également le Focus : lorsque l'on clique sur un fenêtre qui possède le Focus, elle est alors placée au premier plan. Il existe bien sur d'autres paramètres pour configurer le Focus qui sont par exemple 'ClickToFocus', 'ClickToFocusPassesClick', 'ClickToFocusPassesClickOff', 'ClickToFocusRaises' et 'ClickToFocusRaisesOff'. Je vous conseilles de lire la page de man pour avoir plus d'informations sur ces paramètres.
Il existe d'autres options importantes qui définissent le comportement du bureau. Par exemple :
EwmhBaseStruts 62 162 0 48 IgnoreModifiers L25
La premiere ligne 'EwmhBaseStruts' indique la zone 'utilisable de l'écran. Le 1er nombre correspond au haut, le 2eme à droite, le 3eme, en bas et le dernier à gauche. Ces nombres correspondent à la taille en pixels de la zone aux bords de l'écran qui ne peut pas être utilisée pour la maximisation des fenêtres par exemple. Cette option est souvement utilsées pour éviter de recouvrir par exemple FvwmTaskBar, FvwmPager et FvwmButtons lorsque qu'on maximise une application. Vous pouvez toutefois utiliser l'option de Style EWMHMaximizeIgoreWorkingArea pour une application spécifique pour ignorer 'EwmhBaseStruts'. La deuxième ligne permet à FVWM d'ignorer certains modifieurs de clavier (CTRL, ATL etc.) Dans cet exemple, il s'agit d'ignorer la touche 'Num Lock' et permet d'éviter quelques problèmes. Je vous conseille de garder cette ligne dans votre configuration.
Voici d'autres Styles que j'utilise dans mon fichier fvwm2rc, je ne vais pas expliquer leurs fonctionnement ici, mais il s'agit seulement de vous faire découvrir d'autres options que vous pouvez ajouter pour votre configuration et de voir ainsi les conséquences sur le fonctionnement de votre bureau.
##### # Global Styles and options ########### Style * #Style_TileCascadePlacement">TileCascadePlacement, GrabFocusOff Style * #Style_NoPPosition">NoPPosition, ResizeOpaque OpaqueMoveSize -1 Emulate #Style_Mwm">MWM HideGeometryWindow Never SnapAttraction 5 SameType Screen SnapGrid 3 3 XorValue 55555 Style * #Style_DecorateTransient">DecorateTransient, DontRaiseTransient Style * #Style_DontLowerTransient">DontLowerTransient, StackTransientParent Style * #Style_GrabFocusTransientOff">GrabFocusTransientOff Style * #Style_WindowShadeSteps">WindowShadeSteps 20, WindowShadeScrolls SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 .45 .6 .75 .85 .90 .94 .97 .99 1.0 Style * #Style_MwmDecor">MwmDecor, SlipperyIcon Style * #Style_IconBox">IconBox screen w 15 15 -165 -15, IconGrid 3 3, IconFill right top
Ensuite, je configure des Styles pour des applications précises. La syntaxe est 'Style [application] [style]'. FVWM compare la valeur de [application] (* inclus) avec le Nom, la Classe et/ou les Ressources d'une fenêtre. Pour trouver le Nom, la Classe et la Ressource d'une application, vous devez utiliser le module FvwmIdent. Dans cet exemple, je paramètre l'Icone ainsi que la MiniIcone qui seront associées au programme avec également d'autres options de Style qui peuvent être appliqué à ce programme.
##### # Program Styles ########### Style "*" #Style_Icon">Icon 48x48/unknown.xpm Style "XTerm" #Style_Icon">Icon 48x48/xterm.png, NoActiveIconOverride, MiniIcon mini/xterm.png Style "gvim" #Style_Icon">Icon 48x48/gvim.png, IconOverride, MiniIcon mini/gvim.png, EWMHMiniIconOverride Style "Firefox-bin" #Style_Icon">Icon 48x48/firefox.png, MiniIcon mini/firefox.png, EWMHMiniIconOverride Style "irssi" #Style_Icon">Icon 48x48/gaim.png, MiniIcon mini/irc.png Style "xmms" #Style_WindowListSkip">WindowListSkip, CirculateSkip Style "MPlayer" #Style_Icon">Icon 48x48/mplayer.png