Dans un script, j'essaie de trouver la fenêtre de Terminal.app contenant un périphérique tty spécifique et de faire remonter cette fenêtre au sommet. Voici ce que j'ai dans Applescript jusqu'à présent :
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
Là où je suis bloqué, c'est la partie "lever la fenêtre".
Voici des choses qui ne sont pas tout à fait ce que je veux :
set frontmost of theWin to true
-- cela fait apparaître la fenêtre à l'avant du groupe de fenêtres Terminal.app mais ne la place pas au-dessus des autres fenêtres.
tell application "Terminal" to activate
-- cela fait apparaître toutes les fenêtres du terminal dans une grande pile. Je veux juste une seule fenêtre.
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
C'est presque suffisant, mais cela a pour effet d'élever la fenêtre du terminal à la position n° 2, toujours sous la fenêtre active (si l'application active est autre que Terminal.app).
click theSysWin at {10,50}
-- ne semble pas faire quoi que ce soit.
click first static text of theSysWin
-- ne semble pas faire quoi que ce soit.
Y a-t-il un moyen de le faire ? Il n'est pas nécessaire que ce soit en Applescript.
EDIT J'ai trouvé cette page web ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ ) citant un appel Obj-C/Cocoa :
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Je ne suis pas familier avec ObjC ou Cocoa, et cela est (en fin de compte) invoqué à partir d'un shell script, donc pas sûr de savoir où aller à partir de là.