commit f13104156f20c0e394297c56550ff8a948ff1c1a
parent 7aad78bd95cb265306f1ab81844c7bcd66054068
Author: Aaron Marcher <info@nulltime.net>
Date: Tue, 13 Sep 2016 22:03:36 +0200
battery_state() function added
Diffstat:
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;