Si vous savez comment lier un applescript à un raccourci clavier/un geste du pavé tactile, cette solution est faite pour vous.
Le script est censé être universel. Il utilise les termes les plus généraux pour inclure autant de scénarios que possible. J'ai testé sur le Finder, le script Editor, et Firefox. Aucune erreur.
Cependant, il y a des réserves :
-
Le script ne fonctionne que lorsqu'il n'y a qu'une seule instance d'une application. (BTW, il est toujours dit "plusieurs instances" dans le texte de l'OP.) Il est possible de travailler avec plusieurs instances, mais c'est un combat pour un autre jour.
-
Ce script fait défiler la liste des fenêtres en Window
menu. En fait, il clique sur l'élément situé juste en dessous de celui qui est coché (""). Si l'élément avec un "" est le dernier élément, le script cliquera plutôt sur le premier élément sous la dernière ligne de séparation. Un script qui revient en arrière dans le sens inverse peut être obtenu en modifiant ce script. Cependant, je ne vois pas comment les deux peuvent être combinés en un seul script.
-
Le site try
qui produit un errorMessage
est le moyen le plus efficace pour le CPU que je connaisse pour produire l'index de l'élément separator
. Si vous connaissez un meilleur moyen, veuillez m'éclairer.
Le script :
tell application "System Events" to tell (first application process whose frontmost is true) to tell menu bar 1 to tell menu "Window"
set cellingSeperator to last menu item whose value of attribute "AXEnabled" is false
set checkedItem to first menu item whose value of attribute "AXMenuItemMarkChar" is ""
try
set intentionalError to cellingSeperator as Unicode text
on error errorMessage
set firstItemIndex to (characters ((offset of "«class menI» " in errorMessage) + 13) through ((offset of " of" in errorMessage) - 1) of errorMessage as string as integer) + 1
end try
repeat with iterator from firstItemIndex to number of menu items
if value of attribute "AXFrame" of menu item iterator is equal to value of attribute "AXFrame" of checkedItem then
set clickItemIndex to iterator + 1
exit repeat
end if
end repeat
if clickItemIndex is greater than number of menu items then set clickItemIndex to firstItemIndex
tell menu item clickItemIndex to perform action "AXPress"
end tell