a8cd4ac043c2f814b3404ab3e76f161c325e4916
char *tzargentina
= "America/Buenos_Aires";
char *tzberlin
= "Europe/Berlin";
len
= vsnprintf(NULL
, 0, fmt
, fmtargs
);
vsnprintf(ret
, len
, fmt
, fmtargs
);
mktimes(char *fmt
, char *tzname
)
if (!strftime(buf
, sizeof(buf
)-1, fmt
, timtm
)) {
fprintf(stderr
, "strftime == 0\n");
return smprintf("%s", buf
);
XStoreName(dpy
, DefaultRootWindow(dpy
), str
);
if (getloadavg(avgs
, 3) < 0)
return smprintf("%.2f %.2f %.2f", avgs
[0], avgs
[1], avgs
[2]);
readfile(char *base
, char *file
)
memset(line
, 0, sizeof(line
));
path
= smprintf("%s/%s", base
, file
);
if (fgets(line
, sizeof(line
)-1, fd
) == NULL
)
return smprintf("%s", line
);
co
= readfile(base
, "present");
return smprintf("not present");
co
= readfile(base
, "charge_full_design");
co
= readfile(base
, "energy_full_design");
sscanf(co
, "%d", &descap
);
co
= readfile(base
, "charge_now");
co
= readfile(base
, "energy_now");
sscanf(co
, "%d", &remcap
);
co
= readfile(base
, "status");
if (!strncmp(co
, "Discharging", 11)) {
} else if(!strncmp(co
, "Charging", 8)) {
if (remcap
< 0 || descap
< 0)
return smprintf("invalid");
return smprintf("%.0f%%%c", ((float)remcap
/ (float)descap
) * 100, status
);
gettemperature(char *base
, char *sensor
)
co
= readfile(base
, sensor
);
return smprintf("%02.0f°C", atof(co
) / 1000);
memset(retval
, 0, sizeof(retval
));
rv
= fgets(retval
, sizeof(retval
), fp
);
retval
[strlen(retval
)-1] = '\0';
return smprintf("%s", retval
);
if (!(dpy
= XOpenDisplay(NULL
))) {
fprintf(stderr
, "dwmstatus: cannot open display.\n");
bat
= getbattery("/sys/class/power_supply/BAT0");
tmar
= mktimes("%H:%M", tzargentina
);
tmutc
= mktimes("%H:%M", tzutc
);
tmbln
= mktimes("KW %W %a %d %b %H:%M %Z %Y", tzberlin
);
kbmap
= execscript("setxkbmap -query | grep layout | cut -d':' -f 2- | tr -d ' '");
surfs
= execscript("surf-status");
t0
= gettemperature("/sys/devices/virtual/thermal/thermal_zone0", "temp");
t1
= gettemperature("/sys/devices/virtual/thermal/thermal_zone1", "temp");
status
= smprintf("S:%s K:%s T:%s|%s L:%s B:%s A:%s U:%s %s",
surfs
, kbmap
, t0
, t1
, avgs
, bat
, tmar
, tmutc
,