Se stai utilizzando uno script di shell per aprire le applicazioni, prova qualcosa del tipo:
osascript -e 'launch app "ScreenRecycler"'
pgrep -qx Alfred||open -jga Alfred
sleep 10
pgrep -qx Mail||open -jga Mail
pgrep -qx Transmission||open -jga Transmission
Puoi eseguire lo script all'accesso, ad esempio salvando il plist sotto come ~/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>osascript -e 'launch app "ScreenRecycler"'
pgrep -qx Alfred||open -jga Alfred
sleep 10
pgrep -qx Mail||open -jga Mail
pgrep -qx Transmission||open -jga Transmission</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
osascript -e 'launch app "AppName"
e osascript -e 'activate app "AppName"
sono bloccati fino a quando l'applicazione non termina l'apertura. launch
non rende in primo piano un'applicazione ma fa activate
. Se un'applicazione come TextEdit o Mail non è in esecuzione, launch
e activate
aprono una nuova finestra di default visibile. osascript -e 'tell app "TextEdit"' -e reopen -e activate -e end
riapre anche una finestra predefinita se TextEdit è in esecuzione ma non ha finestre aperte.
open -jg
di solito apre un'applicazione nascosta ( -j
) e senza renderla in primo piano ( -g
). Per alcune applicazioni come TextEdit e Mail, apre una nuova finestra visibile se l'applicazione è in esecuzione ma non ha finestre aperte. Per evitare ciò, controlla se l'applicazione è già in esecuzione con ad esempio pgrep
. L'opzione -j
per open
è stata aggiunta in 10.8 e viene mostrata solo nel messaggio di aiuto e non nella pagina man.
Anche
lsappinfo launch launchandhide=true nofront=true /Applications/TextEdit.app
apre sempre TextEdit nascosto e senza renderlo in primo piano. lsappinfo
è stato aggiunto in 10.9. Non so come usare lsappinfo
per attendere fino al termine dell'apertura di un'applicazione.
Le impostazioni per gli elementi di accesso sono memorizzate in ~/Library/Preferences/com.apple.loginitems.plist
. Puoi aggiungere un elemento di accesso con AppleScript:
osascript -e 'tell application "System Events" to make new login item at end with properties {path:"/Applications/TextEdit.app", name:"TextEdit", hidden:true}'
Alcune applicazioni e processi sono avviati tramite elenchi di proprietà in ~/Library/LaunchAgents/
, /Library/LaunchAgents/
o /Library/LaunchDaemons/
. _com.apple.SMLoginItemBookmarks
in /var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist
viene utilizzato per configurare gli elementi di accesso per le applicazioni di supporto utilizzate dalle applicazioni in modalità sandbox come ScreenFlow, DayOne e TuneUp.
Dal 10.7 c'è stato un ritardo relativamente lungo prima dell'avvio di alcuni elementi di accesso o di avvio. Non conosco alcun modo per ridurlo, ma Domande frequenti su KeyRemap4MacBook dice che è causato da Resume:
KeyRemap4MacBook does not work after boot on OS X 10.7. What should I do?
"Resume" feature introduced by Lion delays launching apps at login.
Until KeyRemap4MacBook.app is launched at login, the keyboard layout is not changed. Please wait a minute until menu of KeyRemap4MacBook is shown.