Posso scrivere uno script per eseguire un'azione appena prima che il computer entri in modalità di sospensione?

1

Penso che il mio computer non stia casualmente sincronizzando l'e-mail correttamente con Apple Mail, ma è solo un problema quando si riattiva dal sonno.

Quel problema non è né qui né là. Quello che mi piacerebbe fare è scrivere uno script / qualcosa che lascerà Apple Mail se rileva che il computer sta andando a dormire.

Idealmente, ci sarebbe un processo simile per aprire Apple Mail al risveglio dal sonno, ma questo è meno di un problema.

Ho provato a cercare una libreria di eventi di sistema di qualche tipo, ma tutto quello che riesco a trovare è fsevents (che non credo abbia nulla a riguardo del sonno).

Grazie!

    
posta rublind 14.03.2015 - 03:17
fonte

1 risposta

2

Suggerisco di usare un demone come SleepWatcher . Una volta installato SleepWatcher (vedi il README incluso in esso), puoi eseguire comandi come i seguenti.

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

Lo script

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

uscirà da Mail e lo script

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

lo aprirà. Puoi salvarli come .sh file e farli riferimento da Sleepwatcher, ma assicurati di eseguire chmod +x filename.sh su di essi prima di provare a eseguirli. Altrimenti, OS X non li riconoscerà come eseguibili.

Ora hai due opzioni per caricare lo sleepwatcher: puoi eseguirlo manualmente, puoi configurare un LaunchAgent per farlo. Mi piace quest'ultimo, quindi crea un file in /Library/LaunchAgents/ denominato com.custom.mailfix.plist (il nome non è importante, ma ti consiglio di mantenere la formattazione, il "com" e il "plist"). Il contenuto del file dovrebbe essere simile al seguente.

<?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>

Come prima, sostituisci i percorsi di script con i percorsi degli script della shell. Per dire a OS X di lanciare questo agente all'avvio, lancia

sudo launchctl load -w /Library/LaunchAgents/com.custom.mailfix.plist
    
risposta data 14.03.2015 - 03:25
fonte

Leggi altre domande sui tag