In einem Skript versuche ich, das Terminal.app-Fenster mit einem bestimmten tty-Gerät zu finden und dieses Fenster nach oben zu heben. Folgendes habe ich bisher in 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
Wo ich stecken bleibe, ist der Teil "Fenster öffnen".
Hier sind einige Dinge, die nicht ganz das sind, was ich will:
set frontmost of theWin to true
- Dadurch wird das Fenster an die Vorderseite der Gruppe der Terminal.app-Fenster verschoben, aber nicht über andere Fenster angehoben.
tell application "Terminal" to activate
- Dies bringt jedes Terminalfenster in einem großen Stapel nach vorne. Ich will nur das eine Fenster.
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
Dies macht es fast, aber es bewirkt, dass das Terminalfenster auf die Position Nr. 2 angehoben wird, die sich noch unter dem aktiven Fenster befindet (wenn die aktive App etwas anderes als Terminal.app ist).
click theSysWin at {10,50}
- scheint nichts zu tun.
click first static text of theSysWin
- scheint nichts zu tun.
Gibt es eine Möglichkeit, dies zu tun? Es muss nicht in Applescript sein.
BEARBEITEN Ich habe diese Webseite ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ ) gefunden, auf der ein Obj-C / Cocoa-Aufruf zitiert wurde:
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Ich bin weder mit ObjC noch mit Cocoa vertraut, und dies wird (letztendlich) von einem Shell-Skript aufgerufen, daher bin ich mir nicht sicher, wohin ich von dort aus gehen soll.
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Ich bin weder mit objc noch mit cocoa vertraut genug um zu wissen, wohin man von dort aus gehen soll.