dotfiles/scripts/.local/bin/control-brightness

54 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env sh
# Brightness control script using xbacklight
# Will use notify-send to create brightness notifications, if dunst is used
# or the notification daemon supports tag stacks, will automatically update
# the same notifications and not create new ones.
#
# inspired from https://gist.github.com/Blaradox/030f06d165a82583ae817ee954438f2e
usage() {
echo "usage: control-brightness up|down [step], where step can be any int value
or: control-brightness set target, where target can be an int value 0-100"
}
direction=$1
step=${2:-10}
get_brightness() {
xbacklight -get | cut -d. -f1
}
send_notification() {
icon="preferences-system-brightness-lock"
brightness=$(get_brightness)
if type dunstify 1>/dev/null 2>/dev/null; then
notcmd="dunstify -h string:x-dunst-stack-tag:brightness"
else
notcmd="notify-send -h string:x-dunst-stack-tag:brightness"
fi
$notcmd -a "changeVolume" -u low -i "$icon" \
-h int:value:"$brightness" "Brightness: $brightness%"
}
case $direction in
up)
xbacklight -inc "$step"
send_notification
;;
down)
xbacklight -dec "$step"
send_notification
;;
set)
if [ -z "$step" ]; then
echo "set option requires target brightness to be specified."
return 1
fi
xbacklight -set "$step"
send_notification
;;
*)
echo "usage: control-brightness up|down [step], where step can be any int value"
;;
esac