En un script, estoy intentando encontrar la ventana Terminal.app que contiene un dispositivo tty específico y elevar esa ventana a la parte superior. Esto es lo que tengo en Applescript hasta ahora:
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
Donde me estoy quedando atascado es la parte "abrir la ventana".
Aquí hay algunas cosas que no son exactamente lo que quiero:
set frontmost of theWin to true
: esto lleva la ventana al frente del grupo de ventanas de Terminal.app pero no la levanta por encima de ninguna otra ventana.
tell application "Terminal" to activate
- esto trae todas las ventanas de Terminal al frente en una gran pila. Solo quiero una ventana.
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
Esto casi lo hace, pero lo que hace es elevar la ventana del terminal a la posición # 2, aún debajo de la ventana activa (si la aplicación activa es algo diferente a Terminal.app.)
click theSysWin at {10,50}
- no parece hacer nada.
click first static text of theSysWin
- no parece hacer nada.
¿Hay una manera de hacer esto? No tiene que estar en Applescript.
EDITAR Encontré esta página web ( enlace ) citando una llamada Obj-C / Cocoa:
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
No estoy familiarizado con ObjC o Cocoa, y esto (en última instancia) se está invocando desde un script de shell, así que no estoy seguro de a dónde ir desde allí.