43 lines
1.3 KiB
Plaintext
43 lines
1.3 KiB
Plaintext
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Adjust keyboard backlight brightness using available steps.
|
||
|
|
# Usage: omarchy-brightness-keyboard <up|down|cycle>
|
||
|
|
|
||
|
|
direction="${1:-up}"
|
||
|
|
|
||
|
|
# Find keyboard backlight device (look for *kbd_backlight* pattern in leds class).
|
||
|
|
device=""
|
||
|
|
for candidate in /sys/class/leds/*kbd_backlight*; do
|
||
|
|
if [[ -e $candidate ]]; then
|
||
|
|
device="$(basename "$candidate")"
|
||
|
|
break
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
if [[ -z $device ]]; then
|
||
|
|
echo "No keyboard backlight device found" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Get current and max brightness to determine step size.
|
||
|
|
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).
|
||
|
|
if [[ $direction == "cycle" ]]; then
|
||
|
|
new_brightness=$(( (current_brightness + 1) % (max_brightness + 1) ))
|
||
|
|
elif [[ $direction == "up" ]]; then
|
||
|
|
new_brightness=$((current_brightness + 1))
|
||
|
|
(( new_brightness > max_brightness )) && new_brightness=$max_brightness
|
||
|
|
else
|
||
|
|
new_brightness=$((current_brightness - 1))
|
||
|
|
(( new_brightness < 0 )) && new_brightness=0
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Set the new brightness.
|
||
|
|
brightnessctl -d "$device" set "$new_brightness" >/dev/null
|
||
|
|
|
||
|
|
# Use SwayOSD to display the new brightness setting.
|
||
|
|
percent=$((new_brightness * 100 / max_brightness))
|
||
|
|
station-swayosd-kbd-brightness "$percent"
|