Réorganisation totale des keybinds de Sway, MPV et Qutebrowser
-------------------------------------------------
[04/09/2025] - ~7mins - #ux #sway #mpv #qutebrowser
-------------------------------------------------
Bon après un an et demi sous ergol, j'ai pris le temps de refaire un peu mes raccourcis sur différents logiciels.
Sway
Mon gestionnaire de fenêtre favori a été un peu négligé.
Cela fait fort longtemps que je l'utilise maintenant et à l'époque *j'utilisais les raccourcis sémantiques*.
Donc pour mettre en Fullscreen, j'utilisais mod+f, pour mettre en tabbed j'utilisais mod+t.
Pour bouger les fenêtres, c'était avec mod+flèches…
Bref, un truc facile pour s'en rappeler.
Mais *ça n'est utile qu'un petit temps puisque si c'est utilisé fréquemment c'est la mémoire musculaire qui prend le dessus*.
Et là, ce fut le drame, j'ai migré vers ergol.
Par méga flemme et aussi pour ne pas trop me battre contre moi-même, j'ai pas bougé les raccourcis du coup il n'y avait plus l'aspect sémantique.
Un truc chiant c'est que ma touche mod se trouve sur la partie gauche de mon clavier et que de nombreux raccourcis utilisent en complément des touches de la partie droite du clavier.
- Me voilà comme un looser à faire des raccourcis claviers nécessitant les deux mains* alors que je pourrai n'en utiliser qu'une et avoir l'autre pour caresser le chat.
Voilà donc le moment de refaire les raccourcis en profondeur !
C'est l'occasion rêvée pour virer les keybinds qui ne me servent pas !
<summary>extrait ~/.config/sway/config
bindcode $win+36 exec footclient # Entrée bindsym --to-code $win+b kill bindsym --to-code $win+o focus up bindsym --to-code $win+e focus down bindsym --to-code $win+s focus left bindsym --to-code $win+n focus right bindsym --to-code $win+Shift+o move up bindsym --to-code $win+Shift+e move down bindsym --to-code $win+Shift+s move left bindsym --to-code $win+Shift+n move right #resize bindsym --to-code $win+Ctrl+s resize grow left 10 px bindsym --to-code $win+Ctrl+n resize shrink left 10 px bindsym --to-code $win+Ctrl+o resize grow up 10 px bindsym --to-code $win+Ctrl+e resize shrink up 10 px #layouts bindsym --to-code $win+h split h bindsym --to-code $win+v split v bindsym --to-code $win+f fullscreen bindsym --to-code $win+t layout tabbed bindsym --to-code $win+Shift+Space floating toggle bindsym --to-code $win+Space focus mode_toggle # switch to workspace bindcode --no-repeat $win+10 workspace 1 bindcode --no-repeat $win+11 workspace 2 bindcode --no-repeat $win+12 workspace 3 bindcode --no-repeat $win+13 workspace 4 bindcode --no-repeat $win+14 workspace 5 # move focused container to workspace bindcode $win+Shift+10 move container to workspace 1 bindcode $win+Shift+11 move container to workspace 2 bindcode $win+Shift+12 move container to workspace 3 bindcode $win+Shift+13 move container to workspace 4 bindcode $win+Shift+14 move container to workspace 5 bindsym --to-code $win+r reload # musiques via Alt c ou Alt C bindsym --to-code $win+c exec mpdmenu bindsym --to-code $win+Shift+c exec mpdalbumdmenu # Lancement de programme via Alt o bindsym --to-code $win+p exec "fuzzel" # Gestionnaire de mot de passe via Alt p bindsym --to-code $win+w exec /usr/local/bin/menupass --type # Gestion du volume via les bornes d'arcade bindsym XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_SINK@ 5%+ bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_SINK@ 5%- bindsym XF86AudioMute exec wpctl set-mute @DEFAULT_SINK@ toggle bindsym XF86AudioNext exec mpc next bindsym XF86AudioPrev exec mpc prev bindsym XF86AudioPlay exec mpc toggle bindsym --to-code $win+a exec fuzzel-emoji ## Gestion Push-To-Talk de la pédale USB bindsym --no-repeat F12 exec amixer set Capture capture cap bindsym --no-repeat --release F12 exec amixer set Capture capture nocap ## Le Super Fuzzel contextuel bindsym --to-code $win+q exec fuzzel-context-menu
Voilà, rien de bien exotique si ce n'est que je n'utilise plus les flèches mais *OESN* en lieu et place.
D'ailleurs c'est ce que j'utilise désormais dans la plupart des jeux pour remplacer le vénérable *WSAD*.
Ce sont les mêmes touches mais décalées d'une colonne vers la droite et donc plus centré sur le clavier avec donc plus de touches accessibles à côté.
C'est le changement le plus compliqué d'un point de vue habitude mais qui se révèle un des plus agréables.
- Tous les raccourcis de **sway** sont faisables de la main gauche*.
MPV
Allez, à ton tour MPV !
Bon alors lui un truc qui me gonfle, c'est qu'à peine, *tu touches le clavier il se passe des trucs dans tous les sens*.
Et bon, quand tu es bien vautré en train de regarder une vidéo, le chat adore venir voir ce qu'il se passe.
Et bam accident de clavier.
Bref, *je n'utilise qu'un dixième des keybinds de ce logiciel*.
Sauf que les devs sont des génies !
- Ils ont mis une option permettant de virer tous les keybinds par défaut*.
Donc dans votre *~/.config/mpv/config* il suffit d'ajouter input-default-bindings=no et c'est bon plus d'emmerdes.
Ensuite on rajoute ceux que l'on veut.
<summary>~/.config/mpv/input.conf
ctrl+left sub-step -1 ctrl+right sub-step 1 5 multiply speed 1.1 4 multiply speed 1/1.1 MBTN_BACK cycle mute ## Réutilisation des bindings par défaut , frame-back-step . frame-step f cycle fullscreen ESC set fullscreen no MBTN_LEFT_DBL cycle fullscreen Ctrl+h cycle-values hwdec "no" "auto" m cycle mute O no-osd cycle-values osd-level 3 1 SPACE cycle pause MBTN_RIGHT cycle pause q quit-watch-later b nonscalable script-binding autosub/auto_load_subs` script-binding commands/open # open the console
DEL script-binding osc/visiblilty MOUSE_MOVE script-binding osc/__keybinding3 MOUSE_LEAVE script-binding osc/__keybinding4 i script-binding stats/display-stats-toggle y nonscalable script-binding youtube_quality/quality-menu o seek 60 e seek -60 s seek -2 n seek 2 UP seek 60 DOWN seek -60 LEFT seek -2 RIGHT seek 2 4 multiply speed 1/1.1 5 multiply speed 1.1 BS set speed 1.0 Ctrl+LEFT sub-step -1 Ctrl+RIGHT sub-step +1 WHEEL_UP add volume 2 WHEEL_DOWN add volume -2 0 add volume 2 9 add volume -2 ? script-binding stats/display-page-4-toggle
J'ai gardé les flèches mais bon ça fait un sacré ménage mine de rien.
On peut toutes les retrouver avec ?</kbd>.
Voilà, ça aussi, c'est fait ✔️.
QuteBrowser
Le gros morceau.
Le navigateur web déborde de raccourcis dans tous les sens.
- En plus ma config commence à être assez vieille et est éparpillée un peu partout*.
On en trouve dans *~/.config/qutebrowser/autoconfig.yml* mais aussi dans *~/.config/qutebrowser/keys.conf* et enfin dans *~/.config/qutebrowser/config.py* .
Il est temps de faire un gros nettoyage !
Je dégage le *keys.conf* parceque de toute façon c'est redondant.
Le *autoconfig.yml* contient la conf dynamique faite directement depuis le navigateur.
Je le garde mais je n'y définie rien de plus et j'enlève les deux trois trucs que j'avais dedans.
Je fais tout dans le *config.py*.
Et là va falloir trancher dans le lard aussi !
Comme **mpv**, on peut lui dégager tous les raccourcis par défaut et ensuite définir uniquement les nôtres.
<summary>extrait de ~/.config/qutebrowser/config.py
c.bindings.default = {}
config.bind('o', 'scroll up')
config.bind('e', 'scroll down')
#config.bind('s', 'scroll left')
#config.bind('n', 'scroll right')
config.bind('f','hint')
config.bind('Fk', 'hint all delete')
config.bind('FK', 'hint div delete')
config.bind('Fm', 'hint links spawn --detach mpv --script-opts=ytdl_hook-try_ytdl_first=yes {hint-url}')
config.bind('FM', 'hint links spawn --detach umpv --script-opts=ytdl_hook-try_ytdl_first=yes {hint-url}')
config.bind('Ft', 'hint links spawn --detach totv {hint-url}')
config.bind('FT', 'hint links spawn --detach totv {hint-url} append')
config.bind('Fy', 'hint links yank-primary')
config.bind('gk', 'hint all delete')
config.bind('gK', 'hint div delete')
config.bind('gm', 'hint links spawn --detach mpv --script-opts=ytdl_hook-try_ytdl_first=yes {hint-url}')
config.bind('gM', 'hint links spawn --detach umpv --script-opts=ytdl_hook-try_ytdl_first=yes {hint-url}')
config.bind('gt', 'hint links spawn --detach totv {hint-url}')
config.bind('gT', 'hint links spawn --detach totv {hint-url} append')
config.bind('gy', 'hint links yank-primary')
config.bind('P', 'cmd-set-text -s :open {url:pretty}')
config.bind('W', 'cmd-set-text -s :open -t {url:pretty}')
config.bind('m', 'spawn --detach mpv --script-opts=ytdl_hook-try_ytdl_first=yes {url}')
config.bind('p', 'cmd-set-text -s :open')
config.bind('w', 'cmd-set-text -s :open -t')
config.bind('yy', 'yank -s pretty-url')
config.bind('j', 'config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload')
config.bind('/', 'cmd-set-text /')
config.bind(':', 'cmd-set-text :')
config.bind('r', 'reload')
config.bind('','back')
config.bind('','forward')
config.bind('','clear-keychain ;; search ;; fullscreen --leave')
config.bind('u','undo')
config.bind('n','search-next')
config.bind('N','search-prev')
config.bind('i','mode-enter insert')
config.bind('pp','open -- {clipboard}')
config.bind('-','zoom-out')
config.bind('+','zoom-in')
config.bind('gf','view-source')
config.bind('ZZ','quit --save')
config.bind('','completion-item-focus --history prev',mode='command')
config.bind('','completion-item-focus --history next',mode='command')
config.bind('','completion-item-focus next',mode='command')
config.bind('','command-accept',mode='command')
config.bind('','mode-leave',mode='command')
config.bind('','hint-follow',mode='hint')
config.bind('','mode-leave',mode='hint')
config.bind('','edit-text',mode='insert')
config.bind('','mode-leave',mode='insert')
config.bind('','fake-key ',mode='insert')
config.bind('','mode-leave',mode='passthrough')
config.bind('','prompt-accept',mode='prompt')
config.bind('','prompt-item-focus next',mode='prompt')
config.bind('','prompt-item-focus prev',mode='prompt')
config.bind('','prompt-item-focus next',mode='prompt')
config.bind('','mode-leave',mode='prompt')
config.bind('','prompt-accept',mode='yesno')
config.bind('y','prompt-accept yes',mode='yesno')
config.bind('n','prompt-accept no',mode='yesno')
config.bind('Y','prompt-accept --save yes',mode='yesno')
config.bind('N','prompt-accept --save no',mode='yesno')
config.bind('','mode-leave',mode='yesno')
Bon c'est pas mal de boulot mais c'est à faire une seule fois.
- Il y a de fortes chances que je me rende compte à l'usage qu'il me manque certains raccourcis*.
Bon et pour tenter de tenir au max de tout faire à la main gauche (pourvu qu'elle tienne bon), je suis revenu sur le c.hints.mode = 'letter' et j'ai du coup aussi mis c.hints.chars = 'qcopwasenfzxvb' pour pouvoir naviguer intégralement de la main gauche.
À voir si à l'usage j'arrive à m'y faire.
J'ai toujours utilisé le *c.hints.mode = 'number'* du coup ça va pas mal me chambouler.
C'est un mode qui me semble plus logique et rapide mais qui nécessite deux mains…
Croisons les doigts 🤞
Ces modifications sont récentes et vont nécessiter un peu de temps pour choper de nouvelles habitudes.
À voir si ça va se maintenir ou si je reviendrai en arrière.
Liens
------------------------------------
------------------------------------
[04/09/2025] - #ux #sway #mpv #qutebrowser
------------------------------------