¿Puedo escribir un script para realizar una acción justo antes de que la computadora entre en modo de suspensión?

1

Creo que mi computadora no está sincronizando al azar el correo electrónico con Apple Mail, pero solo es un problema cuando se despierta del modo de suspensión.

Ese problema no está aquí ni allá. Lo que me gustaría hacer es escribir un script / algo que salga de Apple Mail si detecta que la computadora se va a dormir.

Lo ideal sería que hubiera un proceso similar para abrir Apple Mail al despertarse, pero eso no es un problema.

Intenté buscar una biblioteca de eventos del sistema de algún tipo, pero todo lo que puedo encontrar es fsevents (que no creo que tenga nada sobre el sueño).

¡Gracias!

    
pregunta rublind 14.03.2015 - 03:17

1 respuesta

2

Sugiero usar un demonio como SleepWatcher . Una vez que haya instalado SleepWatcher (ref. El README incluido con él), puede ejecutar comandos como los siguientes.

/usr/local/sbin/sleepwatcher -s /path/to/sleepscript -w /path/to/wakeupscript

El script

#!/bin/sh
osascript -e 'quit app "Mail"'

saldrá de Mail y el script

#!/bin/sh
open -a /Applications/Mail.app $1

lo abrirá. Puede guardarlos como archivos .sh y hacer referencia a ellos desde sleepwatcher, pero asegúrese de ejecutar chmod +x filename.sh en ellos antes de intentar ejecutarlos. De lo contrario, OS X no los reconocerá como ejecutables.

Ahora, tienes dos opciones para cargar sleepwatcher: puedes ejecutarlo manualmente, puedes configurar un LaunchAgent para hacerlo. Me gusta este último, así que cree un archivo en /Library/LaunchAgents/ llamado com.custom.mailfix.plist (el nombre no es importante, pero le recomiendo que mantenga el formato, el "com" y el "plist"). El contenido del archivo debería ser similar al siguiente.

<?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.custom.mailfix.plist</string>
<key>ProgramArguments</key>
<array>
    <string>/usr/local/sbin/sleepwatcher</string>
    <string></string>
    <string>-s /path/to/sleepscript</string>
    <string>-w /path/to/wakescript</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>

Como antes, reemplace las rutas del script por las rutas a sus scripts de shell. Para indicar a OS X que inicie este agente al inicio, ejecute

sudo launchctl load -w /Library/LaunchAgents/com.custom.mailfix.plist
    
respondido por el AstroPig7 14.03.2015 - 03:25

Lea otras preguntas en las etiquetas