osx: inicia um programa quando outro programa é aberto

1

Eu gostaria de um método para iniciar um programa quando outro programa é iniciado. Especificamente, gostaria de abrir um documento do MS Word e abrir meu gerenciador de citações simultaneamente (o EndNote suporta essa função dentro das preferências do MS Word, mas recentemente troquei os gerentes de citações).

Gostaria de poder abrir qualquer documento existente do Word no meu disco e acionar o segundo programa. A mesma pergunta foi respondida recentemente para o windows 7 meio ambiente.

    
por metasequoia 19.11.2012 / 23:35

2 respostas

2

Tente salvar uma lista de propriedades como ~/Libary/LaunchAgents/test.plist e carregue-a com launchctl load ~/Libary/LaunchAgents/test.plist .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>test</string>
    <key>ProgramArguments</key>
    <array>
    <string>osascript</string>
    <string>-e</string>
    <string>tell application "System Events"
    set p to name of processes
    if p contains "TextEdit" and p does not contain "Mail"
    do shell script "open -gja Mail"
    end
    end</string>
    </array>
    <key>StartInterval</key>
    <integer>10</integer>
</dict>
</plist>

open -j ( --hide ) foi adicionado em 10.8. open -jg às vezes abre uma nova janela visível se um aplicativo estiver em execução, mas não tiver janelas abertas.

Se o StartInterval for de 9 segundos ou menos, o programa apenas será acelerado.

com.apple.launchd.peruser.501[128]: (test) Throttling respawn: Will start in 7 seconds
    
por 20.11.2012 / 07:20
0

Obrigado pelo código. Eu consegui estender um pouco para também fechar o processo iniciado se o processo original assistido não estiver mais sendo executado. Aqui está o meu código:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>TextEditWatcher</string>
    <key>ProgramArguments</key>
    <array>
    <string>osascript</string>
    <string>-e</string>
    <string>tell application "System Events"
        set p to name of processes
        if p contains "TextEdit" and p does not contain "Mail" then
            do shell script "open -gja Mail"
        end if
        if p does not contain "TextEdit" and p contains "Mail" then
            tell application "Mail" to quit
        end if
        end tell</string>
    </array>
    <key>StartInterval</key>
    <integer>30</integer>
</dict>
</plist>

No meu sistema (10.9.4), um StartInterval de 10 já foi demais e como o tempo não é crucial no meu caso, eu escolhi 30 segundos. Mas 15 ou 20 devem estar bem também. Instalação e testes como mencionado na resposta de Lri.

    
por 21.08.2014 / 00:02