#!/usr/bin/bash

LIGHT_SENSOR="/sys/bus/iio/devices/iio:device0/in_illuminance_raw"
KBD_BRIGHTNESS="/sys/class/leds/chromeos::kbd_backlight/brightness"

current=$(cat "$KBD_BRIGHTNESS")
raw=$(cat "$LIGHT_SENSOR")

# This mapping assumes:
# - < 5     → Very dark → Max backlight
# - 5-10    → Dark      → Medium
# - 10-15   → Dim       → Low
# - ≥ 15    → Bright    → Off
if [ "$raw" -lt 5 ]; then
  target=100
elif [ "$raw" -lt 10 ]; then
  target=60
elif [ "$raw" -lt 15 ]; then
  target=20
else
  target=0
fi

diff=$(( target - current ))
abs_diff=${diff#-}

# Only update if difference is noticeable
if [ "$abs_diff" -lt 3 ]; then
  exit 0
fi

step=5
if [ "$current" -lt "$target" ]; then
  for ((b=current+step; b<=target; b+=step)); do
    echo "$b" | sudo tee "$KBD_BRIGHTNESS" > /dev/null
    sleep 0.05
  done
else
  for ((b=current-step; b>=target; b-=step)); do
    echo "$b" | sudo tee "$KBD_BRIGHTNESS" > /dev/null
    sleep 0.05
  done
fi
