#! /bin/ksh AUMIX=/usr/bin/aumix OSDCAT="/usr/bin/osd_cat -o 32 -A center -d 2 -l 1 -c green -O 1 -u black -s 10 -S grey20" osdfont='-dejavu-dejavu serif-medium-r-normal--0-300-0-0-p-0-iso10646-1' useosd= if [ "$1" = "-d" ]; then useosd=true shift fi val=${1:-query} [ "$val" = q ] && val=query dev=${2:-v} case "$dev" in [vbtswplmcxWrio123]) ;; *) echo "Error: must specify one of vbtswplmcxWrio123 (default w)" >&2 [ "$val" = query ] && echo -1 exit 1 ;; esac level=$($AUMIX -"$dev" q) level=${level#* } level=${level%%,*} case "$level" in *[!0-9]*) printf "Error: level not a number (%s)\n" "$level" >&2 [ "$val" = query ] && echo -1 exit 1 ;; "") echo "Error: level not found" >&2 [ "$val" = query ] && echo -1 exit 1 ;; esac case "$val" in [0-9] | [0-9][0-9] | [0-9][0-9][0-9] ) newlevel=$((10#$val)) ;; +) newlevel=$((level + 1)) ;; -) newlevel=$((level - 1)) ;; ++) newlevel=$((level + 5)) ;; --) newlevel=$((level - 5)) ;; +[0-9] | +[0-9][0-9]) newlevel=$((level + 10#${val#+})) ;; -[0-9] | -[0-9][0-9]) newlevel=$((level - 10#${val#-})) ;; query) newlevel=$level; printf "%d\n" "$level" ;; *) printf "Invalid setting: \"%s\"\n" "$val" >&2 exit 1 ;; esac if [ "$newlevel" -lt 0 ]; then newlevel=0 fi if [ "$newlevel" -gt 100 ]; then newlevel=100 fi if [ "$newlevel" -ne "$level" ]; then if [ "$useosd" ]; then pkill osd_cat $OSDCAT -f "$osdfont" -b percentage -P "$newlevel" & fi $AUMIX -"$dev" "$newlevel" fi