MacBook Air / Pro: ¿Ejecutar script en la tapa cerrada?

4

¿Cómo se puede configurar MacOS (10.8 o superior) para llamar automática e inmediatamente a un script designado por el usuario (probablemente un script de bash) cuando el usuario cierra la tapa de la pantalla de un MacBook Air o Pro?

Detalles.

Quiero hacer esto porque, en algunos casos, mi MacBook Air 2013 con 10.8.5 no duerme / bloquea la pantalla inmediatamente después de cerrar la tapa (posiblemente porque un cliente VPN está intentando abrir una conexión). Como tal, quiero que el sistema ejecute inmediatamente un script que llame a este procedimiento de bloqueo y bloqueo de pantalla tras tapa cerrada. Sin embargo, no sé cómo llamar a los scripts al cerrar la tapa de la pantalla.

    
pregunta Johnny Utahh 07.10.2013 - 03:39

3 respuestas

4

No parece haber una manera para que un programa reciba una notificación cuando la tapa está cerrada. Sin embargo, el estado de la tapa se puede monitorear periódicamente (y en este caso particular, cada segundo) y las acciones tomadas en función del estado de la tapa.

No conozco ningún programa que pueda proporcionarle una solución completa a sus necesidades, pero puede utilizar la siguiente información para crear una solución usted mismo.

  1. Descargue este clamshellstate.pl script de Perl
  2. Puedes ejecutarlo en Terminal (bajo /Applications/Utilities ) como:

    ./clamshellstate.pl 1  
    

    para obtener una salida como "Abrir" o "Cerrado" que indica el estado actual de la tapa

  3. Cree un script de shell como (sustituya script-to-run con un script de shell que le gustaría ejecutar):

    ./clamshellstate.pl 1 | grep Closed > /dev/null && *script-to-run*
    
  4. Configure esta secuencia de comandos para ejecutarse una vez por segundo utilizando launchd .plist . O use Lingon para configurar fácilmente launchd.plist.

Nota: en lugar de clamshellstate.pl, también puedes usar el siguiente comando en Terminal :

ioreg -r -k AppleClamshellState | grep '"AppleClamshellState" = Yes' | cut -f2 -d"="

para obtener un "Sí" para el estado cerrado y un "No" para el estado abierto.

    
respondido por el M K 07.10.2013 - 17:20
2

También puedes intentar usar SleepWatcher . Consulte el archivo Léame para obtener instrucciones:

  

1. Instale el software SleepWatcher:

$ sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8
$ sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher /usr/local/sbin
$ sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8
     

2. Lea la página del manual y piense en las características de SleepWatcher que desea usar:

$ man sleepwatcher
     

3. Escriba pequeños scripts de shell que realicen las acciones que desea activar con SleepWacher y pruébelas.

     

4. Pruebe sus scripts en combinación con SleepWatcher, iniciado en primer plano en una ventana de Terminal, e. g .:

$ /usr/local/sbin/sleepwatcher --verbose --sleep /path/to/your/sleepscript --wakeup /path/to/your/wakeupscript ...
     

5. Coloque su línea de comando de SleepWatcher en un archivo de configuración de agente launchd. Como ejemplo, puede usar una de las listas de ~ / Desktop / sleepwatcher_2.2 / config. Para obtener más información sobre launchd y su configuración, consulte las páginas del manual de launchd y launchd.plist y http://developer.apple.com/macosx/launchd.html.

     

6. Copie la configuración de su agente launchd en / Library / LaunchDaemons o ~ / Library / LaunchAgents, dependiendo de si necesita un demonio de todo el sistema o un agente de usuario.

     

7. Cargue la configuración del agente de launchd usando launchctl (consulte los ejemplos anteriores y la página de manual de launchctl).

    
respondido por el user495470 25.10.2013 - 17:10
1

Puede intentar usar la aplicación ControlPlane que puede actuar en varios cambios de estado en su Mac, incluso si la tapa está cerrada o no.

    
respondido por el Pierz 24.10.2013 - 11:03

Lea otras preguntas en las etiquetas