2023-07-09 13:19:29 +00:00
|
|
|
|
---
|
2023-07-09 13:33:40 +00:00
|
|
|
|
Title: Raccourcis clavier pour rofi pour pass sous wayland
|
2023-07-09 13:19:29 +00:00
|
|
|
|
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).
|
|
|
|
|
|
2023-07-09 13:33:40 +00:00
|
|
|
|
En regardant du côté des outils conçus directement pour wayland, je suis tombé
|
2023-07-09 13:19:29 +00:00
|
|
|
|
sur [tessen](https://github.com/ayushnix/tessen) qui supporte de nombreux outils
|
2023-07-09 13:33:40 +00:00
|
|
|
|
de menus interactifs à la `dmenu`, dont _rofi_, mais aussi
|
2023-07-09 13:19:29 +00:00
|
|
|
|
[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
|
2023-07-10 09:57:56 +00:00
|
|
|
|
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.
|
2023-07-09 13:19:29 +00:00
|
|
|
|
|
2023-07-10 09:57:56 +00:00
|
|
|
|
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:
|
2023-07-09 13:19:29 +00:00
|
|
|
|
|
|
|
|
|
> 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 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`
|
2023-07-10 09:57:56 +00:00
|
|
|
|
correspondant à 20. Je précise parce qu'au début j'avais associé un raccourcis à
|
2023-07-09 13:19:29 +00:00
|
|
|
|
`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 */
|
2023-07-09 13:35:56 +00:00
|
|
|
|
kb-custom-8: "Alt+o"; /* autotype otp */
|
2023-07-09 13:19:29 +00:00
|
|
|
|
}
|
|
|
|
|
@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.
|
|
|
|
|
|
2023-07-10 09:57:56 +00:00
|
|
|
|
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 :
|
2023-07-09 13:19:29 +00:00
|
|
|
|
|
|
|
|
|
```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.
|