W skrypcie próbuję znaleźć okno Terminal.app zawierające określone urządzenie tty i podnieść je do góry. Oto, co do tej pory mam w 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
Utknąłem w części „podnoszenie okna”.
Oto kilka rzeczy, które nie są dokładnie tym, czego chcę:
set frontmost of theWin to true
- przenosi to okno na przód grupy okien Terminal.app, ale nie podnosi go ponad inne okna.
tell application "Terminal" to activate
- powoduje to, że każde okno terminala znajduje się na pierwszym planie w dużym stosie. Chcę tylko jedno okno.
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
To prawie robi, ale podnosi okno terminala do pozycji # 2, wciąż pod aktywnym oknem (jeśli aktywna aplikacja jest inna niż Terminal.app.)
click theSysWin at {10,50}
- wydaje się, że nic nie robi.
click first static text of theSysWin
- wydaje się, że nic nie robi.
Czy jest na to sposób? Nie musi być w Applescript.
EDYTUJ Znalazłem tę stronę internetową ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ ) cytując połączenie Obj-C / Cocoa:
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Nie znam ObjC ani Cocoa, a to (ostatecznie) jest wywoływane ze skryptu powłoki, więc nie jestem pewien, dokąd się udać.
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Nie znam się zbyt dobrze na objc ani kakao żeby wiedzieć, dokąd się udać.