Ajouter Howto dmenu

This commit is contained in:
Alexis Ben Miloud--Josselin 2023-01-16 15:34:00 +01:00
parent 05ca5007a2
commit c790dbb6bb

75
HowtoDmenu.md Normal file
View file

@ -0,0 +1,75 @@
---
title: Howto dmenu
categories: 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\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 <n>` : afficher le menu verticalement, en affichant `<n>` lignes en même temps ;
* `-p <str>` : 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 <window_id>`
~~~ { .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
}
~~~