#!/bin/sh

# default
step=+5

video_card=$(ls -1 /sys/class/backlight/)

while getopts s: flag
do
    case "${flag}" in
        s) step=${OPTARG};;
        *) echo "Usage: -s <-value/+value>";;
    esac
done

if [ -n "$video_card" ] && [ -d "/sys/class/backlight/$video_card" ]; then
    step=$(echo "$step" | sed 's/+//g')
    cur_brightness=$(cat /sys/class/backlight/"$video_card"/brightness)
    max_brightness=$(cat /sys/class/backlight/"$video_card"/max_brightness)

    step_c=$(( (step*max_brightness)/100 ))
    # step_c=$(echo "scale=2; $step*($max_brightness/100)" | bc -l | sed 's/\..*$//')
    new_brightness=$((cur_brightness + step_c))

    if [ "$new_brightness" -le "0" ]; then
        echo "0" > /sys/class/backlight/"$video_card"/brightness
    elif [ "$new_brightness" -ge "$max_brightness" ] ; then
        echo "$max_brightness" > /sys/class/backlight/"$video_card"/brightness
    else
        echo "$new_brightness" > /sys/class/backlight/"$video_card"/brightness
    fi

else
    sign=$(printf "%s" "$step" | cut -c1)
    value=$(printf "%s" "$step" | sed 's/^[-+]//')

    ddcutil --disable-dynamic-sleep --noverify --skip-ddc-checks --sleep-multiplier 0.1 --bus 12 setvcp 10 "$sign" "$value"
fi