Alt-Tab, mémoire spatiale et toogle.sh
J’utilise principalement 3 applications : Terminator (terminal), Firefox (navigateur), Sublime Text (éditeur). J’ai besoin de basculer extrêmement rapidement et régulièrement entre ces trois outils. Le problème (ou le besoin) est identifié, il me faut une solution.
Je n’ai jamais réellement travaillé avec Alt+Tab, je connais évidemment mais j’utilisais très peu. Je mets ça sur le compte de 20 ans de Windows qui nivelle par le bas… on clique. Maintenant que je dois vraiment m’y mettre, je « découvre ». Aviez-vous déjà remarqué qu’on ne bascule pas de la même manière entre les onglets sur Firefox (Ctrl+Tab) et les applications (Alt+Tab) ?
Lorsqu’on fait Ctrl+Tab sur la grande majorité des applications, on passe à l’onglet suivant. Lorsqu’on fait Alt+Tab, on passe à la dernière application utilisée. Le Ctrl+Tab suit une logique ordonnée de gauche à droite, le Alt+Tab suit une logique temporelle qu’on appelle MRU (Most Recently Used, Plus récemment utilisé). Avec Alt+Tab on remonte la liste des applications utilisées chronologiquement. A noter qu’on peut employer ce fonctionnement sur Firefox.
Grâce à un fil Hacker News, je suis remonté à Solving the Alt-Tab Problem et Solving the real Alt-Tab problem (DeepL pour traduire) qu’il vous faut lire : 1/ Mémoire spatiale 2/ Le fonctionnement de Alt+Tab est différent entre Mac et Windows 3/ Pourquoi avoir deux fonctionnement distincts entre Ctrl+Tab et Alt+Tab (l’habitude…) ? 4/ Peut-on faire mieux que MRU ?
C’est la mémoire spatiale qui m’a le plus passionné. En utilisant activement Alt+Tab, on ne regarde même plus l’application vers laquelle on va basculer. On le sait. Le basculement avec Alt+Tab va éviter de « casser » sa concentration. Je ressens cette perte de concentration lorsque je suis concentré sur une tâche, je souhaite basculer sur une autre application, je regarde la barre des tâches puis je clique sur l’application désirée. Je ne suis alors plus dans le fil de mes pensées, dans mon workflow, concentré sur la tâche que j’étais en train d’effectuer, je viens de m’arrêter pour chercher mon chemin. Avec Alt+Tab je reste dans mes pensées, concentré sur ce que je fais.
Cette mémoire spatiale a des limites, 2-3 applications on ne perd pas le fil de ses pensées en basculant entre elles. Quand il y en a 10, on est obligé de se concentrer pour retrouver l’application désirée, on perd le fil. Mais puisqu’il s’agit de mémoire spatiale, de cheminement, posons des jalons (ce qui sert de point de repère, d’étape dans un raisonnement, dans un processus). Quand bien même on a 10 applications ouvertes, on en utilise seulement 2-3 sur la tâche courante, parfois il est nécessaire d’en utiliser une en plus. Au final on a besoin de réordonner rapidement notre mémoire spatiale, on pose donc un jalon pour s’y retrouver. Alt+Tab permet toujours de basculer entre les applications mais on configure un raccourci supplémentaire pour basculer systématiquement sur une application précise.
Il reste à configurer « en dur » les 3 applications qu’on utilise le plus afin de basculer entre les applications et réordonner notre mémoire spatiale sans perdre le fil de nos pensées. Attention les raccourcis clavier pour appeler ces applications doivent être soigneusement choisis/testés car si vous « cherchez » le raccourci ou que vous n’arrivez pas à le taper, vous perdez le fil. A l’heure actuelle j’ai configuré toogle.sh avec Terminator (Ctrl+Espace), Firefox (²) et je réfléchis encore pour Sublime Text.
#!/bin/bash # # apt install xdotool wmctrl # wmctrl -lpx # cat /proc/$(pgrep firefox)/status # /home/cascador/scripts/toggle.sh Navigator.Firefox firefox # /home/cascador/scripts/toggle.sh terminator.Terminator terminator # /home/cascador/scripts/toggle.sh sublime_text.Sublime_text /opt/sublime_text/sublime_text # focused=$(xdotool getactivewindow getwindowpid) pid_app=$(pgrep -u "$(whoami)" -x "${2##*/}" | head -n 1) if [ -z "$pid_app" ]; then "$2"; else if [[ "$focused" == "$pid_app" ]]; then xdotool getactivewindow windowminimize; else wmctrl -x -R "$1"; fi fi exit 0
Je suis parti de cet article, j’ai fait un grand ménage avant de me rendre compte que ça fonctionnait mal donc j’ai tout revu. Ça fait globalement la même chose qu’avec Guake (tiling terminal), ça affiche/cache l’application en appuyant sur un raccourci. Si on le configure avec Firefox par exemple, voici le fonctionnement : 1/ Si Firefox n’est pas lancé et qu’on appelle le script, il lance Firefox 2/ Si Firefox est lancé et au premier plan et qu’on appelle le script, il réduit Firefox basculant le focus sur l’application précédente 3/ Si Firefox est lancé mais pas au premier plan et qu’on appelle le script, il affiche Firefox au premier plan
Le script ne doit pas être modifié. C’est dans Paramètres, Clavier, Onglet Raccourcis d’applications (je suis sur Xubuntu) qu’on ajoute les commandes.
J’effectue également les modifications suivantes :
- Peaufinage des fenêtres, Onglet Navigation : Cocher Naviguer parmi les fenêtres dans une liste, décocher Dessiner un cadre autour de la fenêtre mise en évidence lors de la navigation, voir Naviguer parmi les fenêtres de tous les espaces de travail
- Gestionnaire de fenêtres, Clavier : Espace de travail suivant (F1). Je n’utilise que deux espaces de travail aussi appelés workspaces. Une bonne pratique est de segmenter les espaces de travail par activité. Par exemple un espace de travail pour communiquer : Thunderbird, Signal, client IRC etc. Si on décoche Naviguer parmi les fenêtres de tous les espaces de travail, on switche ensuite par espace de travail puis par application (plus facile à mémoriser)
- Tableau de bord, Onglet Éléments, Bouton des fenêtres : Décocher Afficher le nom des boutons (cela permet notamment de se « forcer » à n’utiliser que le clavier pour se déplacer entre les applications)
Déjà 20 avis pertinents dans Alt-Tab, mémoire spatiale et toogle.sh
Les commentaires sont fermés.
J’ai utilisé Windows des années, le Alt+TAB est un classique que la majorité des power users Windows connait.
Le CTRL+TAB est plus récent, genre Firefox et son « invention » des onglets pour naviguer, voire un peu avant.
Je crois que la différence entre « utiliser Alt+TAB » ou ne pas l’utiliser vient de « utiliser beaucoup la souris ou utiliser beaucoup les raccourcis clavier ».
J’utilise souvent (tout le tmeps ?) le clavier, beaucoup plus que la souris (CTRL+FR, CTRL+TAB, CTR+C/V/X), bref…
Bientôt un article « Allumer son ordinateur » ?
Je connais le Alt+Tab depuis une plombe mais je n’utilisais pas => Utiliser beaucoup la souris (saimal !).
Tcho !
Ce qu’il ne faut pas lire…
Ça fera plaisir aux utilisateurs d’Opéra d’apprendre que c’est Firefox qui a inventé les onglets !
Comment ça, je saute des étapes ?
Next step !
Tcho !
J’ai fait quelques modifications mineures dans le script :
#!/bin/bash
set -e
set -eo pipefail
set -o nounset
#
# wmctrl -lpx
# cat /proc/$(pgrep firefox)/status
# toggle.sh Navigator.Firefox firefox
# toggle.sh tilix.Tilix tilix
#
pid_app=$(pgrep -u « $USER » -x « ${2##*/} » | head -n 1)
if [ -z « $pid_app » ]; then
« $2″&
else
focused=$(xdotool getactivewindow getwindowpid)
if [[ « $focused » == « $pid_app » ]]; then
xdotool getactivewindow windowminimize;
else
wmctrl -x -R « $1 »;
fi
fi
# vim:set ai et sts=2 sw=2 tw=0:
Le néophyte que je suis ne comprend pas à quoi correspond ${2##*/}.
Quelqu’un pourrait m’expliquer brièvement ?
Il s’agit de Parameter Expansion de Bash, je t’invite à lire cet article (Substring removal, second exemple) : https://www.bloglibre.net/2017/03/03/memo-parameter-expansion/
$2 correspond au second paramètre d’une ligne de commandes
Voici une ligne de commandes : /home/cascador/scripts/toggle.sh sublime_text.Sublime_text /opt/sublime_text/sublime_text
$1 c’est sublime_text.Sublime_text, $2 c’est /opt/sublime_text/sublime_text, ${2##*/} c’est sublime_text
Tcho !
Donc si je comprends bien tu utilises ? Si tu rencontres des problèmes, tu pourras me les remonter stp ? Peux-tu pour les lecteurs expliquer qu’est-ce qu’apportent tes ajouts/modifications ? Ça permettra à chacun de progresser (et comprendre) sur les scripts bash.
Merci, Tcho !
Un appercu de ce que l’on peut faire avec => https://youtu.be/AZNt6Wa_F7c
Oui je vais y passer très probablement (ou directement faire le saut vers Sway), j’aime bien avoir mon petit cheminement
Tcho !
J’ai pas compris du tout, c’est une fonctionnalité qui existe depuis au moins W98 (le premier que j’ai utilisé).
C’est quoi le rapport avec Windows et cette critique complètement gratuite et qui n’apporte rien ??
Pourquoi ton commentaire apporte quelque chose lui ???
Tcho !
Je sais pas s’il apporte quelque-chose, mais j’en ai marre des critiques gratuites sur Windows ^^
Désolé pour le manque de construction et « d’intérêt » de mon commentaire, il fallait que ça sorte à ce moment là ^^
(pour moi, si Windows ne plait pas, autant ne pas l’utiliser (ok, c’est compliqué en milieu pro))
Sinon, pour revenir sur l’article, je ne suis pas encore prêt à franchir le pas de changer la philo derrière le alt-tab. Pourquoi ? Parce que j’ai peur de devoir me rajouter une question supplémentaire: « est-ce que j’ai reconfiguré le alt-tab sur ce PC ? »
Il y a plusieurs choses :
– Tu n’as pas cité la totalité de ma phrase : « Je mets ça sur le compte de 20 ans de Windows qui nivelle par le bas… on clique ». Ma phrase ne visait donc pas Windows tout entier mais surtout la place qu’occupe le clicodrome sur ce système d’exploitation. Certes ce n’est pas développé mais de là à dire que c’est une critique gratuite, je ne suis pas d’accord. On est beaucoup à le penser et il faudra peu de choses pour le prouver
– C’est un article de blog, on peut dire ce qu’on pense sans rien apporter, ce que je veux dire c’est que tout (article, phrase…) ne doit pas être utile. Si je veux parler du beau temps, c’est pas utile mais je peux
– Tu verras, tu vas venir très rapidement à la personnalisation car elle fait gagner un temps considérable : alias, dotfiles, raccourcis clavier… Après il faut en avoir besoin mais si tu bosses dans le domaine informatique, je te donne moins de 5 ans pour t’y mettre lol
Tcho !
Merci pour l’explication, j’y vois plus clair
Du coup, il me vient une autre interrogation : d’où vient/comment trouves-tu le ‘nom’ du logiciel qui sera affecté ?
D’où viennent :
Navigator.Firefox firefox
terminator.Terminator terminator
sublime_text.Sublime_text /opt/sublime_text/sublime_text
C’est plutôt la forme que je ne comprends pas…
Tsss tsss tsss ! Il faut lire attentivement
Dans le script :
# wmctrl -lpx
# cat /proc/$(pgrep firefox)/status
Tu vas retrouver Navigator.Firefox en faisant wmctrl -lpx (avec firefox ouvert sur ton poste). Tu retrouves firefox en faisant cat /proc/$(pgrep firefox)/status, tu as le nom du programme sur la première ligne.
sublime_text est le cas compliqué et particulier. Si on fait sublime_text dans un terminal, il ne se lancera pas. Il faut faire /opt/sublime_text/sublime_text. Sauf que là on est bloqué dans notre script puisque le nom du programme est sublime_text (pas /opt/sublime_text/sublime_text) donc => ${2##*/} pour ne récupérer que sublime_text.
Tcho !
Justement, je crois que c’est Sublime qui m’a perdu… mais ok.
Merci beaucoup.
Petit à petit j’apprends…
Et tu comprends
Tcho !