Kann ich ein Skript schreiben, um eine Aktion auszuführen, bevor der Computer in den Ruhezustand wechselt?

Ich glaube, mein Computer synchronisiert zufälligerweise E-Mails nicht korrekt mit Apple Mail, aber das ist nur ein Problem, wenn er aus dem Ruhezustand aufwacht.

Dieses Problem ist weder hier noch dort. Was ich tun möchte, ist ein Skript / etwas zu schreiben, das Apple Mail beendet, wenn es feststellt, dass der Computer in den Ruhezustand geht.

Idealerweise gibt es einen ähnlichen Prozess, um Apple Mail beim Aufwachen aus dem Ruhezustand zu öffnen, aber das ist weniger ein Problem.

Ich habe versucht, nach einer Art Systemereignisbibliothek zu suchen, aber alles, was ich finden kann, ist fsevents (was meines Erachtens nichts über Schlaf zu bieten hat).

Danke!

Antworten (1)

Ich schlage vor, einen Daemon wie SleepWatcher zu verwenden . Sobald Sie SleepWatcher installiert haben (siehe die darin enthaltene README-Datei), können Sie Befehle wie die folgenden ausführen.

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

Das Drehbuch

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

beendet Mail und das Skript

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

wird es öffnen. Sie können diese als Dateien speichern .shund von sleepwatcher darauf verweisen, aber stellen Sie sicher, dass Sie chmod +x filename.shsie ausführen, bevor Sie versuchen, sie auszuführen. Andernfalls erkennt OS X sie nicht als ausführbar.

Jetzt haben Sie zwei Möglichkeiten, Sleepwatcher zu laden: Sie können es manuell ausführen, Sie können einen LaunchAgent dafür konfigurieren. Ich mag letzteres, also erstellen Sie eine Datei in /Library/LaunchAgents/named com.custom.mailfix.plist(der Name ist unwichtig, aber ich empfehle Ihnen, die Formatierung, das „com“ und das „plist“ beizubehalten). Der Inhalt der Datei sollte wie folgt aussehen.

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

Ersetzen Sie wie zuvor die Skriptpfade durch Pfade zu Ihren Shell-Skripten. Führen Sie aus, um OS X anzuweisen, diesen Agenten beim Start zu starten

sudo launchctl load -w /Library/LaunchAgents/com.custom.mailfix.plist
und dann was? könnten Sie etwas genauer sein, nicht nur ein Link.
Ich habe meine Antwort bearbeitet, um genauer zu sein. Das tut mir leid!