10 votes

Comment contrôler l'ordre des éléments de démarrage pour les utilisateurs lors de la connexion?

J'ai vu quelques applications avec des avis mitigés qui permettront à un utilisateur de changer l'ordre des éléments de démarrage. Je préférerais simplement la méthode "à nu" et continuer à utiliser le shell ou l'éditeur d'Open Directory / netinfo pour le faire. Je réalise que cela n'est pas contrôlé via launchd donc quel est le mécanisme et où se trouve l'emplacement des préférences pour la définition du démarrage de l'application?

J'ai trouvé que le processus de restauration d'applications/fenêtres d'OS X était moins que impressionnant et j'ai besoin de garantir que certaines applications démarrent avant d'autres (comme ScreenRecycler car j'ai besoin que les applications s'ouvrent sur l'autre écran lorsqu'elles se lancent).

0 votes

FYI, jusqu'à présent, et je ne suis pas content de cette solution, mais j'ai sauté le pas et acheté un programme qui gère cela pour moi. Je ne mentionnerai pas le nom jusqu'à présent jusqu'à ce que je reçoive éventuellement des commentaires ici ou si quelqu'un veut une recommandation car je ne veux pas être perçu comme faisant de la publicité. Jusqu'à présent, cela fonctionne bien, mais je préférerais une solution qui corresponde à ma demande initiale et qui puisse modifier correctement les services de lancement sans avoir à compter sur une application qui repose sur une béquille au démarrage et qui ne fait que bloquer le démarrage de l'application (bien que je dois dire que les retards de temps et les ajouts de dépendances de ce petit truc sont bien faits).

0 votes

Nous demandons simplement que les personnes divulguent toute relation avec un programme qu'ils recommandent (et que ce ne soit pas la seule raison pour laquelle vous participez sur le site). Les recommandations honnêtes sont acceptables tant qu'elles sont pertinentes et ne ressemblent pas à un infopublicité tardive.

4voto

Si vous utilisez un script shell pour ouvrir des applications, essayez quelque chose comme ceci :

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

Vous pouvez exécuter le script au démarrage en enregistrant par exemple le plist ci-dessous comme ~/Library/LaunchAgents/some.label.plist.

  Label
  some.label
  ProgramArguments

    bash
    -c
    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

  RunAtLoad

osascript -e 'launch app "AppName" et osascript -e 'activate app "AppName" sont bloqués jusqu'à ce que l'application ait fini d'ouvrir. launch ne rend pas une application au premier plan, mais activate oui. Si une application comme TextEdit ou Mail n'est pas en cours d'exécution, launch et activate ouvrent une nouvelle fenêtre par défaut visible. osascript -e 'tell app "TextEdit"' -e reopen -e activate -e end rouvre également une fenêtre par défaut si TextEdit est en cours d'exécution mais n'a pas de fenêtres ouvertes.

open -jg ouvre généralement une application masquée (-j) et sans la rendre au premier plan (-g). Pour certaines applications comme TextEdit et Mail, il ouvre une nouvelle fenêtre visible si l'application est en cours d'exécution mais n'a pas de fenêtres ouvertes. Pour éviter cela, vérifiez si l'application est déjà en cours d'exécution avec par exemple pgrep. L'option -j pour open a été ajoutée dans 10.8 et n'apparaît que dans le message d'aide et non dans la page du manuel.

lsappinfo launch launchandhide=true nofront=true /Applications/TextEdit.app ouvre également toujours TextEdit masqué et sans le rendre au premier plan. lsappinfo a été ajouté dans 10.9. Je ne sais pas comment utiliser lsappinfo pour attendre que l'application ait fini d'ouvrir.

Les paramètres des éléments de connexion sont stockés dans ~/Library/Preferences/com.apple.loginitems.plist. Vous pouvez ajouter un élément de connexion avec AppleScript :

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

Certaines applications et processus sont lancés via des listes de propriétés dans ~/Library/LaunchAgents/, /Library/LaunchAgents/ ou /Library/LaunchDaemons/. `_com.apple.SMLoginItemBookmarks` dans /var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist est utilisé pour configurer les éléments de connexion pour les applications auxiliaires utilisées par des applications sandboxées comme ScreenFlow, DayOne et TuneUp.

Depuis 10.7, il y a eu un relatively long delay avant que certains éléments de connexion ou jobs de launchd ne soient démarrés. Je ne connais pas de moyen de le réduire, mais la FAQ de KeyRemap4MacBook dit que cela est causé par Resume :

KeyRemap4MacBook ne fonctionne pas après le démarrage sous OS X 10.7. Que dois-je faire ?

La fonction "Resume" introduite par Lion retarde le lancement des applications au démarrage.

Jusqu'à ce que KeyRemap4MacBook.app soit lancé au démarrage, la disposition du clavier n'est pas modifiée. Veuillez patienter une minute jusqu'à ce que le menu de KeyRemap4MacBook soit affiché.

0 votes

C'est de loin la manière la plus simple de séquencer les programmes de démarrage plutôt que de les mettre tous dans les préférences de démarrage ou de laisser le système d'exploitation les restaurer automatiquement. Je devrais trouver un lien sur la façon d'empêcher l'ouverture automatique, puis cela pourrait être un excellent modèle pour toute personne n'aimant pas les décisions de dépendance et l'algorithme de chargement de launchd.

3voto

ylluminate Points 4352

MISE À JOUR :

En 2023, l'application Autostarter (voir aussi l'App Store) comble un peu ce créneau maintenant. Elle présente certains problèmes et nécessite quelques améliorations supplémentaires pour être aussi flexible que Startupizer (comme le besoin de contrôle du timing et de retards), mais elle aide considérablement sur macOS 13 Ventura +.


Donc puisque je n'ai vu aucune recommandation, je vais avancer et proposer la réponse que j'ai utilisée jusqu'à présent.

La solution jusqu'à présent pour moi a été Startupizer. Ce n'est pas idéal évidemment puisque c'est une solution payante et ce n'est pas une méthode directement disponible depuis le système d'exploitation, mais cela fonctionne et m'a permis de créer des conditions de dépendance et divers autres retards à l'ordre qui ont été utiles et ont répondu à mes besoins.

J'espère que cela aidera quelqu'un et j'espère vraiment que quelqu'un recommandera bientôt une solution plus intégrée au système d'exploitation.

0 votes

Il n'est pas probable qu'Apple fasse des commandes spécifiques. Ils préfèrent launchd et laissent le système décider de l'ordre / de la vitesse de lancement des éléments dans le cadre de la conception de ce sous-système. Les choses ne commenceront pas nécessairement dans le même ordre à chaque démarrage également.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X