battery_state() function added
authorAaron Marcher <info@nulltime.net>
Tue, 13 Sep 2016 20:03:36 +0000 (22:03 +0200)
committerAaron Marcher (drkhsh) <info@nulltime.net>
Tue, 13 Sep 2016 20:03:36 +0000 (22:03 +0200)
README.md
config.def.h
slstatus.c

index 534eee0378522adbe7469424cfb36288244acb28..686922c42b39a1f1c19028ab6c0a782fd9c04e8b 100644 (file)
--- 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
index a445aa7524646ac08c3da934b60f9dda9f86aed5..4f56eb0110af2fe3de2c65cca450c041b55d95cb 100644 (file)
@@ -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]
index fa91ccebd1b587b75fc05ead9b9f14f1bef9f7bf..1d466740efd4039c2a95993a23918fd3b9dd8def 100644 (file)
@@ -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 *);
@@ -113,6 +114,37 @@ battery_perc(const char *battery)
        return smprintf("%d%%", perc);
 }
 
+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)
 {