eddy_em: (hram nauki)
eddy_em ([personal profile] eddy_em) wrote2013-05-07 12:17 am

Скриптик для авторегулировки яркости экрана

Решил я повесить себе на "горячие клавиши" изменение яркости экрана: чтобы при отключении света не лупасило сильно по глазам. Это — простая штука (к сожалению, яркость на nVidia можно регулировать лишь программно, т.к. блоб кривоват), которая реализуется двумя строчками в ~/.icewm/keys:
key "XF86Launch5" xrandr --output HDMI-0 --brightness .6
key "XF86Launch6" xrandr --output HDMI-0 --brightness 1




Однако, этого мне было мало, и я набросал простенький скриптик, который можно запускать по at или cron:
#!/bin/bash
#
# Change light of screen depending on common lightness
#
at now + 1 minute -M -f /Data/scripts/Screen_light1
FILE=/tmp/$$.jpg
ffmpeg -sameq -r 5 -f video4linux2 -s 640x480 -i /dev/video0 -ss 00:00:03.8 -t 00:00:00.1 -f image2 $FILE
BRI=$(convert $FILE -format "%[mean]" info:)
rm -f $FILE
BRILVL=$(echo "a=l($BRI)-8; if(a>1) a=1 else if(a<0.6) a=0.6; print a;" | bc -ql)
#echo "BRI: $BRI, LVL:  $BRILVL"
xrandr --output HDMI-0 --brightness $BRILVL


Суть скриптика в следующем: ffmpeg захватывает с веб-камеры 1 кадр (с задержкой, чтобы вебка успела выйти в авторежим — хотя, для чистоты эксперимента лучше будет при помощи v4l2ctl отключить всю автоматизацию у вебки, тогда и задержка не нужна будет), затем ImageMagic вычисляет некую среднюю яркость по этому изображению, ну а потом при помощи bc мы на основе средней яркости вычисляем, какую яркость монитора следует задать на вход xrandr.

Потестирую завтра еще и при свете дня.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org