Files
hyprland/config/ags/scripts/backlight.sh
T
2024-06-26 00:10:21 +05:45

89 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
LOCKFILE=/tmp/smooth_backlight.lock
BRIGHTNESS=/tmp/set_backlight
smooth() {
if [ -n "$1" ]; then
rounded_value=$(echo "scale=0; $1/1" | bc)
echo $rounded_value > $BRIGHTNESS
else
echo "Not enough arguments"
exit 1
fi
if [ -e "$LOCKFILE" ] && kill -0 "$(cat $LOCKFILE)"; then
echo "locked"
exit 0
fi
trap "rm -f $LOCKFILE; exit" INT TERM EXIT
echo $$ > "$LOCKFILE"
smooth_brightness() {
local max_brightness=$(brightnessctl m)
local step=$((max_brightness / 100))
while true; do
local target_brightness=$(cat $BRIGHTNESS)
local current_brightness=$(brightnessctl g)
target_brightness=$(echo "$max_brightness * $target_brightness / 100" | bc)
if [ $current_brightness -eq $target_brightness ]; then
exit 0
fi
while [ $current_brightness -ne $target_brightness ]; do
if [ $current_brightness -lt $target_brightness ]; then
current_brightness=$((current_brightness + step))
else
current_brightness=$((current_brightness - step))
fi
brightnessctl s $current_brightness > /dev/null 2>&1
sleep 0.001
local new_target_brightness=$(cat $BRIGHTNESS)
new_target_brightness=$(echo "$max_brightness * $new_target_brightness / 100" | bc)
if [ $new_target_brightness -ne $target_brightness ]; then
target_brightness=$new_target_brightness
break
fi
done
done
}
smooth_brightness
rm -f "$LOCKFILE"
trap - INT TERM EXIT
}
set() {
if [ -n "$1" ]; then
brightnessctl s $1
else
echo "Not enough arguments"
exit 1
fi
}
get() {
if [ -e "$LOCKFILE" ] && kill -0 "$(cat $LOCKFILE)"; then
local target_brightness=$(cat $BRIGHTNESS)
echo $target_brightness
exit 0
fi
brightness=$(brightnessctl g)
max_brightness=$(brightnessctl m)
percentage=$((100 * brightness / max_brightness))
echo "$percentage"
}
if [[ "$1" == "--smooth" ]]; then
smooth $2
elif [[ "$1" == "--set" ]]; then
set $2
elif [[ "$1" == "--get" ]]; then
get
fi