t* dwmstatus for OpenBSD URI git clone git://git.codevoid.de/dwmstatus-sdk DIR Log DIR Files DIR Refs DIR LICENSE --- DIR commit abbd44de441b7dc0e666dae0c5f162f701d53480 DIR parent 8d73323fbabab911e9fc12c40d6367c9e762d3a4 URI Author: Stefan Hagen <sh+git[at]codevoid[dot]de> Date: Sun, 3 Jun 2018 12:03:16 +0200 remove unneeded files, add getfreespace() Diffstat: M config.mk | 4 ++-- D dwmstatus-temperature.c | 15 --------------- M dwmstatus.c | 29 +++++++++++++++++++++++++---- D new-acpi-battery.c | 55 ------------------------------- 4 files changed, 27 insertions(+), 76 deletions(-) --- DIR diff --git a/config.mk b/config.mk t@@ -20,9 +20,9 @@ LIBS = -L/usr/local/lib -lc -L${X11LIB} -lX11 # flags CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} +CFLAGS = -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS} #CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} -LDFLAGS = -g ${LIBS} +LDFLAGS = ${LIBS} #LDFLAGS = -s ${LIBS} # Solaris DIR diff --git a/dwmstatus-temperature.c b/dwmstatus-temperature.c t@@ -1,15 +0,0 @@ -/* - * gettemperature("/sys/class/hwmon/hwmon0/device", "temp1_input"); - */ - -char * -gettemperature(char *base, char *sensor) -{ - char *co; - - co = readfile(base, sensor); - if (co == NULL) - return smprintf(""); - return smprintf("%02.0f°C", atof(co) / 1000); -} - DIR diff --git a/dwmstatus.c b/dwmstatus.c t@@ -23,6 +23,15 @@ #include <X11/Xlib.h> +// getfreespace +#include <sys/param.h> +#include <sys/mount.h> + + + +// configuration +#define UPDATE_INTERVAL 1 + // conversation presets #define ZEROCTOC(x) ((x)-2731) / 10 #define BTOMB(x) ((x)*1048576 t@@ -56,6 +65,14 @@ smprintf(char *fmt, ...) return ret; } +/* Free space by path */ +char * +getfreespace(const char *path) { + struct statfs vfs; + statfs(path, &vfs); + return smprintf("%ld", (vfs.f_bavail * vfs.f_bsize) / 1024 / 1024); +} + /* Use FreeBSDs sysctl to retrieve information * Sysctl may return different types, so you want * to call the appropriate smprintf() in main(); t@@ -244,9 +261,12 @@ void update() { char *cpufreq; char *battery; char *volume; + char *freespace; // cpu temperature cputemp = smprintf("%i", ZEROCTOC((int)getsysctl("hw.acpi.thermal.tz0.temperature"))); + + // cpu frequency cpufreq = smprintf("%i", getsysctl("dev.cpu.0.freq")); // battery t@@ -259,15 +279,16 @@ void update() { // TBD // free disk space (root/home) - // TBD + freespace = smprintf("%s", getfreespace("/")); // date and time datetime = mktimes("%d.%m.%Y %H:%M", tzberlin); // assemble and display - status = smprintf(" LOAD:%s TEMP:%s°C FREQ:%sMhz BAT:%s%% VOL:%s | %s ", loadavg(), cputemp, cpufreq, battery, volume, datetime); + status = smprintf("/:%sMB LOAD:%s TEMP:%s°C FREQ:%sMhz BAT:%s%% VOL:%s | %s ", freespace, loadavg(), cputemp, cpufreq, battery, volume, datetime); setstatus(status); + free(freespace); free(volume); free(battery); free(cputemp); t@@ -296,10 +317,10 @@ main(void) // register signal handler if (signal(SIGUSR1, sig_handler) == SIG_ERR) - fprintf(stderr, "Err: can't register SIGUSR1\n"); + fprintf(stderr, "Err: can't register update signal (SIGUSR1)\n"); // update status - for (;;sleep(60)) { + for (;;sleep(UPDATE_INTERVAL)) { update(); } DIR diff --git a/new-acpi-battery.c b/new-acpi-battery.c t@@ -1,55 +0,0 @@ -char * -readfile(char *base, char *file) -{ - char *path, line[513]; - FILE *fd; - - memset(line, 0, sizeof(line)); - - path = smprintf("%s/%s", base, file); - fd = fopen(path, "r"); - if (fd == NULL) { - perror("fopen"); - exit(1); - } - free(path); - - if (fgets(line, sizeof(line)-1, fd) == NULL) { - perror("fgets"); - exit(1); - } - fclose(fd); - - return smprintf("%s", line); -} - -char * -getbattery(char *base) -{ - char *co; - int descap, remcap; - - descap = -1; - remcap = -1; - - co = readfile(base, "present"); - if (co[0] != '1') { - free(co); - return smprintf("not present"); - } - free(co); - - co = readfile(base, "charge_full_design"); - sscanf(co, "%d", &descap); - free(co); - - co = readfile(base, "charge_now"); - sscanf(co, "%d", &remcap); - free(co); - - if (remcap < 0 || descap < 0) - return smprintf("invalid"); - - return smprintf("%.0f", ((float)remcap / (float)descap) * 100); -} -