93 lines
2.2 KiB
Bash
Executable File
93 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Print error message for invalid arguments
|
|
print_error() {
|
|
cat <<"EOF"
|
|
Usage: ./brightnesscontrol.sh <action>
|
|
Valid actions are:
|
|
i -- <i>ncrease brightness [+2%]
|
|
d -- <d>ecrease brightness [-2%]
|
|
EOF
|
|
}
|
|
|
|
# Send a notification with brightness info
|
|
send_notification() {
|
|
brightness=$(brightnessctl info | grep -oP "(?<=\()\d+(?=%)")
|
|
notify-send -r 91190 "Brightness: ${brightness}%"
|
|
}
|
|
|
|
# Get the current brightness percentage and device name
|
|
get_brightness() {
|
|
brightness=$(brightnessctl -m | grep -o '[0-9]\+%' | head -c-2)
|
|
device=$(brightnessctl -m | head -n 1 | awk -F',' '{print $1}' | sed 's/_/ /g; s/\<./\U&/g') # Get device name
|
|
current_brightness=$(brightnessctl -m | head -n 1 | awk -F',' '{print $3}') # Get current brightness
|
|
max_brightness=$(brightnessctl -m | head -n 1 | awk -F',' '{print $5}') # Get max brightness
|
|
}
|
|
get_brightness
|
|
|
|
# Handle options
|
|
while getopts o: opt; do
|
|
case "${opt}" in
|
|
o)
|
|
case $OPTARG in
|
|
i) # Increase brightness
|
|
if [[ $brightness -lt 10 ]]; then
|
|
brightnessctl set +1%
|
|
else
|
|
brightnessctl set +2%
|
|
fi
|
|
send_notification
|
|
;;
|
|
d) # Decrease brightness
|
|
if [[ $brightness -le 1 ]]; then
|
|
brightnessctl set 1%
|
|
elif [[ $brightness -le 10 ]]; then
|
|
brightnessctl set 1%-
|
|
else
|
|
brightnessctl set 2%-
|
|
fi
|
|
send_notification
|
|
;;
|
|
*)
|
|
print_error
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
print_error
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Determine the icon based on brightness level
|
|
get_icon() {
|
|
if ((brightness <= 5)); then
|
|
icon=""
|
|
elif ((brightness <= 15)); then
|
|
icon=""
|
|
elif ((brightness <= 30)); then
|
|
icon=""
|
|
elif ((brightness <= 45)); then
|
|
icon=""
|
|
elif ((brightness <= 55)); then
|
|
icon=""
|
|
elif ((brightness <= 65)); then
|
|
icon=""
|
|
elif ((brightness <= 80)); then
|
|
icon=""
|
|
elif ((brightness <= 95)); then
|
|
icon=""
|
|
else
|
|
icon=""
|
|
fi
|
|
}
|
|
|
|
# Backlight module and tooltip
|
|
get_icon
|
|
module="${icon} ${brightness}%"
|
|
|
|
tooltip="Device Name: ${device}"
|
|
tooltip+="\nBrightness: ${current_brightness} / ${max_brightness}"
|
|
|
|
echo "{\"text\": \"${module}\", \"tooltip\": \"${tooltip}\"}"
|