#!/bin/sh
xbacklight -$1 $2 -time 50 -steps 5 2>/dev/null && exit

red=16
green=18
blue=1A
getbl() { bl=$(doas ddcutil getvcp $red | sed 's/.*current value =\s*\([0-9]*\).*/\1/'); } # Get brightness of red channel so we only have to grab one
case "$1" in
	dec)
		getbl
		[ $bl = 0 ] && exit
		bl=$(( bl - $2 ))
		[ $bl -lt 0 ] && bl=0
	;;
	inc)
		getbl
		[ $bl = 100 ] && exit
		bl=$(( bl + $2 ))
		[ $bl -gt 100 ] && bl=100
	;;
	set)
		bl=$2
		[ $bl -lt 0 ] || [ $bl -gt 100 ] && echo "Invalid value" && exit
	;;
	*)
		echo "Invalid option" && exit
	;;
esac
for color in $red $green $blue; do doas ddcutil setvcp $color $bl; done
#dwmsbup 20