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.

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.

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 !

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.

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.

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

------------------------------------

🏠 Retour à la home

------------------------------------

[04/09/2025] - #ux #sway #mpv #qutebrowser

------------------------------------

[>> Suivant >>] ⏭ Weapons
[<< Précédent <<] ⏮ Hot Rod