#!/bin/bash # omarchy:summary=Adjust keyboard backlight brightness using available steps. # omarchy:args= 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"