about summary refs log tree commit diff stats
path: root/pkgs/by-name/br/brightness/brightness.sh
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-23 13:26:22 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-23 13:26:22 +0200
commit204731c0a69136c9cebcb54f1afecf5145e26bbe (patch)
treefc9132e5dc74e4a8e1327cdd411839a90f9410aa /pkgs/by-name/br/brightness/brightness.sh
parentrefactor(sys): Modularize and move to `modules/system` or `pkgs` (diff)
downloadnixos-config-204731c0a69136c9cebcb54f1afecf5145e26bbe.tar.gz
nixos-config-204731c0a69136c9cebcb54f1afecf5145e26bbe.zip
refactor(pkgs): Categorize into `by-name` shards
This might not be the perfect way to organize a package set --
especially if the set is not nearly the size of nixpkgs -- but it is
_at_ least a way of organization.
Diffstat (limited to 'pkgs/by-name/br/brightness/brightness.sh')
-rwxr-xr-xpkgs/by-name/br/brightness/brightness.sh80
1 files changed, 80 insertions, 0 deletions
diff --git a/pkgs/by-name/br/brightness/brightness.sh b/pkgs/by-name/br/brightness/brightness.sh
new file mode 100755
index 00000000..a7272279
--- /dev/null
+++ b/pkgs/by-name/br/brightness/brightness.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+help() {
+    cat <<EOF
+This is a system brightness manager
+
+USAGE:
+    $NAME up [VALUE] | down [VALUE]
+
+OPTIONS:
+    --help   | -h
+                                Output this help and exit.
+
+    --version   | -v
+                                Output the version and exit.
+
+COMMANDS:
+    up [VALUE]
+                                Increase the brightness by VALUE or 5%.
+
+    down [VALUE]
+                                Decrease the brightness by VALUE or 5%.
+
+ARGUMENTS:
+    VALUE := [[seq 0 100]]
+                                The amount to increase/decrease the brightness. In percentage
+EOF
+}
+
+BACKLIGHT="/sys/class/%BACKLIGHT_NAME"
+
+brightness() {
+    offset="$1"
+
+    max="$(cat $BACKLIGHT/max_brightness)"
+    cur="$(cat $BACKLIGHT/brightness)"
+    percentage="$(echo | awk --assign=cur="$cur" --assign=max="$max" '{printf cur / max}')"
+
+    new="$(echo | awk --assign=per="$percentage" --assign=offset="$offset" '{printf per + (offset / 10)}')"
+
+    output="$(echo | awk --assign=new="$new" --assign=max="$max" '{printf max * new}')"
+
+    msg "echo \"$output\" > $BACKLIGHT/brightness"
+}
+
+for arg in "$@"; do
+    case "$arg" in
+    "--help" | "-h")
+        help
+        exit 0
+        ;;
+    "--version" | "-v")
+        version
+        exit 0
+        ;;
+    esac
+done
+
+case "$1" in
+"up")
+    shift 1
+    value="5"
+    [ -n "$1" ] && value="$1"
+    brightness "+$value"
+    ;;
+"down")
+    shift 1
+    value="-5"
+    [ -n "$1" ] && value="$1"
+    brightness "-$value"
+    ;;
+*)
+    die "The command '$1' does not exist! See '--help' for a list"
+    ;;
+esac
+
+# vim: ft=sh