| 1 | #! /bin/bash |
| 2 | |
| 3 | error() { |
| 4 | printf 'Error: %s\n' "$1" >&2 |
| 5 | exit 1 |
| 6 | } |
| 7 | |
| 8 | _get() { |
| 9 | sudo ddcutil getvcp 10 | grep -o ' current value = \+[0-9]\+' | awk '{print $4}' |
| 10 | } |
| 11 | |
| 12 | _set() { |
| 13 | sudo ddcutil setvcp 10 "$1" |
| 14 | } |
| 15 | |
| 16 | cmd="$1" |
| 17 | arg="$2" |
| 18 | |
| 19 | case "$cmd" in |
| 20 | '') _get;; |
| 21 | get) _get;; |
| 22 | set) |
| 23 | case "$arg" in |
| 24 | '') error 'expected a numeric argument between 0 and 100, given nothing!';; |
| 25 | *) |
| 26 | if [[ "$arg" =~ ^[0-9]+$ && "$arg" -gt -1 && "$arg" -lt 101 ]]; then |
| 27 | _set "$arg" |
| 28 | else |
| 29 | error "expected a numeric argument between 0 and 100, but given '$arg'" |
| 30 | fi |
| 31 | esac;; |
| 32 | *) error "unrecognized command: $cmd. Expect either get or set." |
| 33 | esac |