스크립트에서 특정 tty 장치가 포함 된 Terminal.app 창을 찾고 해당 창을 맨 위로 올리려고합니다. 지금까지 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
내가 막히고있는 곳은 "창 높이"부분입니다.
내가 원하지 않는 것들이 있습니다.
set frontmost of theWin to true
-창을 Terminal.app 창 그룹의 맨 앞으로 가져 오지만 다른 창 위로 올리지 않습니다.
tell application "Terminal" to activate
이것은 모든 터미널 창을 큰 스택으로 전면으로 가져옵니다. 나는 단지 하나의 창을 원한다.
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
이것은 거의 가능하지만 터미널 창을 여전히 활성 창 아래에서 # 2 위치로 올리는 것입니다 (활성 응용 프로그램이 Terminal.app 이외의 다른 경우).
click theSysWin at {10,50}
-아무것도하지 않는 것 같습니다.
click first static text of theSysWin
-아무것도하지 않는 것 같습니다.
이것을 할 수있는 방법이 있습니까? Applescript에있을 필요는 없습니다.
편집 Obj-C / Cocoa 호출을 인용하는 이 웹 페이지 ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ )를 찾았습니다 .
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
나는 ObjC 또는 Cocoa에 익숙하지 않으며, 이것이 쉘 스크립트에서 (궁극적으로) 호출되기 때문에 어디로 갈지 확실하지 않습니다.
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
또는 cocoa에 익숙하지 않습니다. 그래도 어디로 가야하는지 알고