diff options
-rw-r--r-- | cpu-widget/cpu-widget.lua | 114 |
1 files changed, 79 insertions, 35 deletions
diff --git a/cpu-widget/cpu-widget.lua b/cpu-widget/cpu-widget.lua index d256147..5db1778 100644 --- a/cpu-widget/cpu-widget.lua +++ b/cpu-widget/cpu-widget.lua @@ -39,16 +39,46 @@ local function worker(args) { widget = wibox.widget.textbox }, spacing = 4, layout = wibox.layout.fixed.vertical, - } + local is_update = true local process_rows = { - { widget = wibox.widget.textbox }, - spacing = 4, + --{ widget = wibox.widget.textbox }, + spacing = 8, layout = wibox.layout.fixed.vertical, } + local process_header = { + --{ + { + markup = '<b>PID</b>', + forced_width = 40, + widget = wibox.widget.textbox + }, + { + markup = '<b>Name</b>', + forced_width = 40, + widget = wibox.widget.textbox + }, + { + { + markup = '<b>%CPU</b>', + forced_width = 40, + widget = wibox.widget.textbox + }, + { + markup = '<b>%MEM</b>', + forced_width = 40, + widget = wibox.widget.textbox + }, + layout = wibox.layout.fixed.horizontal + }, + layout = wibox.layout.align.horizontal + --}, + --widget = wibox.container.background + } + local popup = awful.popup{ ontop = true, visible = false, @@ -59,6 +89,8 @@ local function worker(args) offset = { y = 5 }, widget = {} } + popup:connect_signal("mouse::enter", function(c) is_update = false end) + popup:connect_signal("mouse::leave", function(c) is_update = true end) cpugraph_widget:buttons( awful.util.table.join( @@ -82,7 +114,7 @@ local function worker(args) end local cpus = {} - watch([[bash -c "cat /proc/stat | grep '^cpu.' ; ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head"]], 1, + watch([[bash -c "cat /proc/stat | grep '^cpu.' ; ps -eo pid=,comm=,%cpu=,%mem=,cmd= --sort=-%cpu | head"]], 1, function(widget, stdout) local i = 1 local j = 1 @@ -141,56 +173,67 @@ local function worker(args) cpu_rows[i] = row i = i + 1 else - local pid, cmd, cpu, mem = line:match('(%d+)%s+(%w+)%s+([%d.]+)%s+([%d.]+)') + if is_update == true then - if pid == nil then - pid = 'PID' - cmd = 'Name' - cpu = '%CPU' - mem = '%MEM' - - end + local pid, comm, cpu, mem, cmd = line:match('(%d+)%s+(%w+)%s+([%d.]+)%s+([%d.]+)%s+(.+)') + cmd = string.sub(cmd,0, 300) + cmd = cmd .. '...' + if pid == nil then + pid = 'PID' + comm = 'Name' + cpu = '%CPU' + mem = '%MEM' + end - local row = wibox.widget { - { - { - text = pid, - forced_width = 40, - widget = wibox.widget.textbox - }, - { - text = cmd, - forced_width = 40, - widget = wibox.widget.textbox - }, + local row = wibox.widget { { { - text = cpu, + text = pid, forced_width = 40, widget = wibox.widget.textbox }, { - text = mem, + text = comm, forced_width = 40, widget = wibox.widget.textbox }, + { + { + text = cpu, + forced_width = 40, + widget = wibox.widget.textbox + }, + { + text = mem, + forced_width = 40, + widget = wibox.widget.textbox + }, + layout = wibox.layout.align.horizontal + }, layout = wibox.layout.align.horizontal }, - layout = wibox.layout.align.horizontal - }, - widget = wibox.container.background - } + widget = wibox.container.background + } - row:connect_signal("mouse::enter", function(c) c:set_bg(beautiful.bg_focus) end) - row:connect_signal("mouse::leave", function(c) c:set_bg(beautiful.bg_normal) end) + row:connect_signal("mouse::enter", function(c) c:set_bg(beautiful.bg_focus) end) + row:connect_signal("mouse::leave", function(c) c:set_bg(beautiful.bg_normal) end) + awful.tooltip { + objects = { row }, + mode = 'outside', + preferred_positions = {'bottom'}, + timer_function = function() + return cmd:gsub('%s', '\n\t') + end, + } - process_rows[j] = row + process_rows[j] = row - j = j + 1 - end + j = j + 1 + end + end end popup:setup { { @@ -201,6 +244,7 @@ local function worker(args) color = beautiful.bg_focus, widget = wibox.widget.separator }, + process_header, process_rows, layout = wibox.layout.fixed.vertical, }, |