diff options
| author | pmakhov <pavel.makhov@savoirfairelinux.com> | 2017-09-27 19:45:25 -0400 | 
|---|---|---|
| committer | pmakhov <pavel.makhov@savoirfairelinux.com> | 2017-09-27 19:45:25 -0400 | 
| commit | 5facbc5e2b02c0b46b5a090bb76d382d009bb404 (patch) | |
| tree | 3d55e77e26f474052da4a2d1b1c42c9ac20cd726 /cpu-widget | |
| parent | e7fe0a2dbd3e7ec59e2ace511ef26bf0ec04b877 (diff) | |
cpu widget
Diffstat (limited to 'cpu-widget')
| -rw-r--r-- | cpu-widget/README.md | 34 | ||||
| -rw-r--r-- | cpu-widget/cpu-widget.lua | 42 | 
2 files changed, 76 insertions, 0 deletions
| diff --git a/cpu-widget/README.md b/cpu-widget/README.md new file mode 100644 index 0000000..77e0f93 --- /dev/null +++ b/cpu-widget/README.md @@ -0,0 +1,34 @@ +# CPU widget + +This widget shows the average CPU load among all cores of the machine: + + + +When the load is more than 80% the graph becomes red. You can easily customize the widget by changing colors, step width, step spacing, width and interval. + +## How it works + +To measure the load I took Paul Colby's bash [script](http://colby.id.au/calculating-cpu-usage-from-proc-stat/)and rewrote it in Lua, which was quite simple. +So awesome simply reads the first line of /proc/stat: + +```bash +$ cat /proc/stat | grep '^cpu ' +cpu  197294 718 50102 2002182 3844 0 2724 0 0 0 +``` + +and calculates the percentage. + +## Installation + +Clone/download repo and use widget in **rc.lua**: + +```lua +require("awesome-wm-widgets.cpu-widget.cpu-widget") +... +s.mytasklist, -- Middle widget +	{ -- Right widgets +    	layout = wibox.layout.fixed.horizontal, +		... +		cpu_widget, +		... +```
\ No newline at end of file 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 +) | 
