#!/bin/sh
# Built-in screen brightness across EVERY backlight device. brightnessctl alone only drives the
# first one, and some kernels (linux-surface, hybrid GPUs) expose a dead acpi_video0 next to the
# real panel, which leaves the screen stuck dim.
#   mood-backlight get          -> percent (raw panel device preferred)
#   mood-backlight set 40%|5%+|5%-
pick() {
  for t in raw platform firmware; do
    for d in /sys/class/backlight/*; do
      [ -e "$d/type" ] && [ "$(cat "$d/type")" = "$t" ] && { basename "$d"; return; }
    done
  done
}
case "$1" in
  get)
    d=$(pick); [ -n "$d" ] || exit 1
    brightnessctl -m -d "$d" | cut -d, -f4 | tr -d % ;;
  set)
    d=$(pick); [ -n "$d" ] || exit 1
    brightnessctl -q -n 1 -d "$d" set "$2" || exit 1
    p=$(brightnessctl -m -d "$d" | cut -d, -f4)
    for o in /sys/class/backlight/*; do
      o=$(basename "$o"); [ "$o" = "$d" ] || brightnessctl -q -n 1 -d "$o" set "$p"
    done ;;
  floor)
    # login: a screen left (or restored by a new kernel) below 15% is brought back to 40%
    v=$("$0" get) || exit 0
    [ "$v" -lt 15 ] 2>/dev/null && exec "$0" set 40%
    exit 0 ;;
  *) echo "usage: mood-backlight get | floor | set <N%|N%+|N%->" >&2; exit 2 ;;
esac
