#!/bin/sh # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU Affero General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more # details. main() { # Handle opts while getopts ":h" opt do case "$opt" in h) usage && exit 0 ;; *) printf "Invalid option passed: %s\n" "$OPTARG" >&2 ;; esac done shift $(( OPTIND - 1 )) [ $# -lt 1 ] && usage && exit 1 case "$1" in inc) brightnessctl set +${2:-5}% notify="Brightness increased to $(brightness_level)%" ;; dec) if [ $(brightness_level) -lt $(( ${2:-5} + 1 )) ] then brightnessctl set 1 else brightnessctl set ${2:-5}%- fi notify="Brightness lowered to $(brightness_level)%" ;; set) [ -z "$2" ] && usage && exit 1 brightnessctl set $2% notify="Brightness set to $(brightness_level)%" ;; esac notify-send -n 57492 -s -t 2 -i "$(brightness_icon)" "Backlight" "$notify" } brightness_level() { awk "BEGIN { printf(\"%d\", ($(brightnessctl get) / $(brightnessctl max)) * 100) }" } brightness_icon() { [ $(brightness_level) -lt 10 ] && printf "notification-display-brightness-off" && return [ $(brightness_level) -lt 35 ] && printf "notification-display-brightness-low" && return [ $(brightness_level) -lt 70 ] && printf "notification-display-brightness-medium" && return [ $(brightness_level) -lt 95 ] && printf "notification-display-brightness-high" && return printf "notification-display-brightness-full" } usage() { cat < Alter the backlight intensity. Subcommands: inc Increase the volume by level, defaults to 5. dec Decrease the volume by level, defaults to 5. set Set the volume to level. Options: -h Show this help text and exit. EOF } main "$@"