30 lines
729 B
Plaintext
30 lines
729 B
Plaintext
|
#!/usr/bin/env bash
|
||
|
|
||
|
function get_time_ms {
|
||
|
date -u +%s%3N
|
||
|
}
|
||
|
|
||
|
icons=("" "" "")
|
||
|
|
||
|
gen_output() {
|
||
|
icon="${icons[$(awk -v n="$(brillo)" 'BEGIN{print int(n/34)}')]}"
|
||
|
prcnt=$(brillo | xargs printf "%.*f\n" "0")
|
||
|
echo '{"percent": '$prcnt', "icon": "'$icon'"}'
|
||
|
}
|
||
|
|
||
|
if [[ $(brillo 2>/dev/stdout 1>/dev/null | head -n1 | awk '{print $1}') == "No" ]]; then
|
||
|
echo '{"percent": 100, "icon": ""}'
|
||
|
elif [ "$1" = "" ]; then
|
||
|
# initial
|
||
|
last_time=$(get_time_ms)
|
||
|
gen_output
|
||
|
|
||
|
udevadm monitor | rg --line-buffered "backlight" | while read -r _; do
|
||
|
current_time=$(get_time_ms)
|
||
|
delta=$((current_time - last_time))
|
||
|
if [[ $delta -gt 50 ]]; then
|
||
|
gen_output
|
||
|
last_time=$(get_time_ms)
|
||
|
fi
|
||
|
done
|
||
|
fi
|