Files
nixconfig/modules/home/wayland/apps/eww/bar/scripts/brightness
T
2026-09-10 19:54:50 +02:00

35 lines
997 B
Bash
Executable File

#!/usr/bin/env bash
# Backlight brightness (first device under /sys/class/backlight). Refreshes
# on backlight udev events, which also fire for the hardware keys.
#
# brightness status loop (deflisten)
# brightness set PERCENT
dev=""
for d in /sys/class/backlight/*; do
[[ -e $d ]] && { dev=${d##*/}; break; }
done
state() {
[[ -n $dev ]] || { printf '{"percent":0,"available":false}'; return; }
local max cur
max=$(<"/sys/class/backlight/$dev/max_brightness")
cur=$(cat "/sys/class/backlight/$dev/actual_brightness" 2>/dev/null \
|| cat "/sys/class/backlight/$dev/brightness")
printf '{"percent":%d,"available":true}' "$(((cur * 100 + max / 2) / max))"
}
refresh() { emit "$(state)"; }
_bl_events() { exec udevadm monitor --udev --subsystem-match=backlight; }
case ${1:-} in
set) [[ -n $dev ]] && brightnessctl -q -d "$dev" set "${2%.*}%" ;;
*)
refresh
[[ -n $dev ]] || exit 0
mux_init
mux_add _bl_events
mux_loop refresh
;;
esac