Se sai come associare un AppleScript a un gesto di scelta rapida da tastiera / trackpad, questa è la risposta per te.
Lo script è pensato per essere universale. Usa i termini più generalizzati per includere quanti più scenari possibili. Ho provato su Finder, Script Editor e Firefox. Nessun errore.
Tuttavia, ha avvertimenti:
-
Lo script funziona solo quando c'è una sola istanza di un'app. (A proposito, dice ancora "diverse istanze" nel testo di OP). È possibile lavorare su più istanze, ma è una lotta per un altro giorno.
-
Questo script scorre verso il basso l'elenco delle finestre nel menu Window
. In sostanza, fa clic sull'elemento proprio sotto quello con un segno di spunta ("✓"). Se l'elemento con "✓" è l'ultimo elemento, lo script farà invece clic sul primo elemento sotto l'ultima linea di separazione. Una sceneggiatura che va indietro nella direzione opposta può essere ottenuta modificando questo script. Tuttavia, non vedo come i due possano essere combinati in un singolo script.
-
L'istruzione try
che produce un errorMessage
è il modo più efficiente in termini di CPU che conosca per produrre l'indice di separator
. Se conosci un modo migliore, ti prego di illuminarmi.
Lo 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