¿Cómo reiniciar el volumen de OS X después de dormir usando launchd?

He estado tratando de escribir un file plist en el que, cuando regrese del modo de suspensión, siempre desee hacer que mi Mac scope el volumen mínimo. Sin embargo, parece que el siguiente plist no funciona, con un error: 1:1: syntax error: Expected string but found end of script. (-2741) 1:1: syntax error: Expected string but found end of script. (-2741)

 <?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>KeepAlive</key> <false/> <key>Label</key> <string>my.plist</string> <key>ProgramArguments</key> <array> <string>/usr/bin/osascript</string> <string>-e</string> <string>"</string> <string>set</string> <string>volume</string> <string>output</string> <string>volume</string> <string>0</string> <string>"</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist> 

Además, cuando lo siguiente no funciona:

  • ¿Cómo boost el tamaño del cursor programáticamente?
  • Automatización del inicio de session en OS X después del reinicio del sistema
  • Encuentre el disco adjunto específico, no el volumen, por Applescript
  • Cómo deshabilitar el autohide dock ocultar automáticamente cuando la aplicación se cierra
  • Cómo cerrar las aplicaciones en el sueño?
  • AppleScript: ¿cómo cerrar las alertas de notificación de una aplicación específica?
  •  <?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>KeepAlive</key> <false/> <key>Label</key> <string>my.plist</string> <key>ProgramArguments</key> <array> <string>/usr/bin/osascript</string> <string>-e</string> <string>"set volume output volume 0"</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist> 

    El command osascript funciona bien si lo ejecuto desde el Terminal, así que creo que se debe a cómo configuré mi list de arguments al plist.

    Entonces, ¿es factible tomar el argumento de cadena como "~" en launchd? ¿O hay algunas otras cosas que me falta aquí?

    Sospecho que podría ser mejor escribir el command osascript en el script de shell y cargar el script de shell para permitir que el volumen del Mac se minimice … ¿pero es el enfoque correcto?

    Yo uso OS X Mavericks 10.9.2.

  • ¿Hay una list completa de todos los atajos de keyboard ocultos en OSX?
  • Conexión a Cisco AnyConnect VPN sin certificate almacenado o secreto compartido
  • ¿Por qué Keychain solicita la misma contraseña dos veces?
  • FileVault: ¿de qué se trata exactamente el paso de optimization?
  • ¿Cómo sabe mi iMac mi location en la aplicación de maps, dado que uso una VPN que tiene mi IP a unas 200 millas de donde está mi dirección?
  • ¿Cómo se desactivan por completo las animaciones de cambio de espacio en OS X Yosemite?
  • 2 Solutions collect form web for “¿Cómo reiniciar el volumen de OS X después de dormir usando launchd?”

    El segundo formatting de ticket de trabajo de lanzamiento es casi correcto. Solo es necesario eliminar un set de citas.

    Citas

    Las citas ya no son necesarias en el segundo ticket de trabajo de lanzamiento, así que cambie:

     <string>"set volume output volume 0"</string> 

    …a…

     <string>set volume output volume 0</string> 

    Agrupación de arguments

    En este caso, las comillas agruparon el set de arguments para osascript para ver como un solo elemento. Así, osascript obtiene dos arguments, la bandera -e y la secuencia de commands. Esto cumple con los requisitos del manual de osascript .

    Cuando se llama a través de Terminal.app y, por lo tanto, a través del shell, se necesitan las comillas para realizar la agrupación. Cuando osascript obtiene los arguments, el shell ha eliminado las comillas.

    Sin comillas, los espacios subdividen cada elemento pasado a través del shell.

    Cuando se llama a través de un ticket de trabajo de launchd , la agrupación es intrínseca dentro del set pasado como ProgramArguments . En su primer boleto, el set contenía nueve elementos y en el segundo boleto, el set contenía tres.

    LaunchAgent

    Asegúrese de agregar este trabajo de lanzamiento como ~/Library/LaunchAgents ya que osascript requiere un usuario activo con una session gráfica.

    Este enfoque se aproxima a lo que hago con Power Manager en Cómo configurar el volumen al iniciar session .

    La segunda plist debería funcionar si elimina las comillas adicionales, pero solo ejecuta el command al iniciar session y no después de despertarse.

    Puede usar el observador de sueño para ejecutar un command después de despertarse del sueño. Ejecute sudo -v y pegue líneas como esta en un shell:

     curl http://www.bernhard-baehr.de/sleepwatcher_2.2.tgz|tar -x sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8 sudo cp sleepwatcher_2.2/sleepwatcher /usr/local/sbin sudo cp sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8 cp sleepwatcher_2.2/config/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist echo $'#!/bin/sh\nosascript -e "set volume output volume 0"'>~/.sleep chmod +x ~/.sleep 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).