mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
56 lines
1.7 KiB
Bash
Executable File
56 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Adjust keyboard backlight brightness using available steps.
|
|
# omarchy:args=<up|down|cycle|off|restore>
|
|
|
|
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
|
|
|
|
if [[ $direction == "off" ]]; then
|
|
brightnessctl -sd "$device" set 0 >/dev/null
|
|
exit 0
|
|
elif [[ $direction == "restore" ]]; then
|
|
brightnessctl -rd "$device" >/dev/null
|
|
exit 0
|
|
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 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 + step ))
|
|
(( new_brightness > max_brightness )) && new_brightness=0
|
|
elif [[ $direction == "up" ]]; then
|
|
new_brightness=$(( current_brightness + step ))
|
|
(( new_brightness > max_brightness )) && new_brightness=$max_brightness
|
|
else
|
|
new_brightness=$(( current_brightness - step ))
|
|
(( 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))
|
|
omarchy-swayosd-kbd-brightness "$percent"
|