summaryrefslogtreecommitdiffstats
path: root/bin/bright
diff options
context:
space:
mode:
Diffstat (limited to 'bin/bright')
-rwxr-xr-xbin/bright80
1 files changed, 80 insertions, 0 deletions
diff --git a/bin/bright b/bin/bright
new file mode 100755
index 0000000..04c83f5
--- /dev/null
+++ b/bin/bright
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+set -eu
+
+get_b()
+{
+ # VCP 10 C 100 100
+ read -r vcp feat c val max <<-EOF
+ $(ddcutil -t getvcp 10)
+ EOF
+
+ printf '%s' ${val}
+ return 0
+}
+
+set_b()
+{
+ local b=${1}
+ shift 1
+
+ ddcutil setvcp 10 ${b}
+
+ return 0
+}
+
+inc_b()
+{
+ local d=${1}
+ shift 1
+ local b=
+
+ b=$(($(get_b) + ${d}))
+ if [ ${b} -gt 100 ]; then
+ b=100
+ elif [ ${b} -lt 0 ]; then
+ b=0
+ fi
+
+ set_b ${b}
+}
+
+usage()
+{
+ printf 'Usage: %s {<direction>|<value>}\n' "${0}"
+ printf '\n'
+ printf 'Where <direction> is any word beginning with (in any case):\n'
+ printf ' * "U" for up\n'
+ printf ' * "D" for down\n'
+ printf 'And <value> is any integer between 0 and 100 inclusive\n'
+
+ return 0
+}
+
+main()
+{
+ local dir=
+
+ if [ ${#} -ne 1 ]; then
+ usage 1>&2
+ return 1
+ fi
+
+ dir="${1}"
+ shift 1
+
+ case "${dir}" in
+ [Uu]*) inc_b 20;;
+ [Dd]*) inc_b -20;;
+ *[!0-9]* | '')
+ usage 1>&2
+ return 1
+ ;;
+ *)
+ set_b ${dir}
+ esac
+
+ return 0
+}
+
+main "${@}"