wiki/HowtoDmenu.md
2023-01-16 17:36:06 +01:00

2.7 KiB

title categories
Howto dmenu desktop menu suckless x

Site officiel : https://tools.suckless.org/dmenu/

dmenu est logiciel graphique (sur X) écrit en C pour générer un menu à partir d'une liste.

Certains gestionnaires de fenêtre peuvent utiliser dmenu pour lister l'ensemble les programmes dans la variable PATH et permettre à l'utilisateur de choisir le programme à exécuter. C'est une façon d'utiliser dmenu.

dmenu affiche un menu à partir de son entrée standard. Une ligne est un élément du menu. L'utilisateur peut selectionner un ou plusieurs éléments. Les éléments choisis sont écrits sur la sortie standard.

Installation

Sous Debian

Le logiciel se trouve dans le paquet suckless-tools

# apt install suckless-tools

Utilisation

dmenu sera toujours invoqué dans une chaîne de pipes :

$ commande | dmenu | commande
$ dmenu < fichier | commande
$ commande | dmenu > fichier
$ variable=$(commande | dmenu)

Pour s'entrainer, on peut utiliser cette commande :

$ printf 'élément 1\nélément 2\nélément 3\nitem 1\nitem 2\nitem 3' | dmenu

Une fois prêt, une barre apparaîtra en haut de l'écran avec une zone d'entrée de texte à gauche pour filter suivie des différents éléments. dmenu capture toutes les entrées du clavier. On peut alors entrer du texte pour filtrer les éléments.

dmenu est contrôlé uniquement avec le clavier. Quelques raccourcis :

  • Bas ou Droite ou Ctrl+n : sélectionner l'élément affiché suivant ;
  • Haut ou Gauche ou Ctrl+p : sélectionner l'élément affiché précédent ;
  • Début ou Ctrl+a : sélectionner le premier élément affiché ;
  • Fin ou Ctrl+e : sélectionner le dernier élément affiché ;
  • Entrée : valider l'élément sélectionné et quitter ;
  • Échap : quitter avec une erreur ;
  • Ctrl+Entrée : valider l'élément sélectionné.

Lorsque dmenu est invoqué en mode vertical, avec l'option -l <n>, les touches Droite et Gauche déplacent le curseur au lieu de changer l'élément sélectionné.

Options couramments utilisées :

  • -i : recherche insensible à la case ;
  • -l <n> : afficher le menu verticalement, en affichant <n> lignes en même temps ;
  • -p <str> : définir un prompt.

L'espace après les options -l et -p est nécessaire.

Exemple : parcourir une hiérarchie de fichiers

Fonction récursive en Bash pour parcourir une hiérarchie de fichiers.

dmenu peut être embarqué dans une fenêtre avec l'option -w <window_id>

dmenu_browser() {
    sel="$(ls -FL | grep '/$' | dmenu -i -l 11 -p "$(pwd)" -w "${WINDOWID}")"
    if [[ -d "${sel}" ]]
    then
        if cd "${sel}"
        then
            dmenu_browser
        fi
    fi
}