diff --git a/HowtoDmenu.md b/HowtoDmenu.md new file mode 100644 index 00000000..db5d122a --- /dev/null +++ b/HowtoDmenu.md @@ -0,0 +1,75 @@ +--- +title: Howto dmenu +categories: desktop menu suckless x +--- + +**Site officiel** : + +`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\n' | dmenu +~~~ + +`dmenu` est contrôlé uniquement avec le clavier. Quelques raccourcis : + +* `Droite` ou `Ctrl+n` : élément suivant affiché ; +* `Gauche` ou `Ctrl+p` : élément précédent affiché ; +* `Début` ou `Ctrl+a` : premier élément affiché ; +* `Fin` ou `Ctrl+e` : dernier élément affiché ; +* `Entrée` : valider l'élément sélectionné et quitter ; +* `Échap` : quitter avec un erreur ; +* `Ctrl+Entrée` : valider l'élément sélectionné. + +Options couramments utilisées : + +* `-i` : recherche insensible à la case ; +* `-l ` : afficher le menu verticalement, en affichant `` lignes en même temps ; +* `-p ` : définir un _prompt_. + +### 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 ` + +~~~ { .bash } +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 +} +~~~ +