From 0f4d3f1e05d7c760835c73ee7725f5c5c5cd1cb4 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 10 Jun 2024 14:32:51 +0200 Subject: [PATCH] Add brightness script --- .../wms/hyprland/config/keybinds.nix | 5 +- .../graphical/wms/hyprland/default.nix | 1 + .../packages/brightness/brightness.sh | 166 ++++++++++++++++++ .../hyprland/packages/brightness/default.nix | 6 + .../wms/hyprland/packages/default.nix | 1 + 5 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 home/programs/graphical/wms/hyprland/packages/brightness/brightness.sh create mode 100644 home/programs/graphical/wms/hyprland/packages/brightness/default.nix diff --git a/home/programs/graphical/wms/hyprland/config/keybinds.nix b/home/programs/graphical/wms/hyprland/config/keybinds.nix index 171791a..b79ff0c 100644 --- a/home/programs/graphical/wms/hyprland/config/keybinds.nix +++ b/home/programs/graphical/wms/hyprland/config/keybinds.nix @@ -38,7 +38,10 @@ # # Brightness control # - # TODO: requires script + "SUPER, Right, exec, brightness -i 5% -n" + "SUPER, Left, exec, brightness -d 5% -n" + ", XF86MonBrightnessUp, exec, brightness -i 5% -n" + ", XF86MonBrightnessDown, exec, brightness -d 5% -n" # diff --git a/home/programs/graphical/wms/hyprland/default.nix b/home/programs/graphical/wms/hyprland/default.nix index 1cc249b..cd89d71 100644 --- a/home/programs/graphical/wms/hyprland/default.nix +++ b/home/programs/graphical/wms/hyprland/default.nix @@ -18,6 +18,7 @@ in { home.packages = with pkgs; [ hyprland-swap-workspace hyprland-move-window + brightness ]; wayland.windowManager.hyprland = { diff --git a/home/programs/graphical/wms/hyprland/packages/brightness/brightness.sh b/home/programs/graphical/wms/hyprland/packages/brightness/brightness.sh new file mode 100644 index 0000000..e5a9fa2 --- /dev/null +++ b/home/programs/graphical/wms/hyprland/packages/brightness/brightness.sh @@ -0,0 +1,166 @@ +#!/bin/sh + +# Parse arguments +# ------------------------------------------------------------------------------------ +BRIGHTNESS_DIR="/sys/class/backlight/*" +SEND_NOTIFICATION=0 +URGENCY="normal" +INCREASE=0 +DECREASE=0 +SET=0 +BRIGHTNESS=0 + +PARSED=$(getopt \ + --options=hnu:i:d:s:p:N \ + --longoptions=help,notification,urgency:,increase:,decrease:,set:,path:,no-notification \ + --name "$0" \ + -- \ + "$@") + +if [ $? != 0 ]; then + exit 2 +fi + +eval set -- "$PARSED" + +while [ "$1" ]; do + case "$1" in + -h | --help) + cat </dev/null +} + +# Main Logic +# ------------------------------------------------------------------------------------ + +# Determine the absolute new brightness level +if [ $INCREASE -eq 1 ] || [ $DECREASE -eq 1 ] || [ $SET -eq 1 ]; then + # If we're dealing with percentages, change to absolutes + if echo "$BRIGHTNESS" | grep -qE '%$'; then + numeric=$(echo "$BRIGHTNESS" | sed 's/.$//') + absolute=$(echo "($BRIGHTNESS_MAX / 100) * $numeric" | bc -l) + BRIGHTNESS=$(printf "%.0f" $absolute) + fi + + # Get the new requested absolute brightness + if [ $SET -eq 1 ]; then + new_brightness=$BRIGHTNESS + elif [ $DECREASE -eq 1 ]; then + cur_brightness=$(cat $BRIGHTNESS_FILE) + new_brightness=$(($cur_brightness - $BRIGHTNESS)) + else + cur_brightness=$(cat $BRIGHTNESS_FILE) + new_brightness=$(($cur_brightness + $BRIGHTNESS)) + fi + + # Ensure we respect max/min boundaries + if [ $new_brightness -lt 0 ]; then + new_brightness=0 + elif [ $new_brightness -gt $BRIGHTNESS_MAX ]; then + new_brightness=$BRIGHTNESS_MAX + fi + + # Update the brightness + set_brightness $new_brightness +fi + +cur_brightness=$(cat $BRIGHTNESS_FILE) +percent_brightness=$(echo "($cur_brightness / $BRIGHTNESS_MAX) * 100" | bc -l) +percent_brightness_2f=$(printf "%.2f" $percent_brightness) +percent_brightness_rounded=$(printf "%.0f" $percent_brightness) + +if [ $SEND_NOTIFICATION -eq 1 ]; then + send_brightness_notify "$percent_brightness_rounded" "Level: $percent_brightness_rounded" +fi + +echo "Brightness: ${percent_brightness_2f}% (absolute: $cur_brightness)" diff --git a/home/programs/graphical/wms/hyprland/packages/brightness/default.nix b/home/programs/graphical/wms/hyprland/packages/brightness/default.nix new file mode 100644 index 0000000..7a8d515 --- /dev/null +++ b/home/programs/graphical/wms/hyprland/packages/brightness/default.nix @@ -0,0 +1,6 @@ +{pkgs, ...}: + pkgs.writeShellScriptBin "brightness" '' + ${builtins.readFile ./brightness.sh} + '' + + diff --git a/home/programs/graphical/wms/hyprland/packages/default.nix b/home/programs/graphical/wms/hyprland/packages/default.nix index 47fca74..bbead15 100644 --- a/home/programs/graphical/wms/hyprland/packages/default.nix +++ b/home/programs/graphical/wms/hyprland/packages/default.nix @@ -5,6 +5,7 @@ packages = { hyprland-swap-workspace = pkgs.callPackage ./hyprland-swap-workspace {}; hyprland-move-window = pkgs.callPackage ./hyprland-move-window {}; + brightness = pkgs.callPackage ./brightness {}; }; in packages