Les premières choses à configurer sont les paramètres principaux, comme les variables d'environnement, et les paramètre basiques du bureau. Une variable d'environnement est utilisée comme dans un shell, vous pouvez stocker des valeurs et ainsi vous pouvez les utiliser à plusieurs endroits dans votre fichier fvwm2rc. Ainsi au lieu de changer plusieurs fois le même paramètres dans le fichier, vous ne modifiez que la variable. J'utilise principalement les variables d'environnement pour spécifier à FVWM où se trouvent les images, les fond d'écrans, les icônes etc. Par exemple, vous pouvez utilisez les variables d'environnement suivantes :
##### # 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 également utiliser les variables d'environnement pour paramétrer vos logiciels préférés pour écouter de la musique, pour regarder des vidéos etc. 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
Ensuite, paramétrez le chemin pour les images (ImagePath). Ceci est identique à la variable d'environnement $PATH. Cet ImagePath permet d'indiquer à FVWM où se situent les images (les icones) pour les menus ou les docks. Un ImagePath peut ressembler à ceci :
##### # Set the image path ########### ImagePath $[fvwm_icon]:$[fvwm_icon];.png:+
Toutes mes icones que j'utilise sur trouve dans le dossier $[fvwm_icon]. Vous avez peut-être remarqué que j'ai écris $[fvwm_icon] deux fois, ceci permet à FVWM d'utiliser indifférement les fichiers .xpm (ceux par défaut) et les fichiers .png pour les icones. Vous pouvez également ajouter d'autres répertoires à l'ImagePath. Vous pouvez ajouter les répertoires communs à tous les utilisateurs (par exemple /usr/share/images/) mais aussi les répertoires personnels (exemple $HOME/images).
Ensuite, nous allons configurer les Bureaux Virtuels. FVWM vous permet d'utiliser autant de Bureaux Virtuels que vous voulez. Notez également que chaque Bureau Virtuel peut posséder plusieurs Pages. Pour cet exemple, choisissons d'utiliser 3 Bureaux Virtuels avec chacun 9 pages (3x3). Voici la configuration :
##### # Virtual Desktops ########### DesktopSize 3x3 DesktopName 0 Main DesktopName 1 Work DesktopName 2 Games EdgeScroll 100 100 EdgeResistance 150 150 EdgeThickness 1
L'option DesktopSize définie le nombre de pages sur chaque Bureau Virtuel. Dans cette exemple, nous avons donc sur chaque Bureau Virtuel
une grille de 3 pages par 3. Voici un petit schéma plus explicatif.
Puis nous nommons ces 3 Bureaux Virtuels, Main, Work et Games (numérotés 0, 1 et 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 * SloppyFocus, MouseFocusClickRaises
L'option Clicktime permet de définir le temps en millisecondes pour que soit considéré comme un 'clic' le moment où le bouton de la souris est appuyé puis relaché. 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 cette 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 * TileCascadePlacement, GrabFocusOff Style * NoPPosition, ResizeOpaque OpaqueMoveSize -1 Emulate MWM HideGeometryWindow Never SnapAttraction 5 SameType Screen SnapGrid 3 3 XorValue 55555 Style * DecorateTransient, DontRaiseTransient Style * DontLowerTransient, StackTransientParent Style * GrabFocusTransientOff Style * WindowShadeSteps 20, WindowShadeScrolls SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 .45 .6 .75 .85 .90 .94 .97 .99 1.0 Style * MwmDecor, SlipperyIcon Style * 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 "*" Icon 48x48/unknown.xpm Style "XTerm" Icon 48x48/xterm.png, NoActiveIconOverride, MiniIcon mini/xterm.png Style "gvim" Icon 48x48/gvim.png, IconOverride, MiniIcon mini/gvim.png, EWMHMiniIconOverride Style "Firefox-bin" Icon 48x48/firefox.png, MiniIcon mini/firefox.png, EWMHMiniIconOverride Style "irssi" Icon 48x48/gaim.png, MiniIcon mini/irc.png Style "xmms" WindowListSkip, CirculateSkip Style "MPlayer" Icon 48x48/mplayer.png