aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bstatus.c1
-rw-r--r--mem.c32
-rw-r--r--modules.h7
3 files changed, 39 insertions, 1 deletions
diff --git a/bstatus.c b/bstatus.c
index 91a1a11..30eb098 100644
--- a/bstatus.c
+++ b/bstatus.c
@@ -16,6 +16,7 @@ int main(void)
datetime();
battery();
cpu();
+ mem();
write(1,"],",2);
sleep(1);
}
diff --git a/mem.c b/mem.c
new file mode 100644
index 0000000..e92b657
--- /dev/null
+++ b/mem.c
@@ -0,0 +1,32 @@
+#include <stdio.h>
+#include "block.h"
+#define ICON_MEM " "
+#define FG "#222222"
+#define BG "#95b18b99"
+#define mem_val(n)\
+ for(n = 0; (c = fgetc(meminfo)) != '\n';)\
+ if (c >= '0' && c <= '9')\
+ n = 10 * n + (c - '0')
+#define jmpl(n) fseek(meminfo,29*(n-1),0)
+FILE *meminfo;
+int mem_delay = 3;
+char mem_str[15];
+void mem(void) {
+ if (mem_delay++ < 3) goto show_stat;
+ else mem_delay = 0;
+ if (!meminfo) meminfo = fopen("/proc/meminfo","r");
+ int c, mem;
+ int total, free, buffers,
+ cached, shared, reclaim;
+ jmpl(1); mem_val(total);
+ jmpl(2); mem_val(free);
+ jmpl(4); mem_val(buffers);
+ jmpl(5); mem_val(cached);
+ jmpl(23); mem_val(shared);
+ jmpl(26); mem_val(reclaim);
+ mem = total + reclaim - (free+buffers+cached+shared);
+ mem /= 1024;
+ snprintf(mem_str,15,ICON_MEM"%5d MiB",mem);
+show_stat:
+ block(mem_str,FG,BG,BG);
+}
diff --git a/modules.h b/modules.h
index 139c9e7..2db07ce 100644
--- a/modules.h
+++ b/modules.h
@@ -12,8 +12,13 @@ void battery(void);
#ifndef CPU_H
#define CPU_H
void cpu(void);
-// cmus
#endif
+// mem
+#ifndef MEM_H
+#define MEM_H
+void mem(void);
+#endif
+// cmus
#ifndef CMUS_H
#define CMUS_H
void cmus(void);