#include #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); }