+ int charge_now, current_now, m, h;
+ float timeleft;
+ char path[PATH_MAX], state[12];
+
+ snprintf(path, sizeof(path), "%s%s%s", "/sys/class/power_supply/",
+ bat, "/status");
+ if (pscanf(path, "%12s", state) != 1) {
+ return NULL;
+ }
+
+ if (!strcmp(state, "Discharging")) {
+ snprintf(path, sizeof(path), "%s%s%s", "/sys/class/power_supply/",
+ bat, "/charge_now");
+ if (pscanf(path, "%d", &charge_now) != 1) {
+ return NULL;
+ }
+ snprintf(path, sizeof(path), "%s%s%s", "/sys/class/power_supply/",
+ bat, "/current_now");
+ if (pscanf(path, "%d", ¤t_now) != 1) {
+ return NULL;
+ }
+
+ timeleft = (float)charge_now / (float)current_now;
+ h = timeleft;
+ m = (timeleft - (float)h) * 60;
+
+ return bprintf("%dh %dm", h, m);
+ }
+
+ return "";