add battery_power function
authorAaron Marcher <info@nulltime.net>
Mon, 12 Jun 2017 21:55:27 +0000 (23:55 +0200)
committerAaron Marcher <info@nulltime.net>
Mon, 12 Jun 2017 21:55:27 +0000 (23:55 +0200)
config.def.h
slstatus.c

index 1476c30adc29a59073aa0a0a8697ac1b4c008a26..426cc288b1ce68e8883dd89670336ac6746717cd 100644 (file)
@@ -8,6 +8,7 @@
 
 /* statusbar
 - battery_perc (battery percentage) [argument: battery name]
+- battery_power (battery power usage) [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]
index 82414518563c47335971c99abab58fab147fbc9e..caccc6e8316c2c89fadfa2af8363a2833f1de6b1 100644 (file)
@@ -35,6 +35,7 @@ struct arg {
 
 static char *smprintf(const char *fmt, ...);
 static char *battery_perc(const char *bat);
+static char *battery_power(const char *bat);
 static char *battery_state(const char *bat);
 static char *cpu_perc(void);
 static char *datetime(const char *fmt);
@@ -118,6 +119,25 @@ battery_perc(const char *bat)
        return smprintf("%d%%", perc);
 }
 
+static char *
+battery_power(const char *bat)
+{
+       char path[PATH_MAX];
+       FILE *fp;
+       int watts;
+
+       snprintf(path, sizeof(path), "%s%s%s", "/sys/class/power_supply/", bat, "/power_now");
+       fp = fopen(path, "r");
+       if (fp == NULL) {
+               warn("Failed to open file %s", path);
+               return smprintf("%s", UNKNOWN_STR);
+       }
+       fscanf(fp, "%i", &watts);
+       fclose(fp);
+
+       return smprintf("%d", (watts + 500000) / 1000000);
+}
+
 static char *
 battery_state(const char *bat)
 {