#!/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