dotfiles

Mahdi's dotfiles
git clone git://mahdi.pw/dotfiles.git
Log | Files | Refs | Submodules | README | LICENSE

bright (2679B)


      1 #!/bin/sh
      2 # Notes for linux users:
      3 #	Add backlight rule to change your card's file permissions
      4 #	to your user, replace [USER] with your user & [CARD] with
      5 #	your brightness card.
      6 #	/etc/udev/rules.d/backlight.rules:
      7 #	----------------------------------
      8 #	RUN+="/bin/chown [USER] /sys/class/backlight/[CARD]/brightness"
      9 
     10 BRIGHTNESS_ACT="get"
     11 BRIGHTNESS_STEPS="5"
     12 BRIGHTNESS_NOTIF=0
     13 
     14 while getopts ':ngidos:c:' flag; do
     15 	case "${flag}" in
     16 		n) BRIGHTNESS_NOTIF=1   ;;
     17 		g) BRIGHTNESS_ACT="get"	;;
     18 		i) BRIGHTNESS_ACT="inc"	;;
     19 		d) BRIGHTNESS_ACT="dec"	;;
     20 		o) BRIGHTNESS_ACT="opt"	;;
     21 		s) BRIGHTNESS_STEPS="${OPTARG}" ;;
     22 		c) BRIGHTNESS_CARD="${OPTARG}"	;;
     23 		*)
     24 			printf 'Usage: %s [-g] [-d] [-u] [-o] [-c card] [-s brightness steps (in %%)]\n' "$0"
     25 			printf '  -g: get brightness\n'
     26 			printf '  -i: increase brightness\n'
     27 			printf '  -d: decrease brightness\n'
     28 			printf '  -o: optimal brightness\n'
     29 			exit 2
     30 		;;
     31 	esac
     32 done
     33 
     34 KERNEL=$(uname)
     35 
     36 case "$KERNEL" in
     37 	Linux*)
     38 		BRIGHTNESS_CARD=$(find /sys/class/backlight -depth | head -n 1)
     39 		BRIGHTNESS_MAX=$(cat "${BRIGHTNESS_CARD}/max_brightness")
     40 		BRIGHTNESS=$(cat "${BRIGHTNESS_CARD}/brightness")
     41 		BRIGHTNESS=$((BRIGHTNESS*100/BRIGHTNESS_MAX))
     42 		BRIGHTNESS=${BRIGHTNESS%.*}
     43 	;;
     44 	FreeBSD*)
     45 		BRIGHTNESS_MAX=100
     46 		BRIGHTNESS=$(backlight | cut -d ' ' -f 2)
     47 	;;
     48 	OpenBSD*)
     49 		BRIGHTNESS_MAX=100
     50 		BRIGHTNESS=$(apm -l)
     51 	;;
     52 esac
     53 
     54 change_bright() {
     55 	BRIGHTNESS_NEW=$1
     56 	BRIGHTNESS_NEW=$((BRIGHTNESS_NEW * BRIGHTNESS_MAX / 100))
     57 	[ "$BRIGHTNESS_NEW" -gt "$BRIGHTNESS_MAX" ] && BRIGHTNESS_NEW=$BRIGHTNESS_MAX
     58 	[ "$BRIGHTNESS_NEW" -lt "1" ] && BRIGHTNESS_NEW=1
     59 	
     60 	case "$KERNEL" in
     61 		Linux*)
     62 			echo "$BRIGHTNESS_NEW" > "${BRIGHTNESS_CARD}/brightness"
     63 		;;
     64 		FreeBSD*)
     65 			backlight "$BRIGHTNESS_NEW"
     66 		;;
     67 		OpenBSD*)
     68 			apm -s "$BRIGHTNESS_NEW"
     69 		;;
     70 	esac
     71 }
     72 
     73 main() {
     74 	case "$BRIGHTNESS_ACT" in
     75 		get)
     76 			echo "$BRIGHTNESS"
     77 		;;
     78 		inc)
     79 			BRIGHTNESS_NEW=$((BRIGHTNESS+BRIGHTNESS_STEPS))
     80 		;;
     81 		dec)
     82 			BRIGHTNESS_NEW=$((BRIGHTNESS-BRIGHTNESS_STEPS))
     83 		;;
     84 		opt)
     85 			TMPFILE=$(mktemp /tmp/backlight-optimal-XXXXXXX.jpg)
     86 			ffmpeg -y -loglevel quiet -f v4l2 -i /dev/video0 -frames:v 1 -f image2 "$TMPFILE"
     87 			AVG=$(convert "$TMPFILE" -format "%[mean]" info:)
     88 			rm "$TMPFILE"
     89 			BRIGHTNESS_NEW=$(printf '%s' "$AVG" | awk '{print int($1/65535*100+30)}')
     90 		;;
     91 	esac
     92 
     93 	[ "$BRIGHTNESS_ACT" = "get" ] || change_bright "$BRIGHTNESS_NEW"
     94 	
     95 	if [ "$BRIGHTNESS_NOTIF" -eq 1 ]; then
     96 		BRIGHTNESS=$((BRIGHTNESS_NEW*100/BRIGHTNESS_MAX))
     97 		if [ "$BRIGHTNESS" -le 25 ]; then
     98 			BRIGHTNESS_ICON=""
     99 		elif [ "$BRIGHTNESS" -le 60 ]; then
    100 			BRIGHTNESS_ICON=""
    101 		else
    102 			BRIGHTNESS_ICON=""
    103 		fi
    104 		notify "$BRIGHTNESS_ICON $BRIGHTNESS"
    105 	fi
    106 }
    107 
    108 main