Avvia l'app con Automator quando il sistema è inattivo

1

La mia idea è di abbassare la luminosità del display quando il sistema è inattivo per 10 secondi e con una sequenza di tasti o un'attività del trackpad tornare all'originale (voglio conservare la batteria automaticamente e non usare uno screen saver - Ho bisogno di monitorare alcune attività ma con luce di visualizzazione bassa). Non sono riuscito a trovare un'applicazione di questo tipo, quindi ho deciso di creare una soluzione con Automator.

Ho trovato l'applicazione Shady che può offuscare la visualizzazione all'avvio e se è attiva (davanti) con la sequenza di tasti Q verrà chiusa.

Quindi, come posso creare uno script in Automator per avviare Shady quando il sistema è inattivo per 10 secondi e quindi attendere l'eventuale pressione di un tasto o del trackpad, quindi inviare il tasto q per uscire da Shady? Lo script dovrebbe essere sempre attivo, quindi quando si verifica un altro tempo di inattività di 10 secondi, avvia di nuovo Shady.

    
posta Jovan Popovic 11.10.2013 - 16:08
fonte

1 risposta

0

Se vuoi risparmiare effettivamente energia, usa luminosità .c al posto di Shady. Shady non riduce i livelli di retroilluminazione dei display e gli LCD di solito richiedono una quantità di energia simile per visualizzare pixel scuri e luminosi.

Puoi vedere il tempo trascorso dall'ultima azione del dispositivo di input umano (tastiera o mouse) con ioreg :

ioreg -c IOHIDSystem | awk '/HIDIdleTime/{print $NF/1000000000;exit}'

Se stai ad esempio creando un video con VLC, pmset -g assertions conterrà una riga come questa:

   PreventUserIdleSystemSleep     1

Quindi potresti usare uno script come questo:

#!/bin/bash

while sleep 0.5; do
  idle=$(ioreg -c IOHIDSystem | awk '/HIDIdleTime/{printf "%i",$NF/1000000000;exit}')
  current=$(brightness -l | awk '/display 0: brightness/{print $NF}')
  if [[ $idle -ge 10 ]] && pmset -g assertions | grep -q 'PreventUserIdleDisplaySleep *0'; then
    [[ $current != 0.000000 ]] && old=$current
    brightness 0
  else
    [[ $old ]] && brightness $old
  fi
done

Non ha senso eseguire oltre dieci nuovi processi ogni secondo però.

    
risposta data 12.10.2013 - 09:25
fonte

Leggi altre domande sui tag