====== dmenu: le menu dynamique pour X ======
===== présentation - installation =====
[[http://tools.suckless.org/dmenu/|dmenu]] est un menu dynamique pour X entièrement contrôlé depuis le clavier. il est disponible pour toutes les distributions GNU/Linux. dmenu est ultra-léger, rapide, et est développé par [[http://suckless.org/|suckless.org]] comme [[:dwm]].\\
chez **Debian**, il fait parti du paquet suckless-tools# apt-get install suckless-tools
vous pouvez aussi choisir une version supportant les polices xft, il faudra alors passer par la **compilation**:\\
*on installe les dépendances# apt-get install libxft-dev libxinerama-dev
*on récupère les sources de dmenu-xft$ wget http://piserv/public/dmenu-xft-4.2.1.tar.gz
*on extrait l'archive et on se place dans le répertoire$ tar xvzf dmenu-xft-4.2.1.tar.gz
$ cd dmenu-xft-4.2.1/
*on compile et on installe$ make
# make install
vous pouvez désormais utiliser dmenu avec les polices xft.
===== utilisation =====
dmenu se lance simplement grâce à la commande dmenu_run et liste les applications et scripts inclus dans $PATH. voici son affichage par défaut:\\
{{ personaliser:dmenu_basic.png? |}}\\
\\
dmenu accepte les options suivantes:
^option ^argument ^description^
|-b ||affiche dmenu en bas de l'écran. |
|-f ||dmenu prend la frappe en compte immédiatement mais bloque X jusqu'à la lecture complète de stdin. |
|-i ||dmenu prend la casse en compte. |
|-l |digit |dmenu affiche le menu verticalement avec le nombre de ligne passé en argument. |
|-p |texte |defini le texte à afficher à gauche de l'écran. |
|-fn |font |police utilisée. |
|-nb |#RRGGBB |couleur du fond. |
|-nf |::: |couleur du texte. |
|-sb |::: |couleur du fond sélectionné. |
|-sf |::: |couleur du texte sélectionné. |
|-v ||affiche la version de dmenu. |
==== les scripts ====
dmenu peut-être utilisé pour bien des choses: changer son fond d'écran, naviguer dans ses raccourcis, son dossier utilisateur, quitter sa session...
* **dmenu-wall.sh**: ce script liste les images situées dans 'WALLDIR' et affiche l'image sélectionnée en fond d'écran:#!/bin/bash
WALLDIR=$HOME/pics/walls
wall=`ls -A $WALLDIR | dmenu -b -fn "-*-fixed-*-*-*-*-10-70-*-*-*-*-*-*" -nb '#222222' -nf '#7D7D7D' -sb '#7D7D7D' -sf '#222222' -p 'set as wall:'` && eval "feh --no-xinerama --bg-scale $WALLDIR/$wall"
* **dmenu-todo.sh**: ce script sert de pense-bête: vous écrivez, il rajoute une tâche. vous sélectionnez, il efface la tâche;#!/bin/sh
## script pour gérer les différentes tâches à faire avec dmenu.
## sources:
# variables utilisées pour dmenu
SB="#7D7D7D"
SF="#222222"
NB="#222222"
NF="#7D7D7D"
FN="-*-fixed-*-*-*-*-10-70-*-*-*-*-*-*"
FILE=~/.todo
SCRIPT=~/bin/dmenu-todo.sh
HEIGHT=$(cat $FILE | wc -l)
PROMPT="write:add | select:del > "
ACTION="cat $FILE | dmenu -fn $FN -l '$HEIGHT' -nb '$NB' -nf '$NF' -sb '$SB' -sf '$SF' -p '$PROMPT:' "
CMD=$(eval $ACTION)
while [ -n "$CMD" ]; do
grep -q "^$CMD" $FILE
if [ $? = 0 ]; then
grep -v "^$CMD" $FILE > /tmp/todo
mv /tmp/todo $FILE
else
echo "$CMD" >> $FILE
exec $SCRIPT && exit 7
fi
CMD=$(eval $ACTION)
done
exit 0
* **dmenu-home.sh**: ce script liste le contenu d'un dossier et ouvre l'adresse sélectionnée. remplacer 'rox' par votre gestionnaire de fichier.#!/bin/bash
loc=`ls -A $HOME | dmenu -b -fn "-*-fixed-*-*-*-*-10-70-*-*-*-*-*-*" -nb '#222222' -nf '#7D7D7D' -sb '#7D7D7D' -sf '#222222' -p 'goto/open/edit: '` && eval "rox $loc"
* **dmenu-launch.sh**: ce sript lance vos scripts personnels contenus dans 'DIR'#!/bin/sh
# minimal launcher with dmenu
DIR=$HOME/bin/skin_switchers
skin=`ls -1 $DIR | dmenu -b -fn '-*-fixed-*-*-*-*-10-70-*-*-*-*-*-*' -nb '#222222' -nf '#7D7D7D' -sb '#7D7D7D' -sf '#222222' -i -p 'skins: '` && eval "exec $DIR/$skin"
* **dmenu-quit**: simple logout/exit script, nécessite xdotool.#!/bin/bash
# a simple logout dialog
choice=`echo -e "0: Logout\n1: Shutdown\n2: Reboot\n3:Cancel" | dmenu -b -fn "-*-fixed-*-*-*-*-10-70-*-*-*-*-*-*" -nb "#222222" -nf "#7D7D7D" -sb "#7D7D7D" -sf "#222222" -p "select an action:" | cut -d ':' -f 1`
# execute the choice in background
case "$choice" in
0) xdotool key Ctrl+Alt+BackSpace & ;;
1) sudo shutdown -r now & ;;
2) sudo shutdown -h now & ;;
3) exit ;;
esac
===== conclusion =====
comme vous pouvez le constater, les possibilités de dmenu ne sont limitées que par votre imagination ou vos connaissances :). quelques liens:
* la [[http://tools.suckless.org/dmenu/|page officielle]] du site
* l'excellent [[http://yeuxdelibad.net/Logiciel-libre/Suckless/dmenu/|blog de thuban]]