Salva un plist come questo ~/Library/LaunchAgents/some.label.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>some.label</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<string>if pgrep -x iTunes;then open -jga Some\ Application;open -jga Another\ Application;fi</string>
</array>
<key>WatchPaths</key>
<string>~/Library/Preferences/com.apple.iTunes.plist</string>
</dict>
</plist>
Esegui launchctl load ~/Library/LaunchAgents/some.label.plist
.
~/Library/Preferences/com.apple.iTunes.plist
sembra essere modificato ogni volta che viene aperto iTunes. Il programma verrà eseguito ogni volta che ~/Library/Preferences/com.apple.iTunes.plist
viene modificato (e ci sono almeno 10 secondi dall'ultima esecuzione), ma probabilmente è meglio che eseguire il programma per esempio ogni 5 secondi.
Per la maggior parte delle applicazioni, open -jg
apre l'applicazione nascosta e senza renderla in primo piano. Per alcune applicazioni come TextEdit, apre una nuova finestra visibile se l'applicazione è aperta ma non ha finestre, ma puoi usare pgrep -x TextEdit||open -jga TextEdit
o lsappinfo launch nofront=true launchandhide=true /Applications/TextEdit.app
.