#include #include "block.h" #define ICON_CPU " " FILE *proc_stat; int cpu_stat[8], cpu_delay = 6; char cpu_str[11]; void cpu(void) { if (cpu_delay++ < 6) goto show_stat; else cpu_delay = 0; double prev_idle, prev_total, total, idle, usage_p; prev_idle = idle; prev_total = total; if (!proc_stat) proc_stat = fopen("/proc/stat","r"); if (proc_stat) { int c, i; fseek(proc_stat,5,0); for (i = 0;i < 8;i++) cpu_stat[i] = 0; for (i = 0; i < 8;) { c = fgetc(proc_stat); if (c != ' ') cpu_stat[i] = 10 * cpu_stat[i] + (c - '0'); else i++; } total = cpu_stat[0]+cpu_stat[1]+cpu_stat[2]; idle = cpu_stat[3]+cpu_stat[4]; total += cpu_stat[5]+cpu_stat[6]+cpu_stat[7]; } usage_p = (idle + total) - (prev_idle + prev_total); usage_p -= (idle - prev_idle); usage_p *= 100; usage_p /= (idle + total) - (prev_idle + prev_total); snprintf(cpu_str,11,ICON_CPU"%02.2f%%",usage_p); show_stat: if (usage_p < 60) block(cpu_str,"#222222","#acae3299","#acae3299"); else block(cpu_str,"#222222","#ea544399","#ea544399"); }