Guarda una lista como esta como ~/Library/LaunchAgents/test.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>test</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<string>while sleep 5; do
if pgrep -x Preview; then
pgrep -x TextEdit || open -jga TextEdit
else
pgrep -x TextEdit && osascript -e 'quit app "TextEdit"'
fi
done</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Luego, cargue el plist con launchctl load ~/Library/LaunchAgents/test.plist
o cierre la sesión y vuelva a iniciarla.
open -jg
debe abrir una aplicación oculta y sin abrir ventanas. Para algunas aplicaciones basadas en documentos como TextEdit, abre una nueva ventana visible si la aplicación está abierta pero no tiene ventanas visibles.
pgrep
y la opción -j
para open
se agregaron en 10.8. La opción -j
solo se muestra en el mensaje de ayuda y no en la página de manual.