In uno script sto cercando di trovare la finestra di Terminal.app che contiene uno specifico dispositivo tty e di sollevare quella finestra in alto. Ecco cosa ho finora su Applescript:
tell application "System Events"
set foundWin to false
if (name of processes) contains "Terminal" then
tell application "Terminal"
set theTabs to first tab of every window where tty is "$(tty)"
repeat with theTab in theTabs
if class of theTab is tab then
set theWin to (first window whose tabs contains theTab)
set selected tab of theWin to theTab
set foundWin to true
end if
end repeat
end tell
end if
if foundWin then
--RAISE THE WINDOW?!
end if
end tell
Dove mi sto bloccando è la parte "alzare la finestra".
Ecco alcune cose che non sono esattamente ciò che voglio:
set frontmost of theWin to true
- porta la finestra in primo piano rispetto al gruppo di finestre di Terminal.app ma non la solleva sopra nessun'altra finestra.
tell application "Terminal" to activate
- questo porta in primo piano tutte le finestre del Terminale in una grande pila. Voglio solo l'unica finestra.
tell application "System Events"
set theSysWin to first window of process "Terminal" whose name is (name of theWin)
perform action "AXRaise" of theSysWin
end tell
Questo succede quasi, ma quello che fa è alzare la finestra del terminale sulla posizione # 2, ancora sotto la finestra attiva (se l'app attiva è qualcosa di diverso da Terminal.app.)
click theSysWin at {10,50}
- sembra non fare nulla.
click first static text of theSysWin
- sembra non fare nulla.
C'è un modo per farlo? Non deve essere in Applescript.
EDIT Ho trovato questa pagina web ( link ) citando una chiamata Obj-C / Cocoa:
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Non ho familiarità con ObjC o Cocoa, e questo è (in ultima analisi) invocato da uno script di shell, quindi non sono sicuro di dove andare da lì.