diff options
| -rw-r--r-- | statusbar.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/statusbar.c b/statusbar.c index 08c0c86..5388038 100644 --- a/statusbar.c +++ b/statusbar.c @@ -129,7 +129,7 @@ static void status_mem(void) { FILE *fp; char line[256], field[128]; - unsigned long long value, total = 0, free = 0, cached = 0; + unsigned long long value, total = 0, free = 0, cached = 0, avail = 0; double used; if ((fp = fopen("/proc/meminfo", "r")) == NULL) { @@ -141,13 +141,18 @@ static void status_mem(void) total = value; else if (strcmp(field, "MemFree:") == 0) free = value; + else if (strcmp(field, "MemAvailable:") == 0) + avail = value; else if (strcmp(field, "Cached:") == 0) cached = value; } } fclose(fp); - used = (total - free - cached) * 100.0 / total; + if (avail < 1) { + avail = free + cached; + } + used = (total - avail) * 100.0 / total; add_status("Mem %s%2.f%s%%", used > 90.0 ? HOT : COOL, used, NORMAL); } |
