Como sugerido por slhck, criei um AppleScript autônomo que realiza essa tarefa e, em seguida, salvei-o no utilitário de edição do AppleScript como um .app. Faz exatamente o que eu quero.
Abaixo, encontre o script. Ele verifica se o SafariForWebKitDevelopment está em execução, dizendo ao Terminal para executar um script para iniciá-lo, se necessário. (Isso cria automaticamente uma nova janela e eu defino minhas configurações padrão da nova janela do Terminal para fechar uma janela quando o processo terminar.) Em seguida, ele define esse processo como a janela superior.
Eu fui em uma busca desesperada tentando descobrir como lidar com o caso do Safari regular rodando ao mesmo tempo que o SafariForWebKitDevelopment, e finalmente cheguei à solução que você vê no código, trabalhando com processos ao invés de aplicativos. / p>
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