====== 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]]