Mac OS X 10.8 Mountain Lionで実行しているので、ちょっとした問題があります。
スクリプトがあります(WebKitのrun-safari
)Safariを開発モードで起動します(いくつかの環境変数を設定してからArch -x86_64 /Applications/Safari/Contents/MacOS/SafariForWebKitDevelopment
)。
このスクリプトを次の方法で改善したいと思います。
Automating、AppleScript、bashスクリプトを組み合わせることで、これらの3つのうち2つを取得できましたが、3つすべてではありません。誰かがここに何かポインタを持っていますか?
Slhckが提案したように、このタスクを実行するスタンドアロンのAppleScriptを作成し、それをAppleScriptエディターユーティリティに.appとして保存しました。それはまさに私が望むことをします。
以下で、スクリプトを見つけます。 SafariForWebKitDevelopmentが実行されているかどうかを確認し、必要に応じてスクリプトを実行して起動するようターミナルに指示します。 (これにより、新しいウィンドウが自動的に作成されます。デフォルトのターミナルの新しいウィンドウ設定を設定して、プロセスの終了時にウィンドウを閉じます。)次に、そのプロセスをトップウィンドウに設定します。
私は、SafariForWebKitDevelopmentと同時に実行されている通常のSafariのケースを処理する方法を見つけようと大胆に追跡し、最終的に、アプリケーションではなくプロセスを操作して、コードに表示されるソリューションに到達しました。
tell application "System Events"
-- Only launch development Safari if it isn't already running
if not (exists process "SafariForWebKitDevelopment") then
tell application "Terminal"
do script "run-safari; exit"
activate
end tell
end if
-- Max number of iterations of checking for process before
-- we give up and exit the script (guards against errors in
-- launching SafariForWebKitDevelopment, where the process
-- would never exist, and this would be an infinite loop)
set num_checks to 100
-- Wait until dev Safari has launched
repeat until (exists process "SafariForWebKitDevelopment")
delay 0.1
set num_checks to num_checks - 1
if num_checks < 0 then
return
end if
end repeat
-- Set dev Safari to have focus
-- 'tell application "Safari" to activate' doesn't work because AppleScript
-- has no way of discerning between multiple processes from the same .app
-- bundle, so we can't be sure if we're talking to
-- SafariForWebKitDevelopment, or an already-running normal Safari
set frontmost of (process "SafariForWebKitDevelopment") to true
end tell