Guarda una lista como esta como ~/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>
Luego ejecuta launchctl load ~/Library/LaunchAgents/some.label.plist
.
~/Library/Preferences/com.apple.iTunes.plist
parece modificarse cada vez que se abre iTunes. El programa se ejecutará cada vez que se modifique ~/Library/Preferences/com.apple.iTunes.plist
(y hay al menos 10 segundos desde la última ejecución), pero probablemente sea mejor que ejecutar el programa, por ejemplo, cada 5 segundos.
Para la mayoría de las aplicaciones, open -jg
abre la aplicación oculta y sin tener que ponerla al frente. Para algunas aplicaciones como TextEdit, abre una nueva ventana visible si la aplicación está abierta pero no tiene ventanas, pero puedes usar pgrep -x TextEdit||open -jga TextEdit
o lsappinfo launch nofront=true launchandhide=true /Applications/TextEdit.app
en su lugar.