(dwm-status) add power consumption master
authorBenjamin Doumenc <bdoumenc@gmail.com>
Wed, 10 Jul 2019 18:40:47 +0000 (20:40 +0200)
committerBenjamin Doumenc <bdoumenc@gmail.com>
Wed, 10 Jul 2019 18:40:47 +0000 (20:40 +0200)
suckless/dwmstatus-bar/status.c

index 7e3054a..5ebd2b2 100644 (file)
@@ -100,6 +100,7 @@ int getdatetime(char *status, size_t size) {
 int getbattery(char *status, size_t size) {
        FILE *fd;
        int now, full, bat;
+    float current, voltage, cons;
     char stat[12];
 
        fd = fopen("/sys/class/power_supply/BAT0/charge_now", "r");
@@ -114,18 +115,21 @@ int getbattery(char *status, size_t size) {
        fscanf(fd, "%s", stat);
        fclose(fd);
 
+       fd = fopen("/sys/class/power_supply/BAT0/current_now", "r");
+       fscanf(fd, "%f", &current);
+       fclose(fd);
+
+       fd = fopen("/sys/class/power_supply/BAT0/voltage_now", "r");
+       fscanf(fd, "%f", &voltage);
+       fclose(fd);
+
     bat = 100 * now / full;
+    cons = current * voltage / 1000000000000;
 
     if(strncmp(stat, "Discharging", 11) == 0) {    
-        if(bat < 20) {            
-            return snprintf(status, size, "B %d%% |", bat);
-        } else if(bat > 80) {
-            return snprintf(status, size, "B %d%% |", bat);
-        } else {
-            return snprintf(status, size, "B %d%% |", bat);
-        }
+        return snprintf(status, size, "B % 3d%% % 3.1fW |", bat, cons);
     } else if(strncmp(stat, "Charging", 8) == 0) {
-        return snprintf(status, size, "B AC%d%% |", bat);
+        return snprintf(status, size, "B AC% 3.1d%% % 3fW |", bat, cons);
     } else {
         return snprintf(status, size, "B ""AC |");
     }