Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
executable file 69 lines (58 sloc) 1.96 KB
#!/usr/bin/env bash
set -e
# Question: Under what circumstances could there be two backlight listings?
# If I had this, I would set it up to adjust each in turn maybe. But I don't.
# Usage
if [ "$#" -eq 0 ]; then
cat <<-EOF
Usage: $0 [command]
Increase or decrease screen brightness at hardware level by steps of 10% of
max, as determined by the values under /sys/class/backlight/**. Limit values
to the range of 0 to max_brightness.
up | Increase brightness by 10%
down | Decrease brightness by 10%
current | Report current brightness
This script needs root access - sudo is an option, but you may also consider
allowing your user to run the script without a password prompt e.g.:
# Append to /etc/sudoers
Cmnd_Alias BRIGHT_CMDS=/bin/path/bright up, /bin/path/bright down
username ALL=(root) NOPASSWD: BRIGHT_CMDS
EOF
exit 1
fi
# Gather information
backlight_dir='/sys/class/backlight'
device_dir=$(ls "${backlight_dir}" | head -n 1)
if [ -z "$device_dir" ]; then
echo 'No backlight hardware is listed in /sys/class/backlight! Quitting.'
exit 1
fi
device_dir="${backlight_dir}/${device_dir}"
brightness_file="${device_dir}/brightness"
curr_brightness=$(cat "${brightness_file}")
max_brightness=$(cat "${device_dir}/max_brightness")
if [ "$1" == 'current' ]; then
echo $( echo "(${curr_brightness} / ${max_brightness}) * 100" | bc -l) \
| cut -d'.' -f 1
else
direction=$1
# Calculate
step=$(( $max_brightness / 10 ))
if [ $direction == 'up' ]; then
new_brightness=$(( $curr_brightness + $step ))
elif [ $direction == 'down' ]; then
new_brightness=$(( $curr_brightness - $step ))
else
echo 'Argument $1 must be either "up" or "down". Quitting.'
exit 1
fi
# Limit range
if [ "$new_brightness" -gt "$max_brightness" ]; then
new_brightness="$max_brightness"
fi
if [ "$new_brightness" -lt 0 ]; then
new_brightness=0
fi
# "Do it" - the emperor
echo $new_brightness > "${brightness_file}"
fi