¿Cómo puedo determinar si la pantalla está dormida en Mountain Lion, desde la línea de comandos?

4

Tengo un script que debe ejecutarse de vez en cuando, pero solo si el protector de pantalla está activo o si la pantalla está inactiva (para asegurarse de que nadie esté usando la computadora de manera activa). Necesito tener una forma de determinar si la pantalla está inactiva desde la línea de comandos. (Se prefiere una sola línea)

Estoy usando "ps -acxw | grep ScreenSaverEngine | grep -v grep" para determinar si el protector de pantalla se está ejecutando, lo que siempre funcionó bien en las versiones anteriores del sistema operativo, pero en Mountain Lion, el protector de pantalla se desactiva cuando se enciende la pantalla dormir, así que necesito una manera de determinar eso también ahora.

Se agradece la ayuda ...

    
pregunta G Piper 10.12.2012 - 00:18

3 respuestas

5

Aunque no responde directamente a su pregunta, esta línea le dará el tiempo en segundos desde la última interacción del usuario que proviene de lo que OS X considera un usuario inactivo. (independientemente de los protectores de pantalla o las pantallas negras).

echo $(('ioreg -c IOHIDSystem | sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'' / 1000000000))
    
respondido por el MacLemon 10.12.2012 - 01:54
3

Creo que lo he descubierto. Esto lo hace por mí:

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

En cuanto al número que devuelve, en mi caso parece estar en el rango de 0-4. No sé qué significa específicamente cada número, pero cuando la pantalla está "encendida", obtengo 4, y cuando la pantalla se puso en reposo con inactivo, obtengo 0. Supongo que los estados intermedios son para atenuación, etc., pero no tengo una computadora portátil aquí, así que no estoy seguro.

    
respondido por el ipmcc 26.09.2013 - 16:38
1

Gracias, basado en la sugerencia de ipmcc, he creado una línea que genera un valor booleano.

echo $(ioreg -n IODisplayWrangler | grep -i IOPowerManagement | perl -pe 's/^.*DevicePowerState\"=([0-9]+).*$//')/4 | bc
    
respondido por el user2423555 19.06.2016 - 00:47

Lea otras preguntas en las etiquetas