diff options
| author | ryukamish <[email protected]> | 2026-04-10 19:29:04 +0530 |
|---|---|---|
| committer | ryukamish <[email protected]> | 2026-04-10 19:29:04 +0530 |
| commit | 980f480919ee5d1345577700c4e0746aae6cb5d8 (patch) | |
| tree | 9c5ca3dab0cd257bd3b5dce697f7b11f3b9caff2 /waybar/brightness | |
| parent | 19ab9b28d743fcef5c14f895463df895cea2a80b (diff) | |
add: external monitor brightness module
Diffstat (limited to 'waybar/brightness')
| -rwxr-xr-x | waybar/brightness | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/waybar/brightness b/waybar/brightness new file mode 100755 index 0000000..138f5ee --- /dev/null +++ b/waybar/brightness @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +# --- CONFIGURATION --- +DISPLAY_NUM=1 +STEP=5 +STATE_FILE="/tmp/waybar_brightness.tmp" +# --------------------- + +# Function to send the actual DDC/CI command in the background +set_brightness_in_background() { + pkill -f "ddcutil.*setvcp 10" + (ddcutil --display $DISPLAY_NUM setvcp 10 $1) & +} + +# Ensure state file exists, or create it by querying the monitor +if [ ! -f "$STATE_FILE" ]; then + # ddcutil terse output format: "VCP 10 C <current> <max>" + initial_brightness=$(ddcutil --display $DISPLAY_NUM getvcp 10 -t 2>/dev/null | awk '{print $4}') + # Fallback to 50 if ddcutil fails or returns non-numeric + if ! [[ "$initial_brightness" =~ ^[0-9]+$ ]]; then + initial_brightness=50 + fi + echo "$initial_brightness" >"$STATE_FILE" +fi + +current=$(cat "$STATE_FILE") +# Validate current is a number, fallback to 50 if corrupted +if ! [[ "$current" =~ ^[0-9]+$ ]]; then + current=50 + echo "$current" >"$STATE_FILE" +fi + +case "$1" in +"get") + echo "$current" + ;; +"up") + new_brightness=$((current + STEP > 100 ? 100 : current + STEP)) + if [ "$current" -ne "$new_brightness" ]; then + echo "$new_brightness" >"$STATE_FILE" + set_brightness_in_background "$new_brightness" + fi + pkill -RTMIN+9 waybar # Can add whatever RTMIN+n you please, as long as it's an integer. Make sure the signals match between the config and script. + ;; +"down") + new_brightness=$((current - STEP < 0 ? 0 : current - STEP)) + if [ "$current" -ne "$new_brightness" ]; then + echo "$new_brightness" >"$STATE_FILE" + set_brightness_in_background "$new_brightness" + fi + pkill -RTMIN+9 waybar + ;; +"right_click") + new_brightness=0 + if [ "$current" -ne "$new_brightness" ]; then + echo "$new_brightness" >"$STATE_FILE" + set_brightness_in_background "$new_brightness" + fi + pkill -RTMIN+9 waybar + ;; +"left_click") + new_brightness=100 + if [ "$current" -ne "$new_brightness" ]; then + echo "$new_brightness" >"$STATE_FILE" + set_brightness_in_background "$new_brightness" + fi + pkill -RTMIN+9 waybar + ;; +esac |
