#!/bin/sh # Parse arguments # ------------------------------------------------------------------------------------ BRIGHTNESS_DIR="/sys/class/backlight/*" SEND_NOTIFICATION=0 URGENCY="normal" INCREASE=0 DECREASE=0 SET=0 BRIGHTNESS=0 PARSED=$(getopt \ --options=hnu:i:d:s:p:N \ --longoptions=help,notification,urgency:,increase:,decrease:,set:,path:,no-notification \ --name "$0" \ -- \ "$@") if [ $? != 0 ]; then exit 2 fi eval set -- "$PARSED" while [ "$1" ]; do case "$1" in -h | --help) cat </dev/null } # Main Logic # ------------------------------------------------------------------------------------ # Determine the absolute new brightness level if [ $INCREASE -eq 1 ] || [ $DECREASE -eq 1 ] || [ $SET -eq 1 ]; then # If we're dealing with percentages, change to absolutes if echo "$BRIGHTNESS" | grep -qE '%$'; then numeric=$(echo "$BRIGHTNESS" | sed 's/.$//') absolute=$(echo "($BRIGHTNESS_MAX / 100) * $numeric" | bc -l) BRIGHTNESS=$(printf "%.0f" $absolute) fi # Get the new requested absolute brightness if [ $SET -eq 1 ]; then new_brightness=$BRIGHTNESS elif [ $DECREASE -eq 1 ]; then cur_brightness=$(cat $BRIGHTNESS_FILE) new_brightness=$(($cur_brightness - $BRIGHTNESS)) else cur_brightness=$(cat $BRIGHTNESS_FILE) new_brightness=$(($cur_brightness + $BRIGHTNESS)) fi # Ensure we respect max/min boundaries if [ $new_brightness -lt 0 ]; then new_brightness=0 elif [ $new_brightness -gt $BRIGHTNESS_MAX ]; then new_brightness=$BRIGHTNESS_MAX fi # Update the brightness set_brightness $new_brightness fi cur_brightness=$(cat $BRIGHTNESS_FILE) percent_brightness=$(echo "($cur_brightness / $BRIGHTNESS_MAX) * 100" | bc -l) percent_brightness_2f=$(printf "%.2f" $percent_brightness) percent_brightness_rounded=$(printf "%.0f" $percent_brightness) if [ $SEND_NOTIFICATION -eq 1 ]; then send_brightness_notify "$percent_brightness_rounded" "Level: $percent_brightness_rounded" fi echo "Brightness: ${percent_brightness_2f}% (absolute: $cur_brightness)"