LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


personaliser:dmenu

dmenu: le menu dynamique pour X

présentation - installation

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 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:


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: <http://thuban.toile-libre.org/index.php/2011/01/22/un-pense-bete-avec-dmenu/>
    # 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:

personaliser/dmenu.txt · Dernière modification: 2018/11/17 13:54 (modification externe)