diff --git a/home/common/optional/desktop/dwm/default.nix b/home/common/optional/desktop/dwm/default.nix index 88996b6..eb87bf8 100644 --- a/home/common/optional/desktop/dwm/default.nix +++ b/home/common/optional/desktop/dwm/default.nix @@ -20,6 +20,7 @@ # Notification scripts ./scripts/dunstify-volume-notification.nix + ./scripts/dunstify-battery-notification.nix # Helper scripts ./scripts/emoji-picker.nix @@ -29,6 +30,7 @@ ./scripts/git-commit-ai.nix ./scripts/aichat-wrapper.nix ./scripts/dmenu-wifi.nix + ./scripts/battery-status.nix ]; home.packages = [ diff --git a/home/common/optional/desktop/dwm/scripts/battery-status.nix b/home/common/optional/desktop/dwm/scripts/battery-status.nix new file mode 100644 index 0000000..4159417 --- /dev/null +++ b/home/common/optional/desktop/dwm/scripts/battery-status.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: +{ + home.packages = [ + (pkgs.writeShellScriptBin "battery-status" '' + status=$(${pkgs.acpi}/bin/acpi) + bat_name=$(echo "$status" | grep -o -e "^[Aa-Zz]*\s[0-9]:") + bat_status=$(echo $status | grep -o -e "[A-Z][a-z]*," | sed "s/,//") + bat_pct=$(echo $status | grep -o -e "[0-9]*%") + bat_time=$(echo $status | grep -o -e "[0-9]*:[0-9]*:[0-9]* [a-z].*") + power=$(cat /sys/class/power_supply/BAT0/power_now) + power_watts=$(${pkgs.bc}/bin/bc <<< "scale=3; $power / 1000000") + + echo -e "$bat_name ($bat_status)\nCharge: $bat_pct\nTime: $bat_time\nPower consumption: $power_watts W " + '') + ]; +} diff --git a/home/common/optional/desktop/dwm/scripts/dunstify-battery-notification.nix b/home/common/optional/desktop/dwm/scripts/dunstify-battery-notification.nix new file mode 100644 index 0000000..e05f865 --- /dev/null +++ b/home/common/optional/desktop/dwm/scripts/dunstify-battery-notification.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: +{ + home.packages = [ + (pkgs.writeShellScriptBin "dunstify-battery-notification" '' + msgTag="battery-notify" + ${pkgs.dunst}/bin/dunstify -a "batteryNotify" -u critical -i battery-notify -h string:x-dunst-stack-tag:$msgTag "Battery Status" "$(battery-status)" -t 5000 + '') + ]; +}