8 votes

Comment déterminer si l'écran est endormi dans Mountain Lion, à partir de la ligne de commande ?

J'ai un script qui doit s'exécuter de temps en temps, mais seulement si l'économiseur d'écran est actif ou si l'écran est endormi (pour s'assurer que personne n'utilise activement l'ordinateur en premier). J'ai besoin d'un moyen de déterminer si l'écran est endormi à partir de la ligne de commande. (Un seul mot de préférence)

J'utilise "ps -acxw | grep ScreenSaverEngine | grep -v grep" pour déterminer si l'économiseur d'écran fonctionne, ce qui a toujours bien fonctionné dans les versions précédentes du système d'exploitation, mais dans Mountain Lion, l'économiseur d'écran est désactivé lorsque l'écran se met en veille, et j'ai donc besoin d'un moyen de le déterminer également maintenant.

L'aide est appréciée...

8voto

scottmarlowe Points 2952

Bien qu'elle ne réponde pas directement à votre question, cette ligne vous donnera le temps en secondes depuis la dernière interaction de l'utilisateur qui provient de ce qu'OS X considère comme un utilisateur inactif (indépendamment des économiseurs d'écran ou des écrans noirs). (indépendamment des économiseurs d'écran ou des écrans noirs).

echo $((`ioreg -c IOHIDSystem | sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'` / 1000000000))

7voto

Jonathan Rioux Points 1868

Je crois que j'ai trouvé la solution. C'est comme ça que ça marche pour moi :

ioreg -n IODisplayWrangler | grep -i IOPowerManagement | perl -pe 's/^.*DevicePowerState\"=([0-9]+).*$/\1/'

En ce qui concerne le nombre renvoyé, dans mon cas, il semble être compris entre 0 et 4. Je ne sais pas exactement ce que chaque chiffre signifie, mais lorsque l'écran est "allumé", j'obtiens 4, et lorsque l'écran a été mis en veille par idle, j'obtiens 0. Je suppose que les états intermédiaires sont pour la gradation, etc, mais je n'ai pas d'ordinateur portable ici, donc je n'en suis pas sûr.

1voto

user2423555 Points 21

Merci, sur la base de l'astuce de ipmcc, j'ai créé le one-liner qui produit une valeur booléenne.

echo $(ioreg -n IODisplayWrangler | grep -i IOPowerManagement | perl -pe 's/^.*DevicePowerState\"=([0-9]+).*$/\1/')/4 | bc

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