Se você sabe como vincular um AppleScript ao atalho de teclado / gesto do trackpad, esta é a resposta para você.
O script deve ser universal. Ele usa os termos mais generalizados para incluir o maior número possível de cenários. Eu testei no Finder, Script Editor e Firefox. Sem erros.
No entanto, tem ressalvas:
O script só funciona quando há apenas uma instância de um aplicativo. (BTW, ele ainda diz "várias instâncias" no texto do OP.) É possível trabalhar várias instâncias nele, mas isso é uma luta por mais um dia.
Este script rola a lista de janelas no Window
menu. Essencialmente, ele clica no item logo abaixo do item com uma marca de seleção ("✓"). Se o item com um "✓" for o último item, o script clicará no primeiro item na última linha separadora. Um script que retrocede na direção inversa pode ser obtido modificando esse script. No entanto, não vejo como os dois podem ser combinados em um único script.
A try
declaração que produz um errorMessage
é a maneira mais eficiente de CPU que conheço para produzir o índice do separator
. Se você conhece uma maneira melhor, por favor, me esclareça.
O 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