#!/bin/sh set -euf BACKLIGHT_PATH="/sys/class/backlight/amdgpu_bl0" errecho() { >&2 printf '%s\n' "$*" } usage() { errecho "\ Usage: ${0##*/} [-hq] [-s VALUE] [-c VALUE] No arguments: Print current brightness and exit If -s and -c are specified, -c takes priority -h show this help -q print current brightness to stdout and exit -s set brightness to VALUE -c change brightness by VALUE" exit 0 } nb= mb="$(cat "$BACKLIGHT_PATH/max_brightness")" cb="$(cat "$BACKLIGHT_PATH/brightness")" while getopts :hqs:c: OPT; do case $OPT in h) usage ;; q) echo "$cb" && exit 0 ;; s) nb=$OPTARG ;; c) nb=$((cb + OPTARG)) ;; *) exit 1 ;; esac done errecho "Current brightness: $cb" [ -z "$nb" ] && errecho "Brightness not changed" && exit 0 [ "$nb" -gt "$mb" ] && nb=$mb [ "$nb" -lt 0 ] && nb=0 printf '%s' "$nb" > "$BACKLIGHT_PATH/brightness" && errecho "New brightness: $nb" || errecho "Error setting brightness!"