|
#!/bin/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 |
brightness.sh: line 37: [: : integer expected
error when srolling down. likewise for the rest of the commands
What do i need to fix. (I have ddcutil installed, made it executable)