#!/usr/bin/env bash

BACKLIGHT="/sys/class/backlight"
DEV=$(ls "$BACKLIGHT" 2>/dev/null | head -n1)

gen_output() {
  if [ -z "$DEV" ]; then
    echo '{"percent":0,"available":false}'
    return
  fi
  max=$(cat "$BACKLIGHT/$DEV/max_brightness")
  cur=$(cat "$BACKLIGHT/$DEV/actual_brightness" 2>/dev/null || cat "$BACKLIGHT/$DEV/brightness")
  percent=$(awk -v c="$cur" -v m="$max" 'BEGIN{print int(c/m*100+0.5)}')
  printf '{"percent":%d,"available":true}\n' "$percent"
}

case "$1" in
  set)
    [ -z "$DEV" ] && exit 0
    brightnessctl -d "$DEV" set "${2}%" -q 2>/dev/null
    ;;
  *)
    gen_output
    [ -z "$DEV" ] && exit 0
    # Poll for changes every 2s (sysfs files don't support inotify reliably)
    while true; do sleep 2; gen_output; done
    ;;
esac
