slstatus

My fork of https://tools.suckless.org/slstatus/
git clone https://git.inz.fi/slstatus
Log | Files | Refs | README | LICENSE

commit f13104156f20c0e394297c56550ff8a948ff1c1a
parent 7aad78bd95cb265306f1ab81844c7bcd66054068
Author: Aaron Marcher <info@nulltime.net>
Date:   Tue, 13 Sep 2016 22:03:36 +0200

battery_state() function added

Diffstat:
MREADME.md | 2+-
Mconfig.def.h | 1+
Mslstatus.c | 32++++++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md @@ -8,7 +8,7 @@ Looking at the LOC (lines of code) of the [Conky project](https://github.com/brn The following information is included: -- Battery percentage +- Battery percentage/state - CPU usage (in percent) - Custom shell commands - Date and time diff --git a/config.def.h b/config.def.h @@ -8,6 +8,7 @@ /* statusbar - battery_perc (battery percentage) [argument: battery name] +- battery_state (battery charging state) [argument: battery name] - cpu_perc (cpu usage in percent) [argument: NULL] - datetime (date and time) [argument: format] - disk_free (disk usage in percent) [argument: mountpoint] diff --git a/slstatus.c b/slstatus.c @@ -40,6 +40,7 @@ struct arg { static char *smprintf(const char *, ...); static char *battery_perc(const char *); +static char *battery_state(const char *); static char *cpu_perc(void); static char *datetime(const char *); static char *disk_free(const char *); @@ -114,6 +115,37 @@ battery_perc(const char *battery) } static char * +battery_state(const char *battery) +{ + char *state = malloc(sizeof(char)*12); + FILE *fp; + + if (!state) { + warn("Failed to get battery state."); + return smprintf(UNKNOWN_STR); + } + + + ccat(3, "/sys/class/power_supply/", battery, "/status"); + fp = fopen(concat, "r"); + if (fp == NULL) { + warn("Error opening battery file: %s", concat); + return smprintf(UNKNOWN_STR); + } + fscanf(fp, "%s", state); + fclose(fp); + + if (strcmp(state, "Charging") == 0) + return smprintf("+"); + else if (strcmp(state, "Discharging") == 0) + return smprintf("-"); + else if (strcmp(state, "Full") == 0) + return smprintf("="); + else + return smprintf("?"); +} + +static char * cpu_perc(void) { int perc;