Depuis peu, je suis passé à wayland, via sway.
Un des éléments bloquants à la migration est le fait que certains outils spécifiques, comme barrier, un système de clavier-souris-presse papier partagé entre plusieurs machines, ne proposent pas encore un support pour wayland.
Mais l'autre élément bloquant vient du fait que les outils alternatifs changent beaucoup trop mes habitudes, et frustrent à l'utilisation. Un de ceux-ci étant rofi-pass, qui est une interface entre rofi et pass.
En particulier, il intègre des raccourcis claviers dont j'ai pris l'habitude
comme Alt+c
pour copier le mot de passe (pendant une durée limitée) dans le
presse-papier ou Alt-Entrée
pour exécuter le champ autotype
d'un fichier de
mot de passe.
Comme rofi-pass
n'est rien d'autre qu'un script bash qui récupère les infos
depuis pass/gopass et le presse-papier de X11 ainsi que xdotools
pour
effectuer ces actions, il est possible de modifier directement le fichier de
configuration pour cela, même si ce n'est pas très
élégant.
En regardant du côté des outils conçus directement pour wayland, je suis tombé
sur tessen qui supporte de nombreux outils
de menus interactifs à la dmenu
, dont rofi, mais aussi
fuzzel qui est un programme natif wayland.
Tessen interprète ensuite la réponse de ces outils pour les intégrer avec
wl-copy/wl-paste
pour le presse-papier et wtype
pour la saisie.
Après avoir essayé fuzzel, je me suis rendu compte que leur algorithme de
recherche approximative ne me convenait pas, n'étant pas
fzf qui est intégré dans pas mal de mes
programmes et dont j'ai pris mes habitudes quant à la recherche (par exemple
pour la complétion dans mon shell
), ainsi que certains raccourcis assez
universels comme Ctrl-u
pour effacer la ligne en cours.
J'ai donc décidé d'utiliser rofi
qui avait l'air de bien fonctionner bien
qu'il ne se lance via xwayland
qui n'est pas considéré comme assez pur par
certaines personnes.
Sauf que les raccourcis claviers spécifiques à rofi-pass
ne fonctionnent pas
par défaut.
Cependant un aperçu de la page de manuel indique que cela est possible:
If the dmenu program of your choice supports custom keybindings with exit codes greater than or equal to 10, tessen can execute custom operations on a selected file in the first menu. At the very least, fuzzel(1), bemenu(1), and rofi(1) support this feature.
Avec en particulier le support de l'otp nativement gérer, chose que j'ai rajouté
à la main dans rofi-pass pour avoir “Alt+o
” pour taper mes codes
OTP pour
l'authentification à deux facteurs.
Pour cela, il suffit d'envoyer un code d'erreur supérieur à 10 au programme, ça
tombe bien, dans la configuration de rofi, il y a les options
kb-custom-<n>
qui permettent d’associer la touche ou combinaison de touches à un code d’erreur
valant “9+n”, kb-custom-1
correspondant donc à 10 et kb-custom-9
correspondant à 20. Je précise parce qu'au début j'avais associé un raccourcis à
kb-custom-10
en me disant que ça serait associé au code de sortie 10, et donc
interprété par tessen comme auto type username and password
d'après le
manuel… or il n'en était rien. Heureusement que je suis tombé sur un message sur
reddit
expliquant l'utilisation de ces options.
Ce qui a donc donné la création du fichier de configuration
$HOME/.config/rofi/tessen.rasi
suivant:
configuration {
/* Tessen */
kb-custom-1: "Alt+Return"; /* autotype */
kb-custom-2: "Alt+u"; /* autotype user */
kb-custom-3: "Alt+p"; /* autotype password */
kb-custom-5: "Alt+t"; /* copy user */
kb-custom-6: "Alt+c"; /* copy password */
kb-custom-8: "Alt+o"; /* autotype otp */
}
@import "config" /* import default config */
J'ai d'abord essayé de le rajouter dans la configuration par défaut
$HOME/.config/rofi/config.rasi
, mais cela créait des conflits de raccourcis
avec rofimoji qui ne s'est pas gêné pour me
le dire.
Maintenant il ne reste plus qu'à l'intégrer à tessen, ce qui est possible à
l'aide du fichier de configuration $HOME/.config/tessen/config
à l'aide des
lignes :
dmenu_backend="rofi"
rofi_config_file="$HOME/.config/rofi/tessen.rasi"
Pour une raison inconnue que je n'ai pas encore creusé, $XDG_CONFIG_HOME
comme
suggéré dans les commentaires du fichier de configuration de
tessen ne fonctionne
pas chez moi, mais un jour j'aurais des fichiers de configuration propres… un
jour.