Em um script, estou tentando encontrar a janela Terminal.app que contém um dispositivo tty específico e elevar essa janela para o topo. Aqui está o que eu tenho no Applescript até agora:
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
Onde estou ficando preso é a parte "levantando a janela".
Aqui estão algumas coisas que não são exatamente o que eu quero:
set frontmost of theWin to true
- isso leva a janela para a frente do grupo de janelas Terminal.app, mas não a eleva acima de outras janelas.
tell application "Terminal" to activate
- isso traz todas as janelas do Terminal para a frente em uma grande pilha. Eu só quero a uma janela.
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
Isso quase faz, mas o que faz é elevar a janela do terminal para a posição # 2, ainda abaixo da janela ativa (se o aplicativo ativo for algo diferente de Terminal.app.)
click theSysWin at {10,50}
- parece não fazer nada.
click first static text of theSysWin
- parece não fazer nada.
Existe uma maneira de fazer isso? Não precisa estar no Applescript.
EDIT Encontrei esta página da web ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ ) citando uma chamada Obj-C / Cocoa:
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Eu não estou familiarizado com ObjC ou Cocoa, e isso é (em última instância) sendo invocado a partir de um script de shell, portanto, não tenho certeza para onde ir a partir daí.
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
não estou familiarizado o suficiente com objc ou cacau para saber para onde ir a partir daí.