Come posso determinare se lo schermo è addormentato in Mountain Lion, dalla riga di comando?

4

Ho uno script che deve essere eseguito ogni tanto, ma solo se lo screensaver è attivo o se lo schermo è addormentato (per accertarsi che nessuno stia utilizzando attivamente il computer per primo). Devo avere un modo per determinare se lo schermo è addormentato dalla riga di comando. (Preferibile per un liner)

Sto usando "ps -acxw | grep ScreenSaverEngine | grep -v grep" per determinare se lo screensaver è in esecuzione, il che ha sempre funzionato bene nelle precedenti versioni del sistema operativo, ma in Mountain Lion, lo screensaver è disabilitato quando lo schermo va per dormire, quindi ho bisogno di un modo per determinarlo anche adesso.

L'aiuto è apprezzato ...

    
posta G Piper 10.12.2012 - 00:18
fonte

3 risposte

5

Anche se non risponde direttamente alla tua domanda questa linea ti darà il tempo in secondi dall'ultima interazione dell'utente che viene da quello che OS X considera un utente inattivo. (indipendentemente dai salvaschermi o dai display neri.)

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

Penso di aver capito. Questo lo fa per me:

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

Per quanto riguarda il numero restituito, nel mio caso sembra che sia compreso nell'intervallo 0-4. Non so cosa significhi per ogni numero in particolare, ma quando il display è "on", ottengo 4, e quando il display è stato messo in pausa da idle ottengo 0. Presumo che gli stati intermedi siano per dimming, ecc., ma non ho un laptop qui, quindi non ne sono sicuro.

    
risposta data 26.09.2013 - 16:38
fonte
1

Grazie, sulla base del suggerimento di ipmcc, ho creato l'one-liner che emette un valore booleano.

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

Leggi altre domande sui tag