JWM (Joe's Window Manager) est un gestionnaire de fenêtres pour le système X Window. JWM est écrit en C et peut être compilé en ne nécessitant que la bibliothèque Xlib.
Il fournit un environnement graphique à la Windows 95.
JWM se trouve dans les dépots Universe (cf. documentation). Le paquet « jwm » permet de l'installer.
Tout tient dans un unique fichier de configuration appelé jwmrc. Par défaut ce dernier est situé dans
/etc/jwm
. Pour plus de confort lors de la configuration je vous conseille de le copier dans votre dossier personnel sous le nom
.jwmrc
.
cp /etc/jwm/jwmrc ~/.jwmrc
Egalement, si jwm n'est pas proposé par l'écran de connexion, il est vraiment bien de taper dans le terminal:
sudo cp /usr/share/jwm/xsessions/Jwm.desktop /usr/share/xsessions/Jwm.desktop
Le fichier est codé en XML très facile a comprendre. Je vais essayer de « découper » le fichier le mieux possible.
Il se situe dans la section "RootMenu" Voici le mien (créé juste pour l'exemple) :
<RootMenu label="Debian" labeled="false" height="0"> <Font>-*-fixed-*-r-*-*-10-*-*-*-*-*-*-*</Font> <Program icon="xterm.xpm" label="Terminal">xterm</Program> <!-- Addititional Menu attributes (height, labeled) --> <Menu icon="folder.xpm" label="Applications"> <Program icon="firefox.png" label="Firefox" height="32">firefox</Program> <Program icon="amsn.xpm" label="aMSN">amsn</Program> <Program icon="mini-filemgr.xpm" label="Rox">rox</Program> <Program icon="xmms.xpm" label="XMMS">xmms</Program> <Program icon="gedit.png" label="Edit GFG">emacs</Program> </Menu icon="shutdown24.xpm" label="SESSION" height="32"> <Separator/> <Restart icon="mini.start.xpm" /> <Exit icon="mini.exit.xpm" confirm="false" /> </RootMenu>
Analysons tout ce bazar. D'abord la balise <RootMenu> : elle admet plusieurs attributs : label : sera affiché en haut du menu si l'attribut labeled a la valeur "true", ce deuxième attribut est facultatif et s'il n'est pas indiqué sa valeur par défaut est "false". height définit la hauteur des lignes du menu. En utilisant la valeur Zéro elle s'adapte automatiquement à la taille des éléments. On comprend facilement les balises <Program>. Deux attributs : icon et label (nom de l'entrée) On tape dans la balise le nom de l'exécutable. Optionnellement on peut ajouter la balise height pour préciser la hauteur de la ligne du menu Un sous-menu est contenu dans la balise <Menu> avec, la aussi, les attributs icon et label, ici encore l'attribut height, optionnel, spécifie la hauteur des items qui dépendent du sous menu. Je ne vous ferez pas l'injure de vous expliquer le rôle de la balise <Separator>.
La balise <Restart> redémarre JWM. Enfin <Exit> ferme la session, l'attribut confirm, s'il a pour valeur true, demande juste a l'utilisateur s'il veux vraiment quitter .
Il faut dire a JWM dans quels dossiers elles se trouvent. Cela se passe entre les balises Icons (très original…) Voici ma section Icons (vers la fin du fichier)
<Icons> <IconPath>/usr/share/icons/gnome/48x48/apps</IconPath> <IconPath>/usr/share/fvwm95/mini-icons/</IconPath> <IconPath>/usr/X11R6/include/X11/pixmaps</IconPath> </Icons>
Il est aussi possible de démarrer un certain nombre de programmes dès le démarrage de la session JWM. Cela est assez utile dans certains cas. Par exemple, on peut démarrer nautilus:
<StartupCommand> nautilus </StartupCommand>
JWM permet de programmer soi-même des menus, mais aussi de créer des barres.
Voici l'exemple de ma barre du bas:
<Tray x="0" y="-1" height="32"> <TrayButton label="Menu">root:1</TrayButton> <TrayButton label="R">showdesktop</TrayButton> <Pager/> <TaskList/> <Dock/> <Swallow name="xload" width="64"> xload -nolabel -bg black -fg blue -hl white </Swallow> <Clock format="%H:%M">xclock</Clock> </Tray>
"x=0" et "y=-1" donnent les coordonnées de la barre. -1 c'est en bas, 1 en haut. On imagine qu'il est tout à fait possible de faire des barres latérales avec la coordonnée "x=1" ou "x=-1" avec y=0. Height c'est la hauteur de la barre. Cela dépend du type d'icone et ce que vous voulez y mettre.
Il y a écrit "Menu" sur le bouton du menu root expliqué plus haut. L'autre bouton "R" est un bouton permettant de réduire toutes les fenêtres en même temps.
Le "Pager" est le système qui permet de gérer les bureaux multiples, la "Tasklist" les tâches, le "Dock" permet à des applications système de s'afficher, le "swallow" permet d'intégrer des applications comme ici l'indicateur de charge du processeur.
Voici un exemple de barre du haut (raccourcie):
<Tray x="0" y="1" height="36" autohide="true"> <TrayButton icon="/usr/share/icons/hicolor/32x32/apps/gnome-cpu-frequency-applet.png">exec:gnome-system-monitor</TrayButton> <TrayButton icon="/usr/share/icons/hicolor/32x32/apps/gimp.png">exec:gimp</TrayButton> <TrayButton icon="/usr/share/icons/hicolor/32x32/apps/tomboy.png">exec:scribus</TrayButton> <TrayButton icon="/usr/share/icons/hicolor/32x32/apps/nautilus.png">exec:nautilus</TrayButton> <TrayButton icon="/usr/share/icons/oxygen/32x32/apps/utilities-terminal.png">exec:x-terminal-emulator</TrayButton> <TrayButton icon="/usr/share/icons/oxygen/32x32/places/user-trash.png">exec:nautilus trash:///</TrayButton> </Tray>
Le code "autohide="true"" permet de masquer la barre quand le pointeur de la souris n'est pas dessus.
Ensuite il y a toute une partie sur l'apparence des fenêtres et sur le comportement de JWM.
Je continue quand je peux… A très bientôt ;)