kevin (at) alinto (dot) com
Les sources de wmdrawer se trouvent là: http://people.easter-eggs.org/~valos/wmdrawer/. La version est la 0.10.5 (au jour d'aujourd'hui). Récuperez donc le tgz, et détargezedez-le[1] quelque part, comme /usr/src vous devez obtenir un truc dans le genre:
Vous pouvez remarquer deux choses: la première, c'est que dans mon cas, le source est dans /usr/src/WMAPPS/ et non dans /usr/src/ comme conseillé quelques lignes plus haut. C'est comme ça. La deuxième, c'est un répertoire qui s'appelle pixmaps/.kevin@zipslack:/usr/src/WMAPPS/wmdrawer-0.10.5$ ls AUTHORS config.h images.o wmdrawer-redhat.spec COPYING config.o pixmaps/ wmdrawer-slackware.spec ChangeLog doc/ types_defs.h wmdrawer.c INSTALL graphics.c utils.c wmdrawer.o Makefile graphics.h utils.h wmdrawerrc.example README graphics.o utils.o TODO images.c wmdrawer* config.c images.h wmdrawer-gentoo.ebuild kevin@zipslack:/usr/src/WMAPPS/wmdrawer-0.10.5$
pour compiler le machin. Mais non. Par défaut, le logo utilisé est un pingouin, l'image est pixmaps/defaultDockIcon.xpm, un pingouin vu de trois-quart, et je préfere le logo du pingouin linux. Alors modifions ce qu'il faut pour avoir le pingouin linux (ou n'importe quel autre logo). J'ai récupéré un xpm du logo, appelé linux.xpm, dispo ici(faire enregistrer sous, le clic simple affiche du texte, je ne sais pas pourquoi). Mettez le fichier linux.xpm dans le répertoire pixmaps/. Ensuite, dans le fichier wmdrawer.c, à la ligne 41, vous avez:kevin@zipslack:/usr/src/WMAPPS/wmdrawer-0.10.5$ make
Modifiez le en:#include "pixmaps/defaultDockIcon.xpm"
Deuxième chose. Le fichier .xpm contient (entre autre) le nom de la fonction définissant son image. Il faut modifier une deuxième fois le fichier à la ligne 256:#include "pixmaps/linux.xpm"
vous voyez le defaultDockIcon_xpm ? Eh bien, on va mettre à la place la fonction de notre fichier xpm à nous qui s'appelle penguin_xpm, cela donnera:if (useDefaultDockIcon == 1 || res == 0) createPixmapFromData ((const char **)defaultDockIcon_xpm, &dockIconPix, &dockIconMask, &dockIconW, &dockIconH, config.dockW, config.dockH, RESIZE_SMALLER);
Ok. Tout va bien, un nouveau fichier image pour le dock est présent, il est bien défini. On peut lancer la compilation:if (useDefaultDockIcon == 1 || res == 0) createPixmapFromData ((const char **)penguin_xpm, &dockIconPix, &dockIconMask, &dockIconW, &dockIconH, config.dockW, config.dockH, RESIZE_SMALLER);
Et voilà. La compilation s'est bien passée. Le binaire est là, prêt à servir. L'installation se fait en root avec un make install. Vous pouvez aussi le laisser là où il est et le lancer avec son chemin complet.kevin@zipslack:/usr/src/WMAPPS/wmdrawer-0.10.5$ make gcc -O3 -Wall `gdk-pixbuf-config --cflags` -DLINUX -DUSE_GDKPIXBUF -c utils.c gcc -O3 -Wall `gdk-pixbuf-config --cflags` -DLINUX -DUSE_GDKPIXBUF -c config.c gcc -O3 -Wall `gdk-pixbuf-config --cflags` -DLINUX -DUSE_GDKPIXBUF -c graphics.c gcc -O3 -Wall `gdk-pixbuf-config --cflags` -DLINUX -DUSE_GDKPIXBUF -c images.c gcc -O3 -Wall `gdk-pixbuf-config --cflags` -DLINUX -DUSE_GDKPIXBUF -c wmdrawer.c gcc `gdk-pixbuf-config --libs` -lgdk_pixbuf_xlib -o wmdrawer utils.o config.o graphics.o images.o wmdrawer.o strip wmdrawer kevin@zipslack:/usr/src/WMAPPS/wmdrawer-0.10.5$
Pour les interessés qui veulent utiliser un autre pixmaps, je leur conseille de prendre une image de 48x48. De plus, pour trouver le nom de la fonction, il faut regarder le début du xpm comme indiqué:kevin@zipslack:/usr/src/WMAPPS/wmdrawer-0.10.5$ head -2 pixmaps/linux.xpm /* XPM */ static char * penguin_xpm[] = { kevin@zipslack:/usr/src/WMAPPS/wmdrawer-0.10.5$La fonction est bien penguin_xpm. Faites de même pour votre fichier xpm perso.
--UPDATE!!--
Je viens de tomber sur le paramètre dock_icon du
fichier de configuration. Il permet de définir un icone. Forcément c'est
plus simple en donnant le chemin
# Dock's icon [optional] #dock_icon /usr/share/pixmaps/Brain.xpmcomme ça. Bon, bah si vous voulez une autre icone, ne vous prenez pas la tête à modifier le source de wmdrawer.c, et utilisez ce paramètre. -hem-. Bon, je suis passé à côté de ça, c'est pas grave, ça arrive à tout le monde, hein, et je vais me reconvertir en planteur de concombre au paraguay, ou en gratteur ici au grattez-moi-la, ou en nain dans un jardin. Bref.
Vous disposez d'un exemple de fichier de conf dans le répertoire des sources:
Lisez le, c'est instructif. Vous pouvez choisir de le copier dans votre home directory puis de le modifier ou bien de créer ex nihilo un fichier .wmdrawerrc . Je vous donne le mien, commenté.kevin@zipslack:/usr/src/WMAPPS/wmdrawer-0.10.5$ ls -l wmdrawerrc.example -rw-r--r-- 1 kevin users 2862 jun 26 2004 wmdrawerrc.example
[general] #dock_icon /chemin/vers/icone/image.xpm #pour qu'il s'ouvre de la droite vers la gauche. direction 1 #le fond transparent transparency 1 #Rapidité d'ouverture du menu animation_speed 2 #Fermeture automatique du menu, timeout en millisecondes hide_on_out 1 hide_timeout 2500 #chemin de recherche des images. Curieusement, chez moi, l'ajout de #chemin ne modifie pas la recherche. Donc j'ai copié mes images #dans l'un de ces deux répertoires [images_paths] /usr/share/pixmaps /usr/share/icons #Premiere ligne de menu. (oui, c'est bien une ligne et pas une column :) # syntaxe: (indice contextuel) (image) (programme a executer) # Reperage pour la premiere colonne: 1234567890 [column] (X Terminal) (Shell.png) (xterm -ls) (Config Reseau) (Antennae.xpm) (sudo /usr/local/sbin/IP) (Montage cle USB) (usbNB.png) (~/bin/mount_usb) (Demontage cle USB) (gnome-error.png) (~/bin/umount_usb) #Et la deuxieme ligne de menus [column] (Xmms) (wmxmms.xpm) (xmms) (gmplayer) (mplayer.xpm) (gmplayer) (Musiques) (streamtuner.png) (streamtuner) (Xcalc) (HP-16C-48.xpm) (xcalc)Pensez à adapter à vos programmes/icones/etc.. Bon, c'est quand même relativement clair. Maintenant, dans un xterm, je tapes:
Et le petit pingouin apparaît en bas de mon écran. Avec la souris, je le prends et je le colle du côté droit de l'écran, dans le dock. (Hint: pour le conserver après un redémarrage, il faut quitter windowmaker par un "quitter session"). Ok, vous pouvez cliquer sur les boutons, les actions indiquées se réalisent.kevin@zipslack:~$ wmdrawer & kevin@zipslack:~$
wmdrawer est pas mal, mais je voulais lui ajouter un petit quelque
chose en plus. Par exemple, si vous avez lu le .wmdrawerrc donné en
exemple, vous voyez que j'ai un mount_usb. J'aurais aimé que je puisse
cliquer sur "mount_usb", que ma clé usb se monte, puis que l'icône
dans wmdrawerrc change de couleur afin que lors de la prochaine
ouvertuure du wmdrawerrc, je puisse d'un coup d'oeil vérifier le
montage ou pas de ma clé.
C'est également valide pour n'importe quoi, la connection au réseau,
des mails en attente ou ce que vous souhaitez.
L'idée de base, c'est de modifier en temps réel le fichier .wmdrawerrc
car le programme le relis à chaque ouverture. Si je reprends l'exemple
de l'USB, je dois:
#! /bin/bash mount /mnt/cle-usb sed ' /1234567890/,$!b n n n n s/.*/(Cle USB Montee) (usb.png) (~\/bin\/mount_usb)/ :1 n b1' < ~/.wmdrawerrc > ~/.wmdrawerrc.new mv -f ~/.wmdrawerrc.new ~/.wmdrawerrcEt voilà, lors du prochain clic sur wmdrawer, le fichier affichera l'icone usb.png, non plus en noir et blanc (usbNB.png) mais en couleur, et le texte m'indique bien que la clé est montée. Le script sed est basique: repérage de la ligne, puis 4 'n' pour quatre lignes suivantes, puis un remplacement de la ligne (attention aux / qui doivent être échappés, et puis c'est tout.