summaryrefslogtreecommitdiff
path: root/cpu-widget/cpu-widget.lua
diff options
context:
space:
mode:
Diffstat (limited to 'cpu-widget/cpu-widget.lua')
-rw-r--r--cpu-widget/cpu-widget.lua42
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
+)