Files
Fedora_Brightness_Automatio…/bin/brightness-sync-hg342pcb

66 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
CONFIG="${BRIGHTNESS_AUTOMATION_CONFIG:-$HOME/.config/brightness-automation/env}"
if [[ -f "$CONFIG" ]]; then
# shellcheck disable=SC1090
source "$CONFIG"
fi
MODEL="${BRIGHTNESS_DDCUTIL_MODEL:-HG342PCB}"
DISPLAY_NUM="${BRIGHTNESS_DDCUTIL_DISPLAY:-1}"
BUS_NUM="${BRIGHTNESS_DDCUTIL_BUS:-16}"
BACKLIGHT_PATH="${BRIGHTNESS_SYNC_BACKLIGHT:-/sys/class/backlight/intel_backlight}"
INTERVAL="${BRIGHTNESS_SYNC_INTERVAL:-1}"
MIN_PERCENT="${BRIGHTNESS_SYNC_MIN_PERCENT:-1}"
brightness_percent() {
local current max percent
current="$(<"${BACKLIGHT_PATH}/brightness")"
max="$(<"${BACKLIGHT_PATH}/max_brightness")"
percent="$(( (current * 100 + max / 2) / max ))"
if (( percent < MIN_PERCENT )); then
percent="$MIN_PERCENT"
elif (( percent > 100 )); then
percent=100
fi
printf '%s\n' "$percent"
}
run_ddcutil() {
if sudo -n ddcutil --bus "$BUS_NUM" getvcp 10 >/dev/null 2>&1; then
sudo -n ddcutil --bus "$BUS_NUM" "$@"
return
fi
if sudo -n ddcutil --display "$DISPLAY_NUM" getvcp 10 >/dev/null 2>&1; then
sudo -n ddcutil --display "$DISPLAY_NUM" "$@"
return
fi
if sudo -n ddcutil --model "$MODEL" getvcp 10 >/dev/null 2>&1; then
sudo -n ddcutil --model "$MODEL" "$@"
return
fi
echo "External ${MODEL} was not reachable via sudo -n ddcutil." >&2
return 1
}
last_percent=""
while true; do
percent="$(brightness_percent)"
if [[ "$percent" != "$last_percent" ]]; then
if run_ddcutil setvcp 10 "$percent" >/dev/null; then
last_percent="$percent"
fi
fi
sleep "$INTERVAL"
done