1 votes

Comment mettre un Mac en veille après une déconnexion de l'écran à l'aide d'AppleScript ?

Je voudrais résoudre le problème à partir de cette question Après avoir déconnecté un écran Cinema d'un MacBook à clapet, je voudrais laisser le MacBook se mettre en veille sans ouvrir et fermer le couvercle.

Je n'ai jamais utilisé AppleScript auparavant. Est-il possible d'écrire un AppleScript qui met l'ordinateur en veille, disons 30 secondes après la déconnexion d'un écran externe, mais seulement si le couvercle est fermé.

2voto

Graham Miln Points 39606

En utilisant les scriptEditeur.app avec OS X, essayez d'expérimenter avec ces extraits.

Attendez 30 secondes

L'extrait suivant fera en sorte que votre script attende 30 secondes avant d'afficher un dialogue :

delay 30 -- this waits thirty seconds
display dialog "Hello?" -- this shows a dialog

Sommeil

L'extrait suivant mettra votre Mac dormir immédiatement :

tell application "System Events"
    sleep
end tell

Attendre puis dormir

En combinant les deux extraits ci-dessus, on obtient un AppleScript qui attendra 30 secondes avant de mettre votre Mac en veille :

delay 30
tell application "System Events"
    sleep
end tell

Écrans et ordinateurs de bureau

Je ne suis pas sûr de la meilleure façon de déterminer si un moniteur est connecté. Vous pouvez certainement effectuer des sondages réguliers, en appelant system_profiler SPThunderboltDataType SPDisplaysDataType et l'analyse de la sortie fonctionnerait.

L'interrogation est coûteuse en temps de calcul et il vaut mieux l'éviter.

Alternativement, peut-être une approche par laquelle un AppleScript pourrait déterminer si le nombre de bureaux actifs a changé ? Lorsque deux moniteurs sont connectés à mon Mac, le snippet suivant renvoie une liste de deux éléments :

tell application "System Events"
    set myDesktops to desktops
end tell

En outre, l'extrait suivant fournit davantage d'informations sur l'affichage avec lesquelles travailler :

tell application "System Events"
    set myDesktop to properties of the first desktop
end tell

1voto

user3439894 Points 52496

Je ne vais pas vous faire un dessin comme Graham Miln l'a joliment fait, mais si vous voulez créer une application AppleScript que vous pouvez exécuter avant de déconnecter votre écran externe, cette application attendra 30 secondes, vérifiera s'il est en mode clamshell et si oui, mettra le système en veille.

AppleScript code :

delay 30
set AppleClamshellState to do shell script "ioreg -r -k AppleClamshellState -d 1 | awk -F' = ' '/AppleClamshellState/ {print $2}'"
if AppleClamshellState = "Yes" then tell application "Finder" to sleep

Remarque : Dans le if déclaration , System Events peut être utilisé à la place de Finder car l'un ou l'autre acceptera le sleep commande .

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