31 lines
934 B
Bash
31 lines
934 B
Bash
#!/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}%"
|