#!/bin/sh

##########################################################################################
# NOTE: you need to be member of "video" group or maybe "input" group for this to work.. #
##########################################################################################

########
# MAIN #
########

# dir where the backlight component resides..
root_dir="/sys/class/backlight"

#########################################################################
# brighness directory can be different per device, check above root_dir #
#########################################################################
#for intel
#backlight_dir="intel_backlight0"

#for acpi (generic)
#backlight_dir="acpi_backlight0"

#for amd
backlight_dir="amdgpu_bl1"

#file read
brightness_file="$root_dir/$backlight_dir/brightness"
current=$(cat "$brightness_file")
max=$(cat "$root_dir/$backlight_dir/max_brightness")

#runtime values
opr=$1 # [+|-], required
increment=${2:-5} # [ default:5, optional] "around 2% brightness"

#shellcheck disable=SC2004
[ "$opr" = "s" ] && printf "%s" "$((${current}00/${max}))" && exit 0

#validation
(! printf '%s' "$opr" | grep -qE '[+-]') && notify-send -u critical "Unknown Operator, use only + or -" && exit 1 

#shellcheck disable=SC2086,SC1102
new="$(( $current $opr $increment ))"

#constraints
[ "$new" -ge "$max" ] && new=$max
[ "$new" -le 0 ] && new=0

#new brightness value
printf '%s' "$new" > "$brightness_file"

#shellcheck disable=SC2004
notify-send -i "lol" "☀️  $((${new}00/${max}))" -t 1000 -h "string:x-canonical-private-synchronous:${0##*/}"
