¿Por qué mi secuencia de commands launchd no se ejecuta al iniciar session?

Intenté seguir esta pregunta para que, al iniciar session, el protector de pantalla configurado actualmente se convierta en el background del escritorio. Por lo tanto, he creado el siguiente script:

# login.sh /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background & 

Luego, creé un service de lanzamiento como ~/Library/LaunchAgents/my_login_items.plist con el contenido

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.user.loginscript</string> <key>Program</key> <string>/path/to/login.sh</string> <key>RunAtLoad</key> <true/> </dict> </plist> 

Y luego ejecute launchctl load ~/Library/LaunchAgents/my_login_items.plist . No pasa nada, sin embargo.

  • Arranque lento de OSX con pantalla negra antes del logo de Apple
  • ¿Cómo puedo cambiar mi volumen de inicio de una unidad externa a la unidad interna?
  • El monitor Dell U3415W no se reactiva cuando enciendo mi Mac Mini
  • ¿Cómo puedo ejecutar / detener / relanzar una aplicación automáticamente, en el arranque / inicio de session / en otro momento?
  • AppleScript al inicio y hora específica
  • "Disk Utility dejó de reparar Macintosh HD. Disk Utility no puede reparar este disco. "¿Y ahora qué?
  • MacBook Pro funciona bien, pero no hace que suene el inicio
  • Una de mis unidades de arranque falta
  • One Solution collect form web for “¿Por qué mi secuencia de commands launchd no se ejecuta al iniciar session?”

    Esta es una respuesta profundamente insatisfactoria, pero la hice funcionar ejecutando /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background & en una subcategoría. Cambié login.sh a …

     #!/bin/bash longname=$0 shortname=$(basename "${longname}") echo "$(date -u "+%Y-%m-%d %H:%M:%S") ${shortname} (${longname}) running..." output=$(/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background) # <- COMMAND GOES HERE echo "$(date -u "+%Y-%m-%d %H:%M:%S") ${shortname} ended." 

    … y eso funciona (mi escritorio estático habitual cambia a mi protector de pantalla pnetworkingeterminado). Utilizo esta expresión idiomática para otras tareas de lanzamiento, ejecutando las tareas en una subshell para que pueda probar fácilmente si la operación tuvo éxito y log $output . No entiendo por qué esto funciona mientras tu original no funciona, pero al less funciona.

    Tenga en count que eliminé el & del final de su command. No estoy seguro de que sea necesario con launchd , y estaba impidiendo que el script de envoltura iniciara session (aunque el & no fue la causa del problema original). )

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).