smenu est un filtre de sélection tout comme sed
est un filtre d'édition.
Cet outil lit les mots à partir d'une entrée standard ou d'un fichier et les présente à l'écran du terminal dans différentes dispositions dans une fenêtre défilante. Un curseur, facilement déplacé à l'aide du clavier et/ou de la souris , permet de sélectionner un ou plusieurs mots.
Notez que l'écran n'est pas effacé au début et à la fin de l'exécution du smenu . La fenêtre de sélection s'affiche à la position du curseur, et le contenu précédent du terminal n'est ni modifié ni perdu.
J'ai essayé de le rendre aussi simple à utiliser que possible. Cela devrait fonctionner sur tous les terminaux gérés dans la base de données terminfo
.
Le codage UTF-8
est pris en charge. Cette prise en charge inclut des caractères double largeur et des clusters de graphèmes étendus. Ce dernier est cependant encore expérimental et fonctionne bien mieux si des terminaux appropriés tels que WezTerm ou iTerm sont utilisés.
L'encodage des glyphes UTF-8
doit également être sous forme canonique, car aucun effort ne sera fait pour les mettre sous cette forme.
Veuillez vous référer à la page de manuel incluse pour en savoir plus sur ce petit programme.
Le wiki contient des captures d'écran et des animations qui détaillent certains concepts et fonctionnalités de smenu .
Certaines distributions Linux fournissent déjà smenu sous forme de package, sinon, smenu peut être construit sur n'importe quel système sur lequel une plate-forme de développement terminfo
fonctionnelle est disponible. Cela inclut tous les systèmes Unix et de type Unix que je connais.
Veuillez utiliser le script build.sh
fourni pour créer l'exécutable. Ce script utilise et accepte les mêmes arguments que le script configure
GNU, tapez build.sh --help
pour les voir.
Une fois le processus de construction terminé, une simple make install
avec les privilèges appropriés le fera.
J'ai activé les discussions sur ce référentiel.
Je suis conscient qu'il peut y avoir une certaine confusion au moment de décider où vous devez communiquer lorsque vous signalez des problèmes, posez des questions ou soumettez des demandes de fonctionnalités. Cette section vise donc à nous aider à nous aligner sur cela.
Veuillez soulever un problème si :
Veuillez ouvrir une discussion si :
Ce programme devrait fonctionner sur la plupart des Unix, mais si vous utilisez Linux, essayez de taper la ligne suivante à l'invite du shell (ici : "$ "
) :
$ R=$(grep Vm /proc/$$/status | smenu -n20 -W $':tn' -q -c -b -g -s /VmH) $ écho $R
Quelque chose comme ceci devrait maintenant s'afficher avec le programme en attente de commandes : (les numéros sont les miens, les vôtres seront différents)
VmPeak¦ 23840 Ko Taille Vm¦ 23836 Ko VmLck ¦ 0 Ko VmHWM ¦ 2936 Ko VmRSS ¦ 2936 Ko VmData¦ 1316 Ko VmStk ¦ 136 Ko VmExe ¦ 28 Ko VmLib ¦ 3956 Ko VmPTE ¦ 64 Ko VmSwap¦ 0 Ko
Un curseur doit être sous "VmHWM "
.
Après avoir déplacé le curseur sur " 136 kB"
et terminé le programme avec
, la variable shell R doit contenir : " 136 kB"
.
La commande suivante, indépendante de la marque Unix, devrait vous afficher une fenêtre déroulante si vous avez plus de 10 comptes sur votre Unix avec un UID inférieur à 100 :
$ R=$(awk -F : '$3 < 100 {print $1,$3,$4,$NF}' /etc/passwd | smenu -n10 -c) $ écho $R
Sur le mien ( LANG
et LC_ALL
définis sur POSIX
), il affiche :
à 25 25 /bin/bash système 0 3 /usr/bin/ksh + bac 1 1 /bin/bash | démon 2 2 /bin/bash | ftp 40 49 /bin/bash | jeux 12 100 /bin/bash | lp47/bin/bash | mail 8 12 /bin/false | nommé 44 44 /bin/false | ntp 74 108 /bin/faux v
A noter la présence d'une barre de défilement.
Ajoutez simplement ce qui suit dans votre .bashrc
EOL=$'n' bind -x '"Cr": READLINE_LINE=$(fc -lr 1 | sed "s/[1-9][0-9]*..//" | smenu -Q -l -ac:7/4,b -W"$EOL") READLINE_POINT=${#READLINE_LINE}'
Lancez ou relancez bash et appuyez sur CTRL-R
( CTRL-C
ou q
pour quitter), profitez-en !
Vous pouvez également ajouter le paramètre -d pour demander à smenu de nettoyer la fenêtre de sélection après avoir sélectionné une entrée.
Ces versions utilisent un nouveau système d'options appelé ctxopt qui peut contenir des bugs. Veuillez les signaler afin qu'ils puissent être corrigés dans la prochaine version de smenu ou ctxopt (https://github.com/p-gen/ctxopt).
Les arguments de ligne de commande peuvent également devoir être réorganisés dans certains cas en raison de ce nouveau système de gestion des options. Désolé pour le travail supplémentaire que cela pourrait impliquer.
L'alignement à droite des lignes écrites de droite à gauche, comme le farsi ou l'hébreu, n'est pas respecté.
Le système de test inclus est relativement jeune, soyez indulgent.
IMPORTANT le système de test a quelques dépendances, veuillez lire le test/README.rst
avant d'aller plus loin.
REMARQUE : exécuter tous les tests en exécutant ./tests.sh
dans le répertoire tests
prendra un certain temps (environ 21 minutes pour l'instant).
REMARQUE sur certains systèmes comme *BSD, certains tests peuvent échouer. Cela peut s'expliquer par les différences dans les implémentations posix/libc/.... Cela peut notamment se produire lorsque certaines expressions régulières spécifiques ou des séquences d'octets UTF-8
inhabituelles sont utilisées.
Si un test échoue pour une raison inconnue, merci de m'envoyer le nom de son répertoire et le fichier .bad
correspondant.
Si vous êtes confronté à un bug qu'aucun test ne couvre, alors vous pouvez créer un nouveau test dans le répertoire tests
dans un répertoire existant ou nouveau : lire le fichier tests/README.rst
, utiliser un test existant comme modèle, créer un .in
et un fichier .tst
et envoyez-les-moi ainsi que les fichiers produits.
Les contributions sont les bienvenues, mais discutez d'abord de votre proposition dans un numéro ou avec le responsable.
Je tiens à remercier ceux qui ont pris le temps de packager smenu pour leur système d'exploitation ou leur distribution préférée. Vous trouverez leurs noms ici : https://repology.org/project/smenu/information