Initial Fedora brightness automation setup

This commit is contained in:
jan
2026-04-25 13:20:58 +02:00
commit dc932b8f64
12 changed files with 1092 additions and 0 deletions

65
bin/brightness-sync-hg342pcb Executable file
View File

@@ -0,0 +1,65 @@
#!/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