Initial Fedora brightness automation setup
This commit is contained in:
65
bin/brightness-sync-hg342pcb
Executable file
65
bin/brightness-sync-hg342pcb
Executable 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
|
||||
Reference in New Issue
Block a user