Como se diz no título, "Não é possível sair do aplicativo lançado pelo launchd" - ou, mais precisamente, posso saia, mas depois reinicia automaticamente.
fundo : Eu prefiro usar o BusyCal, não o iCal, mas existem algumas coisas que precisam ser feitas pelo iCal antes que o BusyCal possa obter os resultados. Imaginei criar dois scripts launchd: um para iniciar o iCal todos os dias às 5 da manhã e outro para sair alguns minutos depois.
Aqui está o plist para lançar (em ~/Library/LaunchAgents/com.dori.iCalLaunch.plist
):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>com.dori.iCalLaunch</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Applications/iCal.app/Contents/MacOS/iCal</string>
</array>
<key>ServiceDescription</key>
<string>iCal Launcher</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
</dict>
</dict>
</plist>
Meu entendimento era que eu não precisava do KeepAlive
e OnDemand
chaves, mas eu as coloco de qualquer maneira para tentar parar o relançamento.
Aqui está o problema para sair (em ~/Library/LaunchAgents/com.dori.iCalQuit.plist
):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.dori.iCalQuit</string>
<key>Program</key>
<string>/usr/bin/osascript</string>
<key>ProgramArguments</key>
<array>
<string>osascript</string>
<string>-e</string>
<string>tell application "iCal" to quit</string>
</array>
<key>ServiceDescription</key>
<string>iCal Quitter</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
Com base nos meus arquivos de log, ambos funcionam bem - mas depois que o Quit é executado, o iCal é reiniciado.
Alguma idéia de coisas para tentar, ou coisas que possam estar causando isso?