#!/usr/bin/env bash
# Backlight control with a dunst OSD.  usage: brightness up|down|set <n>
set -uo pipefail

STEP="${BRIGHTNESS_STEP:-5}"
MIN=1     # never go fully dark — that looks like a crash
ID=2594

command -v brightnessctl >/dev/null || { echo "brightnessctl not found" >&2; exit 1; }

pct() { brightnessctl -m | awk -F, '{gsub(/%/,"",$4); print $4}'; }

case "${1:-}" in
  up)   brightnessctl -q set "${STEP}%+" ;;
  down) brightnessctl -q set "${STEP}%-" ;;
  set)  brightnessctl -q set "${2:?need a percentage}%" ;;
  ""|-h|--help) echo "usage: brightness up|down|set <percent>"; exit 0 ;;
  *)    echo "unknown action: $1" >&2; exit 2 ;;
esac

# Enforce the floor
current="$(pct)"
if (( current < MIN )); then
  brightnessctl -q set "${MIN}%"
  current="$MIN"
fi

command -v dunstify >/dev/null && \
  dunstify -a osd -u low -r "$ID" -h "int:value:$current" \
           -i display-brightness "Brightness  ${current}%"
