From 6672ef05f00ca672057ba001a75f7cf00413a187 Mon Sep 17 00:00:00 2001 From: "Simon R. - fantomitechno" Date: Thu, 28 May 2026 09:07:09 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Real=20fix=20of=20the=20battery?= =?UTF-8?q?=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hosts/common/battery-notify.nix | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/hosts/common/battery-notify.nix b/hosts/common/battery-notify.nix index 178ba33..170d766 100644 --- a/hosts/common/battery-notify.nix +++ b/hosts/common/battery-notify.nix @@ -9,10 +9,23 @@ serviceConfig = { Type = "simple"; ExecStart = pkgs.writeShellScript "battery-low-notification" '' - BATTERY=$(${pkgs.lib.getExe pkgs.acpi} -b | head -n 1) - LEVEL=$(echo "$BATTERY" | ${pkgs.lib.getExe pkgs.ripgrep} -o "\d+%" | ${pkgs.lib.getExe pkgs.ripgrep} -o "\d+") + BATTERIES=$(${pkgs.lib.getExe pkgs.acpi} -b) + LEVEL=200 + N=$(echo "$BATTERIES" | wc -l) + for ((i = 1 ; i <= N ; i++)); do + BATTERY=$(echo "$BATTERIES" | sed -n "''${i}p") + if echo "$BATTERY" | grep -q "rate information unavailable"; then + echo "Skipping: $BATTERY" + else + NEW_LEVEL=$(echo "$BATTERY" | ${pkgs.lib.getExe pkgs.ripgrep} -o "\d+%" | ${pkgs.lib.getExe pkgs.ripgrep} -o "\d+") + if ((NEW_LEVEL < LEVEL)); then + LEVEL=$NEW_LEVEL + fi + fi + done + echo "$LEVEL" if echo "$BATTERY" | ${pkgs.lib.getExe pkgs.ripgrep} -q "Discharging" && (( 10 >= LEVEL )); then - ${pkgs.lib.getExe pkgs.libnotify} --urgency=critical "low battery" "$LEVEL%" + ${pkgs.lib.getExe pkgs.libnotify} --urgency=critical "low battery" "$LEVEL%" fi ''; }; -- 2.54.0