From a0f7e0d4e3ded7b3d9f8cb2c93f65bcb3311fb48 Mon Sep 17 00:00:00 2001 From: Tomas Rivera <137088692+Totorile1@users.noreply.github.com> Date: Wed, 4 Mar 2026 10:57:02 +0100 Subject: [PATCH] reworked the battery notification scripts --- assets/battery_notify.mp3 | Bin 0 -> 9277 bytes hosts/laptop/configuration.nix | 1 + hosts/laptop/home.nix | 2 + modules/home-manager/hyprland.nix | 3 +- .../scripts/OldDeprecatedbatterynotify.nix | 71 ++++++++++ modules/scripts/batterynotify.nix | 130 +++++++++--------- modules/scripts/batterywarning.nix | 53 +++++++ 7 files changed, 193 insertions(+), 67 deletions(-) create mode 100644 assets/battery_notify.mp3 create mode 100644 modules/scripts/OldDeprecatedbatterynotify.nix create mode 100644 modules/scripts/batterywarning.nix diff --git a/assets/battery_notify.mp3 b/assets/battery_notify.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..90e325638180768f0a6e435227764a0abfa1d9bb GIT binary patch literal 9277 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''${Battery_Capacity}%" + adjustBrightness "15%-" + playsound + x=0 + fi + ;; + "Charging") + if [ $x -eq 0 ]; then + sendNotification "Charging" "Current: ''${Battery_Capacity}%" + adjustBrightness "15%+" + playsound + x=1 + fi + ;; + "Full") + if [ $x -eq 0 ]; then + sendNotification "Fully Charged" "Noice: ''${Battery_Capacity}%" + playsound + x=1 + fi + ;; + esac + + sleep 1 +done + ''; } diff --git a/modules/scripts/batterywarning.nix b/modules/scripts/batterywarning.nix new file mode 100644 index 0000000..14d64d1 --- /dev/null +++ b/modules/scripts/batterywarning.nix @@ -0,0 +1,53 @@ +# taken and adapted https://github.com/miniMinn24/Battery_Notify with MIT License +{ writeShellApplication, mplayer, brightnessctl, ... }: +let + NotifySound = ../../assets/battery_notify.mp3; +in +writeShellApplication { + name = "custom-batterywarning"; + runtimeInputs = [ + mplayer + brightnessctl + ]; + text = '' + +# Delay for startup +sleep 5 + +# Change your sound path here + +playsound() { + mplayer ${NotifySound} +} + +sendNotification() { + local message="$1" + notify-send -h string:x-canonical-private-synchronous:sys-notify -e -u critical "Battery Low!" "$message" +} + +notify_count=0 + +while true; do + Battery_Status="$(cat /sys/class/power_supply/BAT*/status)" + Battery_Capacity=$(cat /sys/class/power_supply/BAT*/capacity) + + if [ "$Battery_Status" == "Discharging" ] && [ "$Battery_Capacity" -le 14 ]; then + if [ "$notify_count" -eq 0 ]; then + sendNotification "Power running out: ''${Battery_Capacity}%" + playsound + notify_count=$((notify_count + 1)) + sleep 180 + + elif [ "$notify_count" -eq 1 ]; then + sendNotification "Save your works before immediate shutdown." + playsound + notify_count=$((notify_count - 1)) + sleep 180 + fi + else + notify_count=0 + sleep 120 + fi +done + ''; +}