10 votes

Macbook Air/Pro : exécuter script à la fermeture du couvercle ?

Comment configurer MacOS (10.8 ou plus) pour qu'il appelle automatiquement et immédiatement un script désigné par l'utilisateur (probablement un script bash) lorsque l'utilisateur ferme le couvercle de l'écran d'un Macbook Air ou Pro ?

Détails.

Je veux faire cela parce que dans certains scénarios, mon Macbook Air 2013 fonctionnant sous 10.8.5 ne met pas immédiatement en veille/verrouille l'écran à la fermeture du couvercle (peut-être parce qu'un client VPN essaie d'ouvrir une connexion). Je veux donc que le système exécute immédiatement un script qui appelle cette procédure de sauvegarde et de verrouillage de l'écran à la fermeture du couvercle. Cependant, je ne sais pas comment appeler les scripts à la fermeture du couvercle.

8voto

M K Points 10691

Il ne semble pas y avoir de moyen pour qu'un programme soit notifié lorsque le couvercle est fermé. Cependant, l'état du couvercle peut être contrôlé périodiquement (et dans ce cas particulier, toutes les secondes) et des actions peuvent être entreprises en fonction de l'état du couvercle.

Je ne connais pas de programme qui puisse fournir une solution complète à vos besoins, mais vous pouvez utiliser les informations suivantes pour construire une solution vous-même.

  1. Télécharger ce document clamshellstate.pl perl script

  2. Vous pouvez l'exécuter dans Terminal (sous /Applications/Utilities ) comme :

    ./clamshellstate.pl 1  

    pour obtenir une sortie comme "Ouvert" ou "Fermé" indiquant l'état actuel du couvercle

  3. Créez un shell script comme (substituez script-à exécuter avec un script shell que vous souhaitez exécuter) :

    ./clamshellstate.pl 1 | grep Closed > /dev/null && *script-to-run*
  4. Configurez ce script pour qu'il s'exécute une fois par seconde en utilisant launchd.plist . Ou utiliser Lingon pour configurer facilement launchd.plist.

Note : Au lieu de clamshellstate.pl, vous pouvez également utiliser la commande suivante dans le fichier Terminal :

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

pour obtenir un "Oui" pour l'état fermé et un "Non" pour l'état ouvert.

4voto

Vous pouvez également essayer d'utiliser Veilleur de sommeil . Voir le fichier readme pour les instructions :

1. Installez le logiciel 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. Lisez la page de manuel et réfléchissez aux fonctionnalités de SleepWatcher que vous souhaitez utiliser :

$ man sleepwatcher

3. Ecrivez de petits scripts qui exécutent les actions que vous voulez déclencher par SleepWacher et testez-les.

4. Testez vos scripts en combinaison avec SleepWatcher, lancé au premier plan dans une fenêtre de Terminal, par exemple :

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

5. Placez votre ligne de commande SleepWatcher dans un fichier de configuration de l'agent launchd. A titre d'exemple, vous pouvez utiliser l'une des listes de fichiers de ~/Desktop/sleepwatcher_2.2/config. Pour plus d'informations sur launchd et sa configuration, voir les pages de manuel pour launchd et launchd.plist et http://developer.apple.com/macosx/launchd.html.

6. Copiez votre configuration de l'agent launchd dans /Library/LaunchDaemons ou ~/Library/LaunchAgents, selon que vous avez besoin d'un démon pour l'ensemble du système ou d'un agent pour l'utilisateur.

7. Chargez la configuration de l'agent launchd à l'aide de launchctl (voir les exemples ci-dessus et la page de manuel launchctl).

2voto

Pierz Points 2729

Vous pouvez essayer d'utiliser la fonction Plan de contrôle qui peut agir sur divers changements d'état de votre Mac, y compris si le couvercle est fermé ou non.

Il est également possible d'utiliser Cuillère à marteau pour activer des scripts spécifiques au réveil et au sommeil comme mentionné dans mon répondre à une autre question. Les scripts lua scripts pourraient être complétés pour vérifier l'état du couvercle à l'aide de la fonction ioreg -r -k AppleClamshellState mentionné dans la réponse de M K ici.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X