1 votes

Lancer l'application avec Automator lorsque le système est inactif

Mon idée est de diminuer la luminosité de l'écran lorsque le système est inactif pendant 10 secondes, et avec une pression de touche ou une activité du trackpad revenir à l'original (je veux préserver la batterie automatiquement et ne pas utiliser de screensaver - j'ai besoin de surveiller certaines activités mais avec une faible luminosité de l'écran). Je n'ai pas trouvé d'application qui fait cela, donc j'ai décidé de créer une solution avec Automator.

J'ai trouvé l'application Shady qui peut diminuer la luminosité de l'écran lorsqu'elle démarre et si elle est active (en premier plan) avec la touche Q elle se quittera.

Alors, comment puis-je créer un script dans Automator pour démarrer Shady lorsque le système est inactif pendant 10 secondes et ensuite attendre une pression de touche ou une activité du trackpad, puis envoyer la touche q pour quitter Shady ? Le script devrait être actif tout le temps, donc lorsque 10 secondes d'inactivité se produisent à nouveau, démarrer Shady à nouveau.

1voto

Fuzzy Purple Monkey Points 702

Si vous voulez vraiment économiser de l'énergie, utilisez brightness.c au lieu de Shady. Shady ne réduit pas les niveaux de rétroéclairage des écrans, et les LCD nécessitent généralement une quantité similaire d'énergie pour afficher des pixels sombres et lumineux.

Vous pouvez voir le temps écoulé depuis la dernière action sur un périphérique d'entrée humain (clavier ou souris) avec ioreg:

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

Si vous regardez par exemple une vidéo avec VLC, pmset -g assertions contiendra une ligne comme celle-ci:

   PreventUserIdleSystemSleep     1

Vous pourriez donc utiliser un script comme celui-ci:

#!/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

Cependant, il est absurde d'exécuter plus de dix nouveaux processus chaque seconde.

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