Come controllare l'ordine degli elementi di avvio per gli utenti all'accesso?

7

Ho visto alcune applicazioni con recensioni miste che consentono a un utente di modificare l'ordine degli elementi di avvio. Preferirei semplicemente il metodo "bare metal" e continuerei a usare la shell o l'editor di Open Directory / netinfo per farlo. Mi rendo conto che questo non è controllato tramite launchd quindi qual è il meccanismo e dov'è la posizione di preferenza per la definizione di avvio dell'app?

Ho trovato che il processo di app / finestra di ripristino di OS X non è brillante e ho bisogno di garantire che alcune app inizino prima di altre (come ScreenRecycler perché ho bisogno che le applicazioni si aprano sull'altro display quando si accendono).

    
posta ylluminate 27.02.2014 - 00:46
fonte

2 risposte

3

Quindi, dal momento che non ho visto alcuna raccomandazione, ho intenzione di andare avanti e presentare la risposta che ho portato avanti finora.

La soluzione finora per me è stata Startupizer . Ovviamente non è ottimale poiché è sia una soluzione a pagamento che non è un metodo direttamente disponibile dal sistema operativo, ma funziona e mi ha permesso di creare condizioni di dipendenza e vari altri ritardi nell'ordine che è stato utile e incontrato i miei bisogni.

Spero che questo aiuti qualcuno e spero che qualcuno suggerisca presto una soluzione integrale per il sistema operativo.

    
risposta data 28.02.2014 - 00:01
fonte
3

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.

    
risposta data 28.02.2014 - 15:53
fonte

Leggi altre domande sui tag