diff --git a/bin/omarchy-brightness-keyboard b/bin/omarchy-brightness-keyboard index 8c35b0ee..7e7e738b 100755 --- a/bin/omarchy-brightness-keyboard +++ b/bin/omarchy-brightness-keyboard @@ -23,14 +23,19 @@ fi max_brightness="$(brightnessctl -d "$device" max)" current_brightness="$(brightnessctl -d "$device" get)" -# Calculate step as one unit (keyboards typically have discrete levels like 0-3). +# Calculate step as 10% of max brightness. Keyboards with many levels (e.g. 512) +# need larger steps; keyboards with few levels (e.g. 3) fall back to step=1. +step=$(( max_brightness / 10 )) +(( step < 1 )) && step=1 + if [[ $direction == "cycle" ]]; then - new_brightness=$(( (current_brightness + 1) % (max_brightness + 1) )) + new_brightness=$(( current_brightness + step )) + (( new_brightness > max_brightness )) && new_brightness=0 elif [[ $direction == "up" ]]; then - new_brightness=$((current_brightness + 1)) + new_brightness=$(( current_brightness + step )) (( new_brightness > max_brightness )) && new_brightness=$max_brightness else - new_brightness=$((current_brightness - 1)) + new_brightness=$(( current_brightness - step )) (( new_brightness < 0 )) && new_brightness=0 fi