dotfiles/.config/hypr/scripts/Brightness.sh
2025-12-15 18:20:18 +01:00

69 lines
No EOL
1.5 KiB
Bash
Executable file

#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# Script for Monitor backlights (if supported) using brightnessctl
iDIR="$HOME/.config/swaync/icons"
notification_timeout=1000
step=10 # INCREASE/DECREASE BY THIS VALUE
# Get current brightness as an integer (without %)
get_brightness() {
brightnessctl -m | cut -d, -f4 | tr -d '%'
}
# Determine the icon based on brightness level
get_icon_path() {
local brightness=$1
local level=$(( (brightness + 19) / 20 * 20 )) # Round up to next 20
if (( level > 100 )); then
level=100
fi
echo "$iDIR/brightness-${level}.png"
}
# Send notification
send_notification() {
local brightness=$1
local icon_path=$2
notify-send -e \
-h string:x-canonical-private-synchronous:brightness_notif \
-h int:value:"$brightness" \
-u low \
-i "$icon_path" \
"Screen" "Brightness: ${brightness}%"
}
# Change brightness and notify
change_brightness() {
local delta=$1
local current new icon
current=$(get_brightness)
new=$((current + delta))
# Clamp between 5 and 100
(( new < 5 )) && new=5
(( new > 100 )) && new=100
brightnessctl set "${new}%"
icon=$(get_icon_path "$new")
send_notification "$new" "$icon"
}
# Main
case "$1" in
"--get")
get_brightness
;;
"--inc")
change_brightness "$step"
;;
"--dec")
change_brightness "-$step"
;;
*)
get_brightness
;;
esac