diff options
Diffstat (limited to 'ram-widget/ram-widget.lua')
| -rw-r--r-- | ram-widget/ram-widget.lua | 77 | 
1 files changed, 41 insertions, 36 deletions
diff --git a/ram-widget/ram-widget.lua b/ram-widget/ram-widget.lua index 55b6fd7..49a7d3b 100644 --- a/ram-widget/ram-widget.lua +++ b/ram-widget/ram-widget.lua @@ -1,19 +1,23 @@  local awful = require("awful") +local beautiful = require("beautiful") +local gears = require("gears")  local watch = require("awful.widget.watch")  local wibox = require("wibox") +  local ramgraph_widget = {} -local function worker(args) -    local args = args or {} +local function worker(user_args) +    local args = user_args or {}      local timeout = args.timeout or 1      --- Main ram widget shown on wibar      ramgraph_widget = wibox.widget {          border_width = 0,          colors = { -            '#74aeab', '#26403f' +           beautiful.bg_urgent, -- used +           beautiful.fg_normal  -- free          },          display_labels = false,          forced_width = 25, @@ -21,28 +25,26 @@ local function worker(args)      }      --- Widget which is shown when user clicks on the ram widget -    local w = wibox { -        height = 200, -        width = 400, -        ontop = true, -        expand = true, -        bg = '#1e252c', -        max_widget_size = 500 -    } - -    w:setup { -        border_width = 0, -        colors = { -            '#5ea19d', -            '#55918e', -            '#4b817e', -        }, -        display_labels = false, -        forced_width = 25, -        id = 'pie', -        widget = wibox.widget.piechart +    local popup = awful.popup{ +       ontop = true, +       visible = false, +       widget = { +          widget = wibox.widget.piechart, +          forced_height = 200, +          forced_width = 400, +          colors = { +             beautiful.bg_urgent,           -- used +             beautiful.fg_normal,           -- free +             beautiful.border_color_active, -- buf_cache +          }, +       }, +       shape = gears.shape.rounded_rect, +       border_color = beautiful.border_color_active, +       border_width = 1, +       offset = { y = 5 },      } +    --luacheck:ignore 231      local total, used, free, shared, buff_cache, available, total_swap, used_swap, free_swap      local function getPercentage(value) @@ -50,17 +52,17 @@ local function worker(args)      end      watch('bash -c "LANGUAGE=en_US.UTF-8 free | grep -z Mem.*Swap.*"', timeout, -        function(widget, stdout, stderr, exitreason, exitcode) +        function(widget, stdout)              total, used, free, shared, buff_cache, available, total_swap, used_swap, free_swap =                  stdout:match('(%d+)%s*(%d+)%s*(%d+)%s*(%d+)%s*(%d+)%s*(%d+)%s*Swap:%s*(%d+)%s*(%d+)%s*(%d+)') -            widget.data = { used, total-used } widget.data = { used, total-used } +            widget.data = { used, total-used } -            if w.visible then -                w.pie.data_list = { -                    {'used ' .. getPercentage(used + used_swap), used + used_swap}, -                    {'free ' .. getPercentage(free + free_swap), free + free_swap}, -                    {'buff_cache ' .. getPercentage(buff_cache), buff_cache} +            if popup.visible then +               popup:get_widget().data_list = { +                  {'used ' .. getPercentage(used + used_swap), used + used_swap}, +                  {'free ' .. getPercentage(free + free_swap), free + free_swap}, +                  {'buff_cache ' .. getPercentage(buff_cache), buff_cache}                  }              end          end, @@ -69,23 +71,26 @@ local function worker(args)      ramgraph_widget:buttons(          awful.util.table.join( -            awful.button({}, 1, function() -                awful.placement.top_right(w, { margins = {top = 25, right = 10}, parent = awful.screen.focused() }) -                w.pie.data_list = { +           awful.button({}, 1, function() +                 popup:get_widget().data_list = {                      {'used ' .. getPercentage(used + used_swap), used + used_swap},                      {'free ' .. getPercentage(free + free_swap), free + free_swap},                      {'buff_cache ' .. getPercentage(buff_cache), buff_cache}                  } -                w.pie.display_labels = true -                w.visible = not w.visible + +                if popup.visible then +                   popup.visible = not popup.visible +                else +                   popup:move_next_to(mouse.current_widget_geometry) +                end              end)          )      ) -      return ramgraph_widget  end +  return setmetatable(ramgraph_widget, { __call = function(_, ...)      return worker(...)  end })  | 
