diff --git a/content/images/covers/keyboards.jpg b/content/images/covers/keyboards.jpg new file mode 100644 index 0000000..31453f7 Binary files /dev/null and b/content/images/covers/keyboards.jpg differ diff --git a/content/tips/tessen-fr.md b/content/tips/tessen-fr.md new file mode 100644 index 0000000..b3aaf84 --- /dev/null +++ b/content/tips/tessen-fr.md @@ -0,0 +1,107 @@ +--- +Title: Raccourcis clavier pour une interface 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çu directement pour wayland, je suis tombé +sur [tessen](https://github.com/ayushnix/tessen) qui supporte de nombreux outils +de menus à 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. + +J'ai donc décidé d'utiliser `rofi` qui avait l'air de bien fonctionner… mis à +part les raccourcis claviers. Mais 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-`](https://github.com/davatorium/rofi/blob/next/doc/rofi-keys.5.markdown#kb-custom-1) +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](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-9: "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.