commit f13104156f20c0e394297c56550ff8a948ff1c1a
parent 7aad78bd95cb265306f1ab81844c7bcd66054068
Author: Aaron Marcher <[email protected]>
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;