Si sabe cómo vincular un applecript al gesto de atajo de teclado / trackpad, esta es la respuesta para usted.
El guión está destinado a ser universal. Utiliza los términos más generalizados para incluir tantos escenarios como sea posible. He probado en Finder, Script Editor y Firefox. Sin errores.
Sin embargo, tiene advertencias:
El script solo funciona cuando solo hay una instancia de una aplicación. (Por cierto, todavía dice "varias instancias" en el texto de OP.) Es posible trabajar en varias instancias, pero esa es una pelea para otro día.
Este script desplaza hacia abajo la lista de ventanas en el Window
menú. En esencia, hace clic en el elemento justo debajo del que tiene una marca de verificación ("✓"). Si el elemento con un "✓" es el último elemento, la secuencia de comandos hará clic en el primer elemento debajo de la última línea de separación. Se puede obtener una secuencia de comandos que va hacia atrás en la dirección inversa modificando esta secuencia de comandos. Sin embargo, no veo cómo se pueden combinar los dos en un solo script.
La try
declaración que produce un errorMessage
es la forma más eficiente de CPU que sé para producir el índice de separator
. Si conoce una mejor manera, por favor, ilumíneme.
La secuencia de comandos:
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