diff options
Diffstat (limited to 'cpu-widget/cpu-widget.lua')
-rw-r--r-- | cpu-widget/cpu-widget.lua | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/cpu-widget/cpu-widget.lua b/cpu-widget/cpu-widget.lua new file mode 100644 index 0000000..e9d1264 --- /dev/null +++ b/cpu-widget/cpu-widget.lua @@ -0,0 +1,42 @@ +local watch = require("awful.widget.watch") +local wibox = require("wibox") + +cpugraph_widget = wibox.widget { + max_value = 100, + color = '#74aeab', + background_color = "#1e252c", + forced_width = 50, + step_width = 2, + step_spacing = 1, + widget = wibox.widget.graph +} + +cpu_widget = wibox.container.mirror(cpugraph_widget, { horizontal = true }) + +local total_prev = 0 +local idle_prev = 0 + +watch("cat /proc/stat | grep '^cpu '", 1, + function(widget, stdout, stderr, exitreason, exitcode) + local user, nice, system, idle, iowait, irq, softirq, steal, guest, guest_nice = + stdout:match('(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s(%d+)%s') + + local total = user + nice + system + idle + iowait + irq + softirq + steal + + local diff_idle = idle - idle_prev + local diff_total = total - total_prev + local diff_usage = (1000 * (diff_total - diff_idle) / diff_total + 5) / 10 + + if diff_usage > 80 then + widget:set_color('#ff4136') + else + widget:set_color('#74aeab') + end + + widget:add_value(diff_usage) + + total_prev = total + idle_prev = idle + end, + cpugraph_widget +) |