blog/content/tips/tessen-fr.md

116 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
Title: Raccourcis clavier pour rofi pour pass sous wayland
Date: 2023-07-09 15:00
Author: Fabrice
Category: astuces
Tags: pass, rofi, tessen
Slug: tessen-shortcut
Header_Cover: ../images/covers/keyboards.jpg
Summary: Comment installer ses raccourcis claviers pour taper ses mots de passe via une interface dmenu-like sous wayland.
Lang: fr
---
Depuis peu, je suis passé à [wayland](https://wayland.freedesktop.org/), via
[sway](https://swaywm.org/).
Un des éléments bloquants à la migration est le fait que certains outils
spécifiques, comme [barrier](https://github.com/debauchee/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](https://github.com/carnager/rofi-pass), qui est
une interface entre [rofi](https://github.com/davatorium/rofi) et
[pass]({filename}../software/pass-fr.md).
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](https://git.epheme.re/fmouhart/my-pkgs/src/branch/master/rofi-pass/rofi-pass.patch).
En regardant du côté des outils conçus directement pour wayland, je suis tombé
sur [tessen](https://github.com/ayushnix/tessen) qui supporte de nombreux outils
de menus interactifs à la `dmenu`, dont _rofi_, mais aussi
[fuzzel](https://codeberg.org/dnkl/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](https://github.com/junegunn/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](https://en.wikipedia.org/wiki/Time-based_one-time_password) pour
l'[authentification à deux facteurs](https://www.vale.re/files/sync/2FA.jpg).
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>`](https://github.com/davatorium/rofi/blob/next/doc/rofi-keys.5.markdown#kb-custom-1)
qui permettent dassocier la touche ou combinaison de touches à un code derreur
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](https://www.reddit.com/r/linuxquestions/comments/tw8x5j/comment/i3edajm/)
expliquant l'utilisation de ces options.
Ce qui a donc donné la création du fichier de configuration
`$HOME/.config/rofi/tessen.rasi` suivant:
```rasi
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](https://github.com/fdw/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 :
```sh
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](https://github.com/ayushnix/tessen/blob/master/config#L23) ne fonctionne
pas chez moi, mais un jour j'aurais des fichiers de configuration propres… un
jour.