sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit c76ee9b66b67be37442a4ca3e2ec9ce446766b73
parent 9a788d5e9f31c541af8d580161f3033c6b4d41c1
Author: keroles97 <keroles97@gmail.com>
Date:   Fri, 19 Jan 2024 16:02:11 +0200

add battery notify patch for slstatus

Diffstat:
Atools.suckless.org/slstatus/patches/battery-notify/index.md | 22++++++++++++++++++++++
Atools.suckless.org/slstatus/patches/battery-notify/slstatus-battery-notify-20240119-a9ebd00.diff | 111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 133 insertions(+), 0 deletions(-)

diff --git a/tools.suckless.org/slstatus/patches/battery-notify/index.md b/tools.suckless.org/slstatus/patches/battery-notify/index.md @@ -0,0 +1,22 @@ +battery notify +========= + +Description +----------- +This diff adds a battery notifications for specific levels you defined to slstatus. +It sends notification using "notify-send" command. +In config.h file there is array called "notifiable_levels" add any levels you want. + +Important +--------- +* "libnotify" is required to be installed +* Add ({battery_notify, "", "BAT1"},) to config file in args array - replace BAT1 with your battery name +* FreeBSD and OpenBSD are not supported + +Download +-------- +* [slstatus-battery-notify-20240119-a9ebd00.diff](slstatus-battery-notify-20240119-a9ebd00.diff) + +Authors +------- +* keroles <krls97@proton.me> diff --git a/tools.suckless.org/slstatus/patches/battery-notify/slstatus-battery-notify-20240119-a9ebd00.diff b/tools.suckless.org/slstatus/patches/battery-notify/slstatus-battery-notify-20240119-a9ebd00.diff @@ -0,0 +1,111 @@ +From: keroles <krls97@proton.me> +Date: Fri, 19 Jan 2024 14:01:34 +0200 +Subject: [PATCH] add battery notify feature + +--- + components/battery.c | 49 ++++++++++++++++++++++++++++++++++++++++++++ + config.def.h | 7 +++++++ + slstatus.h | 3 +++ + 3 files changed, 59 insertions(+) + +diff --git a/components/battery.c b/components/battery.c +index 1c753f9..908ea7b 100644 +--- a/components/battery.c ++++ b/components/battery.c +@@ -20,6 +20,12 @@ + #define POWER_SUPPLY_CURRENT "/sys/class/power_supply/%s/current_now" + #define POWER_SUPPLY_POWER "/sys/class/power_supply/%s/power_now" + ++ const char notify_cmd[] = "notify-send"; ++ const char battery_str[] = "Battery"; ++ int last_notified_level = 0; ++ ++ extern const int notifiable_levels[]; ++ + static const char * + pick(const char *bat, const char *f1, const char *f2, char *path, + size_t length) +@@ -49,6 +55,49 @@ + return bprintf("%d", cap_perc); + } + ++ void battery_notify(const char *bat) ++ { ++ int cap_perc; ++ char state[12]; ++ char path[PATH_MAX]; ++ ++ if (esnprintf(path, sizeof(path), POWER_SUPPLY_CAPACITY, bat) < 0 || pscanf(path, "%d", &cap_perc) != 1) ++ return; ++ ++ if (esnprintf(path, sizeof(path), POWER_SUPPLY_STATUS, bat) < 0 || pscanf(path, "%12[a-zA-Z ]", &state) != 1) ++ return; ++ ++ if (strcmp("Charging", state) == 0) ++ { ++ last_notified_level = 0; ++ ++ return; ++ } ++ ++ if (strcmp("Discharging", state) != 0) ++ return; ++ ++ size_t i; ++ const int size = sizeof(*notifiable_levels); ++ char cmd[28]; ++ ++ for (i = 0; i < size; i++) ++ { ++ if (notifiable_levels[i] != cap_perc) ++ continue; ++ ++ if (notifiable_levels[i] != last_notified_level) ++ { ++ last_notified_level = notifiable_levels[i]; ++ ++ snprintf(cmd, 100, "%s %s %d%%", notify_cmd, battery_str, cap_perc); ++ system(cmd); ++ ++ break; ++ } ++ } ++ } ++ + const char * + battery_state(const char *bat) + { +diff --git a/config.def.h b/config.def.h +index d805331..67e6f16 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -1,5 +1,12 @@ + /* See LICENSE file for copyright and license details. */ + ++/* battery levels to notify - add any levels you want to receive notification for (in percent) */ ++const int notifiable_levels[] = { ++ 20, ++ 10, ++ 5, ++}; ++ + /* interval between updates (in ms) */ + const unsigned int interval = 1000; + +diff --git a/slstatus.h b/slstatus.h +index 8ef5874..5642dda 100644 +--- a/slstatus.h ++++ b/slstatus.h +@@ -2,6 +2,9 @@ + + /* battery */ + const char *battery_perc(const char *); ++ ++void battery_notify(const char *); ++ + const char *battery_remaining(const char *); + const char *battery_state(const char *); + +-- +2.43.0 +