slstatus

My fork of https://tools.suckless.org/slstatus/
git clone https://git.inz.fi/slstatus
Log | Files | Refs | README | LICENSE

commit fb524b60508dd8adee66ae30e834632fd6b4402c
parent 688c2d43e2f89544add30f864f855843369fb85f
Author: Aaron Marcher <info@nulltime.net>
Date:   Fri, 10 Jun 2016 19:13:13 +0200

added disk functions for details

Diffstat:
Mconfig.def.h | 6++++++
Mslstatus.c | 50+++++++++++++++++++++++++++++++++++++++++++++++++-
Mslstatus.h | 3+++
3 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/config.def.h b/config.def.h @@ -15,11 +15,17 @@ static unsigned int update_interval = 1; - battery_perc (battery percentage) [argument: battery name] - cpu_perc (cpu usage in percent) [argument: NULL] - datetime (date and time) [argument: format] +- disk_free (disk usage in percent) [argument: mountpoint] - disk_perc (disk usage in percent) [argument: mountpoint] +- disk_total (disk usage in percent) [argument: mountpoint] +- disk_used (disk usage in percent) [argument: mountpoint] - entropy (available entropy) [argument: NULL] - hostname [argument: NULL] - ip (ip address) [argument: interface] +- ram_free (ram usage in percent) [argument: NULL] - ram_perc (ram usage in percent) [argument: NULL] +- ram_total (ram usage in percent) [argument: NULL] +- ram_used (ram usage in percent) [argument: NULL] - temp (temperature in degrees) [argument: temperature file] - vol_perc (alsa volume and mute status in percent) [argument: soundcard] - wifi_perc (wifi signal in percent) [argument: wifi card interface name] */ diff --git a/slstatus.c b/slstatus.c @@ -166,6 +166,22 @@ datetime(const char *timeformat) return ret; } +/* disk free */ +char * +disk_free(const char *mountpoint) +{ + struct statvfs fs; + + /* try to open mountpoint */ + if (statvfs(mountpoint, &fs) < 0) { + fprintf(stderr, "Could not get filesystem info.\n"); + return smprintf("n/a"); + } + + /* return free */ + return smprintf("%f", (float)fs.f_bsize * (float)fs.f_bfree / 1024 / 1024 / 1024); +} + /* disk usage percentage */ char * disk_perc(const char *mountpoint) @@ -180,12 +196,44 @@ disk_perc(const char *mountpoint) } /* calculate percent */ - perc = 100 * (1.0f - ((float)fs.f_bavail / (float)fs.f_blocks)); + perc = 100 * (1.0f - ((float)fs.f_bfree / (float)fs.f_blocks)); /* return perc */ return smprintf("%d%%", perc); } +/* disk total */ +char * +disk_total(const char *mountpoint) +{ + struct statvfs fs; + + /* try to open mountpoint */ + if (statvfs(mountpoint, &fs) < 0) { + fprintf(stderr, "Could not get filesystem info.\n"); + return smprintf("n/a"); + } + + /* return total */ + return smprintf("%f", (float)fs.f_bsize * (float)fs.f_blocks / 1024 / 1024 / 1024); +} + +/* disk used */ +char * +disk_used(const char *mountpoint) +{ + struct statvfs fs; + + /* try to open mountpoint */ + if (statvfs(mountpoint, &fs) < 0) { + fprintf(stderr, "Could not get filesystem info.\n"); + return smprintf("n/a"); + } + + /* return used */ + return smprintf("%f", (float)fs.f_bsize * ((float)fs.f_blocks - (float)fs.f_bfree) / 1024 / 1024 / 1024); +} + /* entropy available */ char * entropy(const char *null) diff --git a/slstatus.h b/slstatus.h @@ -17,7 +17,10 @@ char *smprintf(const char *, ...); char *battery_perc(const char *); char *cpu_perc(const char *); char *datetime(const char *); +char *disk_free(const char *); char *disk_perc(const char *); +char *disk_total(const char *); +char *disk_used(const char *); char *entropy(const char*); char *hostname(const char *); char *ip(const char *);