Puis-je écrire un script pour entreprendre une action juste avant que l'ordinateur ne se mette en veille?

1

Je pense que mon ordinateur ne synchronise pas correctement le courrier électronique correctement avec Apple Mail, mais ce n'est qu'un problème lorsqu'il sort du mode veille.

Cette question n'est ni ici ni là-bas. Ce que j'aimerais faire, c'est écrire un script / quelque chose qui va quitter Apple Mail s'il détecte que l'ordinateur est en veille.

Idéalement, il faudrait un processus similaire pour ouvrir Apple Mail au réveil, mais le problème est moins grave.

J'ai essayé de chercher une bibliothèque d'événements système, mais tout ce que je peux trouver, ce sont des événements (qui, à mon avis, n'ont rien à voir avec le sommeil).

Merci!

Naydichev
la source

Réponses:

2

Je suggère d'utiliser un démon comme SleepWatcher . Une fois que vous avez installé SleepWatcher (réf. Le fichier LISEZ-MOI inclus), vous pouvez exécuter les commandes suivantes.

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

Le scénario

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

va quitter Mail, et le script

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

va l'ouvrir. Vous pouvez enregistrer ces .shfichiers en tant que fichiers et les référencer à partir de sleepwatcher, mais assurez-vous de les exécuter chmod +x filename.shavant de les exécuter. Sinon, OS X ne les reconnaîtra pas comme exécutables.

Vous disposez maintenant de deux options pour charger sleepwatcher: vous pouvez l'exécuter manuellement, vous pouvez configurer un LaunchAgent pour le faire. J'aime ce dernier, alors créez un fichier dans /Library/LaunchAgents/named com.custom.mailfix.plist(le nom n'a pas d'importance, mais je vous recommande de conserver la mise en forme, le "com" et le "plist"). Le contenu du fichier devrait ressembler à ce qui suit.

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

Comme auparavant, remplacez les chemins de script par ceux de vos scripts shell. Pour indiquer à OS X de lancer cet agent au démarrage, exécutez

sudo launchctl load -w /Library/LaunchAgents/com.custom.mailfix.plist
AstroPig7
la source
et maintenant quoi? Pourriez-vous être un peu plus précis, pas seulement un lien.
Ruskes
1
J'ai modifié ma réponse pour qu'elle soit plus précise. Désolé pour ça!
AstroPig7