Wie kann die Reihenfolge der Startelemente für Benutzer beim Anmelden gesteuert werden?

Ich habe einige Anwendungen mit gemischten Bewertungen gesehen, die es einem Benutzer ermöglichen, die Reihenfolge der Startelemente zu ändern. Ich würde einfach die "Bare-Metal"-Methode bevorzugen und dazu die Shell oder den Open Directory / Netinfo-Editor verwenden. Mir ist klar, dass dies nicht gesteuert wird launchd, also was ist der Mechanismus und wo ist der bevorzugte Ort für die Definition des App-Starts?

Ich habe festgestellt, dass der App-/Fensterwiederherstellungsprozess von OS X weniger als glanzlos ist, und ich muss sicherstellen, dass bestimmte Apps zuerst vor anderen gestartet werden (z. B. ScreenRecycler, da ich Anwendungen auf dem anderen Display öffnen muss, wenn sie gestartet werden).

FYI, bisher, und ich bin mit dieser Lösung nicht zufrieden, aber ich habe ein Programm gekauft, das dies für mich erledigt. Ich werde den Namen so weit nicht nennen, bis ich möglicherweise hier etwas Input bekomme oder jemand eine Empfehlung möchte, da ich nicht als Werbetreibender gesehen werden möchte. Bisher funktioniert es gut, aber ich würde eine Lösung bevorzugen, die meiner ursprünglichen Anfrage entspricht und die Startdienste ordnungsgemäß ändern kann, ohne auf eine Krücke einer Anwendung angewiesen zu sein, die sich im Start befindet und nur den App-Start blockiert (obwohl ich sagen muss, dass die Zeitverzögerungen und Abhängigkeitszusätze dieses kleinen Trottels sind raffiniert).
Wir bitten nur darum, dass Personen ihre Beziehung zu einem von ihnen empfohlenen Programm offenlegen (und dass dies nicht der einzige Grund für die Teilnahme an der Website ist). Ehrliche Empfehlungen sind in Ordnung, solange sie themenbezogen sind und sich nicht wie eine spätabendliche Werbesendung lesen.

Antworten (2)

Wenn Sie ein Shell-Skript zum Öffnen von Anwendungen verwenden, versuchen Sie Folgendes:

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

Sie können das Skript bei der Anmeldung ausführen, indem Sie beispielsweise die folgende plist als ~/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"und osascript -e 'activate app "AppName"werden blockiert, bis die Anwendung das Öffnen beendet. launchmacht keine Bewerbung an erster Stelle, tut es activateaber. Wenn eine Anwendung wie TextEdit oder Mail nicht ausgeführt wird, launchöffnen Sie activateein neues sichtbares Standardfenster. osascript -e 'tell app "TextEdit"' -e reopen -e activate -e endöffnet auch ein Standardfenster, wenn TextEdit läuft, aber keine offenen Fenster hat.

open -jgöffnet eine Anwendung normalerweise versteckt ( -j) und ohne sie in den Vordergrund zu stellen ( -g). Bei einigen Anwendungen wie TextEdit und Mail wird ein neues sichtbares Fenster geöffnet, wenn die Anwendung ausgeführt wird, aber keine geöffneten Fenster hat. Um dies zu vermeiden, überprüfen Sie, ob die Anwendung bereits ausgeführt wird, z. B. mit pgrep. Die -jOption für openwurde in 10.8 hinzugefügt und wird nur in der Hilfenachricht und nicht auf der Manpage angezeigt.

lsappinfo launch launchandhide=true nofront=true /Applications/TextEdit.appöffnet TextEdit auch immer versteckt und ohne es in den Vordergrund zu stellen. lsappinfowurde in 10.9 hinzugefügt. Ich weiß nicht, wie ich lsappinfowarten soll, bis eine Anwendung vollständig geöffnet ist.

Die Einstellungen für Anmeldeobjekte werden in gespeichert ~/Library/Preferences/com.apple.loginitems.plist. Sie können ein Anmeldeobjekt mit AppleScript hinzufügen:

osascript -e 'tell application "System Events" to make new login item at end with properties {path:"/Applications/TextEdit.app", name:"TextEdit", hidden:true}'

Einige Anwendungen und Prozesse werden über Eigenschaftslisten in ~/Library/LaunchAgents/, /Library/LaunchAgents/, oder gestartet /Library/LaunchDaemons/. _com.apple.SMLoginItemBookmarksin /var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plistwird verwendet, um Anmeldeelemente für Hilfsanwendungen zu konfigurieren, die von Sandbox-Anwendungen wie ScreenFlow, DayOne und TuneUp verwendet werden.

Seit 10.7 gibt es eine relativ lange Verzögerung, bevor einige Login-Items oder Launchd-Jobs gestartet werden. Ich kenne keine Möglichkeit, es zu reduzieren, aber die FAQ von KeyRemap4MacBook sagt, dass es durch Resume verursacht wird:

KeyRemap4MacBook funktioniert nach dem Booten unter OS X 10.7 nicht. Was soll ich machen?

Die von Lion eingeführte „Fortsetzen“-Funktion verzögert das Starten von Apps bei der Anmeldung.

Bis KeyRemap4MacBook.app bei der Anmeldung gestartet wird, wird das Tastaturlayout nicht geändert. Bitte warten Sie eine Minute, bis das Menü von KeyRemap4MacBook angezeigt wird.

Dies ist bei weitem der einfachste Weg, um Startprogramme zu sequenzieren, anstatt sie alle in die Starteinstellung zu werfen oder sie vom Betriebssystem automatisch wiederherstellen zu lassen. Ich sollte einen Link ausgraben, wie man das automatische Öffnen verhindert, und dann könnte dies eine großartige Vorlage für alle sein, die die Abhängigkeitsentscheidungen und den Ladealgorithmus von launchd nicht mögen.

Da ich also keine Empfehlungen gesehen habe, werde ich fortfahren und die Antwort vorbringen, mit der ich bisher fortgefahren bin.

Die Lösung war bisher für mich Startupizer . Es ist offensichtlich nicht optimal, da es sowohl eine kostenpflichtige Lösung als auch keine Methode ist, die direkt vom Betriebssystem aus verfügbar ist, aber es funktioniert und hat es mir ermöglicht, Abhängigkeitsbedingungen und verschiedene andere Verzögerungen für die hilfreiche und erfüllte Bestellung zu erstellen meine Bedürfnisse.

Ich hoffe, das hilft jemandem und ich hoffe, dass jemand bald eine OS-integriertere Lösung empfiehlt.

Eine Bestellung bei Apple wird es wohl nicht geben. Sie bevorzugen launchd und lassen das System entscheiden, in welcher Reihenfolge / wie schnell Elemente als Teil des Designs dieses Subsystems gestartet werden. Die Dinge beginnen auch nicht unbedingt bei jedem Start in der gleichen Reihenfolge.