########################################################################## # Fichier de configuration ~/.fvwm/.fvwm2rc pour fvwm version 2.5.12 # Dernière modification : 2004-10-16 # Bin Zhang <bb.zhang@free.fr>, http://bb.zhang.free.fr ########################################################################## ############################ Introduction ################################ # Je veux faire une configuration simple tout en essayant # d'avoir un rendu le plus beau possible, tout cela sans aucune # connaissance de programmation. Il suffit de lire mes commentaires et # faire un peu de recherche dans le doc ou faq officiel (les deux # premiers liens ci-dessous) pour comprendre ma configuration (elle # est simple !!!). # # Mes objectifs sont # - Adapter à l'usage d'un portable sans souris et d'un petiet écran # LCD 14" (j'utilise Touchpad + clavier). # - Utiliser un seul fichier de configuration .fvwm2rc # - Ne pas avoir besoin d'icônes (sauf que j'ai installé le package # fvwm-icons pour faire plaisir au package menu), je ne suis pas un # amateur d'icônes. # - Sur une petite bande verticale à l'extrêmité droite de l'écran, je vais # mettre gkrellm, wmpinboard, un petit lanceur d'apllications # et un pager (FvwmPager et FvwmButtons sont deux modules # très très bien conçus et puissants, ils sont suffisants pour créer une # config simple et efficace). # - Utiliser un fond d'écran pour la transparance des menus, de FvwmPager, # des FvwmButtons, de gkrellm, de gnome-terminal, de vim et de mutt. # Je préfère la root-transparence à la transparence totale (translucent) # pour plus de lisibilité. # Liens ##### Les essentiels ##### # - Man page agréable à lire, surtout facile à rechercher des mots # http://www.fvwm.org/documentation/manpages/unstable/ # - FAQ officiel # http://www.fvwm.org/documentation/faq/ # ##### Une très bonne introduction # - Une introduction à FvwmButtons par Tavis Ormandy # http://forums.gentoo.org/viewtopic.php?t=162177 # ##### Des configs trouvés sur le web pour aller plus loin ##### # - Le .fvwm2rc de Tavis Ormandy # http://dev.gentoo.org/~taviso/fvwm2rc.html # - La page de Syzygy # http://desintegr.free.fr/?page=linux/fvwm # - Une page de lafouine # http://cestle9la.free.fr/ # - Une autre page # http://www.linux.net.pl/~harnir/fvwm-crystal/ # ##### Paquets non officiels pré patchés (translucent =transparent total) # http://netzverschmutzer.net/~sbeyer/debian/ # Comment construire son propre fichier de configuration .fvwm2rc ??? # - J'ai commencé ma config en copiant la config globale par défaut de # Debian. Sinon, on peut aussi par exemple utiliser google # mot clé fvwm2rc ou aller sur le site www.fvwm.org, trouver d'abord # un screenshot proche de ce qu'on veut et récupérer le .fvwm2rc # - Mettre ce fichier dans le répertoire ~/.fvwm # - Lancer fvwm pour voir le résultat. # - Modifier le fichier ~/.fvwm/.fvwm2rc pour finaliser. # Méthode 1 : modifier directement ce fichier puis relancer fvwm # (Pas besoin de quiiter la session !!!). # Méthode 2 : utiliser FvwmConsole qui est particulièrement utile # pour tester de nouvelles idées. # Attention : Ctrl + d ou Ctrl + c pour le quitter. # Lire le man page de FvwmConsole pour savoir comment # le lancer. Si l'on veut pouvoir le lancer depuis un # terminal, lire le man page de FvwmCommand. # Le mieux est de combiner ces deux méthodes. ########################################################################## ############################ Images et Icônes ############################ # Les images et icones utilisée par le package menu ImagePath /usr/X11R6/include/X11/pixmaps ########################################################################## ############################ Bureaux ##################################### # DeskTopSize définit la taille des desks (bureau virtuel) # en nombre d'écrans physiques ("pages"). # Le nombre de desks est "illimité". # # Je veux que chaque desk est composé de 4 pages en deux lignes # et deux colonnes. Elles ont les coordonnées 0 0, 1 0, 1 0, 1 1 # ------------------- # | 0 0 | 1 0 | # ------------------- # | 0 1 | 1 1 | # ------------------- DeskTopSize 2x2 # Je préfère ne pas passer sur une autre page # quand le pointeur de la souris arrive au bord de l'écran. # EdgeThickness=0 désactive edge scrolling et EdgeCommand EdgeResistance 15 100 EdgeThickness 0 ########################################################################## ############ Décoration générale des Fenêtres et des Icônes ############## # Polices des titres pour les fenêtres et les icônes # J'utilise true type fonts. Style * Font "xft:Bitstream Vera Sans:Bold:size=10:encoding=iso8859-1" Style * IconFont "xft:Bitstream Vera Sans:Medium:size=10:encoding=iso8859-1" # Les bords des fenêtres #Style * BorderWidth 4 #ceci est inutile à cause de la ligne suivante Style * HandleWidth 4 # Couleurs des textes et de l'arrière plan des fenêtres ou des icônes. # Quand la fenêtre est activée (au premier plan) : Style * HilightFore white, HilightBack steelblue # Quand une fenêtre est non acivée (en arrière plan) : Style * Color Black/DarkGrey # Style à la MWm Style * MWMFunctions, MWMDecor, HintOverride, MWMBorder Style * DecorateTransient # On déssine les formes des boutons sur les barres de titre des fenêtres. # J'utilise 5 boutons (Je ne définis que leur formes ici, mais # pas leur actions, elles sont dans la section "mouse binding" ci-dessous). # Un seul bouton à gauche (bouton 1, non défini ici, donc utiliser le défaut), # qui affiche un menu d'options des fenêtres (menu Windows Ops). # Quatre autres boutons à droite (numérotés sous la forme "|8|6|4|2|"), # qui sont (de doite à gauche) : close, maximise, iconify and shade. # ____________________________________________________ # | 1 8 6 4 2 | # |--------------------------------------------------| # | | # les formes : 1=tiret, 2=croix, 4=carré, 6=point, 8=triangle vers le bas ButtonStyle Reset ButtonStyle 2 Vector 17 20x20@1 30x20@1 50x40@1 70x20@1 80x20@1 80x30@0 \ 60x50@0 80x70@0 80x80@0 70x80@0 50x60@0 30x80@0 \ 20x80@0 20x70@1 40x50@1 20x30@0 20x20@1 ButtonStyle 4 Vector 5 25x75@0 75x75@0 75x25@0 25x25@1 25x75@1 ButtonStyle 6 Vector 5 45x45@1 55x45@1 55x55@0 45x55@0 45x45@1 ButtonStyle 8 Vector 4 50x75@1 25x25@1 75x25@1 50x75@0 ########################################################################## ############### Placement des fenêtres ################################### # La meilleur façon de placer des fenêtres une après l'autre quand # on lance des applications. Ne pas changer! Style * MinOverlapPercentPlacement Style * NoPPosition, CaptureHonorsStartsOnPage # Focusing the windows Style * MouseFocusClickRaises Style * FPAllowFocusClickFunction, FPAllowRaiseClickFunction # Définition de l'iconebox (l'endoit où va quand "iconify a window" ) # coordonnées : left=0, top=-10, right=-280, bottom=-1 Style * IconBox 0 -10 -280 -1 Style * Icon unknown.xpm ########################################################################## ########################### Décoration spéciale ########################## Style Fvwm* NoTitle, Sticky, WindowListSkip, CirculateSkip, CirculateSkipIcon Style FvwmButtons NeverFocus, StaysOnBottom, NoHandles, BorderWidth 0 Style FvwmPager NeverFocus, StaysOnTop, NoHandles, BorderWidth 1 Style FvwmIdent Title, WindowListHit, CirculateHit Style gkrellm Sticky, WindowListSkip, NoTitle, CirculateSkip, BorderWidth 0 ########################################################################## ######################## Menus #################################### # Décoration des menus Colorset 1 RootTransparent buffer, fg rgb:ff/ff/c4, bg average, \ Tint black 55, bgTint black 55 # 55 ci-dessus détermine le degré de transparence # MenuStyle * MenuColorset 1 #MenuStyle * Mwm, Foreground black, Background grey, Greyed white Menustyle * Font "xft:Bitstream Vera Sans:Bold:size=10:encoding=iso8859-1" # Le contenu du Root-Menu. # # J'utilise rarement le Root-Menu, donc pour simplifier la vie, # je prends le défaut "Debian Menu". # Installer le package menu, la commande "# update-menus" produit # la mise à jour du "Debian Menu". Read /etc/X11/fvwm/menudefs.hook Quiet # # Ajouter "restart" et "quit" à la fin du root-menu AddToMenu /Debian + "" Nop + "Restart Fvwm" Restart + "Exit Fvwm" Quit # The Window-Ops menu is for manipulating windows. DestroyMenu Window-Ops AddToMenu Window-Ops "Alt-F1: Window Ops" Title + "Alt-F2: Main Menu" Popup /Debian + "Alt-F3: Lower" Lower + "Alt-F4: Window List" WindowList + "Alt-F5: Previous" Prev + "Alt-F6: Next" Next + "Alt-F7: Move" Move + "Alt-F8: Resize" Resize + "Alt-F9: (De)Iconify" Iconify + "Alt-F10: (Un)Maximize to screen" Maximize 100 100 + "Alt-F11: Raise" Raise + "Alt-F12: (Un)Stick" Stick + " (Un)Maximize vertical" Maximize 0 100 + " (Un)Maximize horizontal" Maximize 100 0 + " (Un)Shade" WindowShade + "" Nop + " ScrollBar" Module FvwmScroll 2 2 + "" Nop + " Destroy" Destroy + " Close" Close # Un petit Menu pour la touche "Menu" du clavier : DestroyMenu "Help" AddToMenu "Help" "Rappel de mes KeyBindings" Title Top + "&xterm (Ctrl+x)" Exec exec gnome-terminal + "&Mutt (Ctrl+m)" Exec exec gnome-terminal --geometry 80x35 --title "Mutt" -e mymutt + "Mutt-&Chinese (Ctrl+M)" Exec exec xcinterm-gb2312 -geometry 80x35 -title "Mutt-chinese" -n "mutt-chinese" -e mymutt + "Mo&zilla-firefox (Ctrl+n)" Exec exec firefox + "&Vim (Ctrl+v)" Exec exec gvim + "&LyX (Ctrl+l)" Exec exec lyx #+ "&amsn (Ctrl+a)" Exec exec amsn + "&Gaim-chinese (Ctrl+g)" Exec exec xcinterm-gb2312 -e gaim + "Fetchmail-&daemon (Ctrl+F)" Exec exec fetchmail --daemon 600 + "&Fetchmail (Ctrl+f)" Exec exec xterm -e fetchmail + "&Yet Another FTP Client (Ctrl+y)" Exec exec rxvt -fg wheat -bg black -T "Yet Another FTP Client" -e /usr/bin/yafc + "&Lock Screen (XScreenSaver) (Ctrl+L)" Exec exec /usr/bin/xscreensaver-command -lock + "&Synaptic (Ctrl+s)" Exec exec gksu -u root /usr/sbin/synaptic + "&Unison-gtk (Ctrl+u)" Exec exec xterm -e unison-gtk + "" Nop + "Restart Fvwm" Restart + "Exit Fvwm" Quit ########################################################################## ########################### Mouse bindings ############################### # Syntax : # Mouse Button Context Modifiers Function # # Defines a mouse binding, or removes the binding if Function is '-'. # # Button is the mouse button number. # If Button is 0 then any button performs the specified function. # # Context describes where the binding applies: # R = root window # W = an application window # D = desktop application (as kdesktop or Nautilus desktop) # T = window title-bar # S = window side, top, or bottom bar # [, ], -, _ = left, right, top, bottom (side) # F = window frame (the corners) # <, ^, >, v = top left, top right, bottom right, bottom left (corner) # I = Icon window # 0 through 9 = title-bar buttons # or any combination of these letters # A = any context # # Modifiers: # N = no modifiers # C = Ctrl =control # S = Shift # M =Alt = Meta # A = any modifier # # Function is one of fvwm's commands # Each button gives a different menu from the background (root window). Mouse 1 R A Menu /Debian # 1=left button, R=root window Mouse 2 R A Menu Window-Ops # 2=boutton au milieu Mouse 3 R A WindowList # 3=right button # Just not to get accidental exit # Mouse wheel bindings (inutile pour moi, je n'en ai pas) Mouse 4 R A Menu /Debian Mouse 5 R A Menu /Debian # Moving and resizing, depending on which part of the window # you grab (T=title bar, S=side/top/bottom, F=corner). Mouse 0 T A move-and-raise-or-raiselower # 0=n'importe quel boutton # This caused problems with emacs selection (Bug #17668). # Mouse 0 W M move-and-raise-or-raiselower Mouse 0 W M - Mouse 0 F A resize-or-raiselower Mouse 0 S A resize-or-raiselower # Move or de-iconify an icon. Mouse 0 I A move-or-winmenu-or-deiconify # Buttons on the title bar (1,3,5,7,9 are on the left, 0,8,6,4,2 on # the right side of the title bar). Note that the bindings here # make more sense if the ButtonStyle's defined earlier are retained. Mouse 0 1 A Popup Window-Ops Mouse 0 6 A Iconify Mouse 0 2 A Close Mouse 1 4 A Maximize 100 100 Mouse 2 4 A Maximize 0 100 Mouse 3 4 A Maximize 100 0 Mouse 0 8 A WindowShade ########################################################################## ############################ Key bindings ################################ # Syntax : # Key Keyname Context Modifiers Function # # Binds a keyboard key to a specified fvwm command, # or removes the binding if Function is '-'. # The syntax is the same as for a Mouse binding except that # the mouse button number is replaced with a Keyname. # Voir ci-dessus la section sur Mouse bindings #Key Tab A M Next [CurrentPage !iconic] focus-and-raise Key Tab A M RaiseLower Key Tab A MS Prev [CurrentPage !iconic] focus-and-raise Key Tab A CM Next [CurrentPage] deiconify-and-focus Key Tab A CMS Prev [CurrentPage] deiconify-and-focus # Pour bouger entre les pages du desk actuel Key Left A C Scroll -100 +0 # Ctrl + left arrow Key Up A C Scroll +0 -100 Key Right A C Scroll +100 +0 Key Down A C Scroll +0 +100 # Pour changer de desks (au cas où le module FvwmPager affiche deux desks) #Key Page_Up A C Desk 0 0 # Ctrl + PgUp #Key Page_Down A C Desk 0 1 # Ctrl + PgDn # Appuyer sur la touche Menu (en haut à gauche du clavier) Key Menu A N PopUp Help Key F1 A M Popup Window-Ops Key F2 A M Popup /Debian Key F3 A M Lower Key F4 A M WindowList Key F5 A M Prev Key F6 A M Next Key F7 A M Move Key F8 A M Resize Key F9 A M Iconify Key F10 A M Maximize 100 100 Key F11 A M Raise Key F12 A M Stick # Pour lancer des applications fréquemment utilisées Key E A C Exec exec evolution Key M A C Exec exec gnome-terminal --geometry 80x35 -t \ "Mutt" -e "mutt -f $HOME/mail/inbox" Key M A CS Exec exec xcinterm-gb2312 -geometry 80x35 -title \ "Mutt-chinese" -n "mutt-chinese" -e "mutt -f $HOME/mail/inbox" Key N A C Exec exec firefox Key X A C Exec exec gnome-terminal Key V A C Exec exec gvim Key L A C Exec exec lyx Key A A C Exec exec amsn Key G A C Exec exec xcinterm-gb2312 -e gaim Key F A CS Exec exec fetchmail --daemon 600 key F A C Exec exec xterm -e fetchmail Key Y A C Exec exec rxvt -fg white -bg black -T \ "Yet Another FTP Client" -e /usr/bin/yafc Key L A CS Exec exec /usr/bin/xscreensaver-command -lock Key S A C Exec exec gksu -u root /usr/sbin/synaptic key U A C Exec exec xterm -e unison-gtk # Voir plus loin ci-dessous pour l'usage de la touche "Windows logo" ########################################################################## ############################# Functions ################################## # This section defines various functions. Not all of these are used by # the default bindings, but they can be useful for a user who wants to # customize things. # # The following functions operate on a window or menu. The # names are systematic: foo means "do foo"; foo-or-bar means # "do foo, if mouse is moving, bar if click"; and foo-or-bar-or-baz # adds "baz, if double-clicked". DestroyFunc move-or-winmenu-or-deiconify AddToFunc move-or-winmenu-or-deiconify + "M" Move + "C" Popup Window-Ops + "D" Iconify DestroyFunc deiconify-and-focus AddToFunc deiconify-and-focus + "I" Iconify -1 + "I" Focus DestroyFunc deiconify-and-raise AddToFunc deiconify-and-raise + "I" Iconify -1 + "I" Raise DestroyFunc focus-and-raise AddToFunc focus-and-raise + "I" Focus + "I" Raise DestroyFunc move-or-raiselower AddToFunc move-or-raiselower + "M" Move + "C" RaiseLower DestroyFunc move-and-raise-or-raiselower AddToFunc move-and-raise-or-raiselower + "M" Move + "M" Raise + "C" RaiseLower DestroyFunc move-or-raiselower-or-maximize-vertical AddToFunc move-or-raiselower-or-maximize-vertical + "M" Move + "C" RaiseLower + "D" Maximize 0 100 DestroyFunc resize-or-raiselower AddToFunc resize-or-raiselower + "M" Resize + "C" RaiseLower ########################################################################## ################################ Module Config ########################### # J'utilse principalement les deux modules FvwmPager et FvwmButtons. # Ces deux modules sont largement suffisants pour faire une config # simple et efficace. # Le module FvwmProxy donne un petit plus agréable. # FvwMPager # # Pour Non transparence : # Pager background and foreground Colorset 2 bg #502000, fg #C0C0C0 Colorset 3 bg #004020, fg #C0C0C0 # Pager inactive and active window colors Colorset 4 bg #808080 Colorset 5 bg #FCFF00 # # Pour la Tranparence : Colorset 6 RootTransparent buffer, fg red, bg darkcyan *FvwmPager: Colorset * 6 # Style FvwmPager ParentalRelativity # *FvwmPager: Geometry 80x62-0-0 *FvwmPager: Rows 1 *FvwmPager: Columns 1 #*FvwmPager: Colorset * 2 *FvwmPager: HilightColorset * 3 *FvwmPager: WindowColorsets 4 5 *FvwmPager: Window3DBorders # Font pour les noms des desks : #*FvwmPager: Font "xft:Bitstream Vera Sans:Medium:size=8:encoding=iso8859-1" #On n affiche pas de label pour chaque desk *FvwmPager: Font none # Le nom du desk no.1 : *FvwmPager: Label 0 zhang # Le nom du desk no.2 : #*FvwmPager: Label 1 TeX # Font pour les noms des fenêtres dans les pages : *FvwmPager: SmallFont "xft:Bitstream Vera Sans:Medium:size=6:encoding=iso8859-1" *FvwmPager: Balloons All *FvwmPager: BalloonBack Yellow *FvwmPager: BalloonFore Black *FvwmPager: BalloonFont "xft:Bitstream Vera Sans:Medium:size=6:encoding=iso8859-1" *FvwmPager: BalloonYOffset +2 *FvwmPager: BalloonBorderWidth 1 *FvwmPager: BalloonBorderColor Black # Définir un lanceur d'applications à l'aide de FvwmButtons # Colorset 7 RootTransparent buffer, fg yellow, bg darkcyan DestroyModuleConfig Launch: * *Launch: Columns 1 *Launch: Rows 8 *Launch: Font "xft:Bitstream Vera Sans:style=Roman:size=7" *Launch: Colorset 7 *Launch: Frame 0 # Ci-dessous axb signifie un bouton qui occupe a colonnes et b lignes *Launch: (1x1, Title "firefox", Action(Mouse 1) 'Exec exec firefox') #*Launch: (1x1, Title "FvwmConsole", Action(Mouse 1) 'Module FvwmConsole -terminal rxvt -bg gold -fg midnightblue -fn "-adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-*"') *Launch: (1x1, Title "gaim", Action(Mouse 1) 'Exec exec \ xcinterm-gb2312 -e gaim') *Launch: (1x1, Title "gimp", Action(Mouse 1) 'Exec exec gimp-2.0') *Launch: (1x1, Title "gvim", Action(Mouse 1) 'Exec exec gvim') *Launch: (1x1, Title "lyx", Action(Mouse 1) 'Exec exec lyx') *Launch: (1x1, Title "evolution", Action(Mouse 1) 'Exec exec evolution') #*Launch: (1x1, Title "mutt", Action(Mouse 1) 'Exec exec gnome-terminal \ --geometry 80x35 --title "Mutt" -e "mutt -f $HOME/mail/inbox"') *Launch: (1x1, Title "skype", Action(Mouse 1) 'Exec exec skype') *Launch: (1x1, Title "terminal", Action(Mouse 1) 'Exec exec gnome-terminal') # Un autre FvwmButtons # # Pour bouton transparent sans bord: *FvwmButtons: Frame 0 *FvwmButtons: Colorset 7 #*FvwmButtons: ButtonGeometry 64x64-0-64 #*FvwmButtons: ButtonGeometry 80x74-0-74 *FvwmButtons: Columns 1 *FvwmButtons: (Swallow (NoClose, UseOld) "wmpinboard" 'Exec exec wmpinboard' # Lancer la commande xev, appuyer sur la touche "Windows logo" # qui est la troisième à droite de F12 sur mon portable. # Je vois afficher # ...keycode 115 (keysym 0xffeb, Super_L)... # Tout cela est défini dans /usr/include/X11/keysymdef.h # Donc cette touche s'appelle Super_L # # Configurer pour que appuyer sur cette touche "to toggle FvwmProxy, # which allows you to see all windows on your # desktop, even if they've been obscured..really cool". DestroyModuleConfig FvwmProxy: * *FvwmProxy: ProxyMove true Key Super_L A N SendToModule FvwmProxy ShowToggle ########################################################################## #################### Fonctions d'initialisation ########################## # Start, Init and restart functions # # This section defines the functions StartFunction, InitFunction and # RestartFunction. # # InitFunction is executed automatically when fvwm first starts. # RestartFunction is executed automatically when fvwm restarts itself. # StartFunction is the two types. # # StartFunction should be used for starting fvwm modules, such as the # button bar. InitFunction should be used to start other applications; they # should not be started again, when fvwm is restarted, since they don't # die like fvwm modules do. RestartFunction exists mostly for completeness. DestroyFunc StartFunction AddToFunc StartFunction # Le pager affiche deux desks : #+ I Module FvwmPager 0 1 # Le pager affiche un seul desk : + I Module FvwmPager 0 0 + I Module FvwmButtons -g 81x120-0-64 Launch + I Module FvwmButtons -g 81x74-0-186 + I Module FvwmProxy # Pour certaines applications, SkipMapping ne marche pas. # Il faut essayer et tester. # # Pour korganizer, utiliser !FPFocusByFunction résoud le pb. # Je veux que korganizer soit toujours sur le premier desk # et sur la page de coordonnées 1 0 Style korganizer StartsOnPage 0 1 0, SkipMapping, !FPFocusByFunction # # Pour firefox ou sunbird, utiliser "Firefox-bin" ou "Sunbird-bin" Style "Sunbird-bin" StartsOnPage 0 1 0, SkipMapping DestroyFunc InitFunction AddToFunc InitFunction + I Exec exec gkrellm --geometry -0+0 #+ I Exec exec korganizer + I Exec exec sunbird + I GotoPage 0 0 + I Exec exec gnome-terminal + I Exec exec firefox ##########################################################################