From 88e37c2fec87cfd4dba428faaabfb10487ce24f1 Mon Sep 17 00:00:00 2001 From: streetturtle Date: Sun, 13 Jun 2021 21:12:09 -0400 Subject: [PATCH 1/2] make beautiful optional in fs-widget --- fs-widget/fs-widget.lua | 88 ++++++++++++++++++++++++++++------------- 1 file changed, 61 insertions(+), 27 deletions(-) diff --git a/fs-widget/fs-widget.lua b/fs-widget/fs-widget.lua index b5f75f2..6c1ed54 100644 --- a/fs-widget/fs-widget.lua +++ b/fs-widget/fs-widget.lua @@ -6,29 +6,65 @@ local gears = require("gears") local storage_bar_widget = {} +--- Table with widget configuration, consists of three sections: +--- - general - general configuration +--- - widget - configuration of the widget displayed on the wibar +--- - popup - configuration of the popup +local config = {} + +-- general +config.mounts = { '/' } +config.refresh_rate = 60 + +-- wibar widget +config.widget_width = 40 +config.widget_bar_color = '#aaaaaa' +config.widget_onclick_bg = '#ff0000' +config.widget_border_color = '#535d6c66' +config.widget_background_color = '#22222233' + +-- popup +config.popup_bg = '#22222233' +config.popup_border_width = 1 +config.popup_border_color = '#535d6c66' +config.popup_bar_color = '#aaaaaa' +config.popup_bar_background_color = '#22222233' +config.popup_bar_border_color = '#535d6c66' + local function worker(user_args) local args = user_args or {} - local mounts = args.mounts or { '/' } - local timeout = args.timeout or 60 + + if beautiful ~= nil then + config.widget_bar_color = beautiful.fg_normal + config.widget_border_color = beautiful.bg_focus + config.widget_onclick_bg = beautiful.bg_focus + config.widget_background_color = beautiful.bg_normal + + config.popup_bg = beautiful.bg_normal + config.popup_border_color = beautiful.bg_focus + config.popup_bar_color = beautiful.fg_normal + config.popup_bar_border_color = beautiful.bg_focus + config.popup_bar_background_color = beautiful.bg_normal + config.popup_bar_border_color = beautiful.bg_focus + end + + for prop, value in pairs(args) do + config[prop] = value + end storage_bar_widget = wibox.widget { { id = 'progressbar', + color = config.widget_bar_color, max_value = 100, forced_height = 20, - forced_width = 35, - paddings = 1, + forced_width = config.widget_width, + paddings = 2, margins = 4, border_width = 1, border_radius = 2, - border_color = beautiful.fg_normal, - background_color = beautiful.bg_normal, - bar_border_width = 1, - bar_border_color = beautiful.bg_focus, - color = "linear:150,0:0,0:0," - .. beautiful.fg_normal - .. ":0.3," .. beautiful.bg_urgent .. ":0.6," - .. beautiful.fg_normal, + border_color = config.widget_border_color, + background_color = config.widget_background_color, widget = wibox.widget.progressbar }, shape = function(cr, width, height) @@ -63,11 +99,12 @@ local function worker(user_args) disk_header:ajust_ratio(1, 0, 0.3, 0.7) local popup = awful.popup { + bg = config.popup_bg, ontop = true, visible = false, shape = gears.shape.rounded_rect, - border_width = 1, - border_color = beautiful.bg_normal, + border_width = config.popup_border_width, + border_color = config.popup_border_color, maximum_width = 400, offset = { y = 5 }, widget = {} @@ -80,7 +117,7 @@ local function worker(user_args) popup.visible = not popup.visible storage_bar_widget:set_bg('#00000000') else - storage_bar_widget:set_bg(beautiful.bg_focus) + storage_bar_widget:set_bg(config.widget_background_color) popup:move_next_to(mouse.current_widget_geometry) end end) @@ -88,10 +125,11 @@ local function worker(user_args) ) local disks = {} - watch([[bash -c "df | tail -n +2"]], timeout, + watch([[bash -c "df | tail -n +2"]], config.refresh_rate, function(widget, stdout) for line in stdout:gmatch("[^\r\n$]+") do - local filesystem, size, used, avail, perc, mount = line:match('([%p%w]+)%s+([%d%w]+)%s+([%d%w]+)%s+([%d%w]+)%s+([%d]+)%%%s+([%p%w]+)') + local filesystem, size, used, avail, perc, mount = + line:match('([%p%w]+)%s+([%d%w]+)%s+([%d%w]+)%s+([%d%w]+)%s+([%d]+)%%%s+([%p%w]+)') disks[mount] = {} disks[mount].filesystem = filesystem @@ -101,12 +139,12 @@ local function worker(user_args) disks[mount].perc = perc disks[mount].mount = mount - if disks[mount].mount == mounts[1] then + if disks[mount].mount == config.mounts[1] then widget:set_value(tonumber(disks[mount].perc)) end end - for k, v in ipairs(mounts) do + for k, v in ipairs(config.mounts) do local row = wibox.widget { { @@ -115,22 +153,18 @@ local function worker(user_args) widget = wibox.widget.textbox }, { + color = config.popup_bar_color, max_value = 100, value = tonumber(disks[v].perc), forced_height = 20, paddings = 1, margins = 4, border_width = 1, - border_color = beautiful.bg_focus, - background_color = beautiful.bg_normal, + border_color = config.popup_bar_border_color, + background_color = config.popup_bar_background_color, bar_border_width = 1, - bar_border_color = beautiful.bg_focus, - color = "linear:150,0:0,0:0," - .. beautiful.fg_normal - .. ":0.3," .. beautiful.bg_urgent .. ":0.6," - .. beautiful.fg_normal, + bar_border_color = config.popup_bar_border_color, widget = wibox.widget.progressbar, - }, { text = math.floor(disks[v].used / 1024 / 1024) From 45ec8f85b83d164caeab2b7fbc321d1e635b6748 Mon Sep 17 00:00:00 2001 From: Aire-One Date: Sun, 20 Jun 2021 12:05:12 +0200 Subject: [PATCH 2/2] add(fs-widget): Implement an alternative config pattern --- fs-widget/fs-widget.lua | 52 +++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/fs-widget/fs-widget.lua b/fs-widget/fs-widget.lua index 6c1ed54..ca76193 100644 --- a/fs-widget/fs-widget.lua +++ b/fs-widget/fs-widget.lua @@ -34,37 +34,27 @@ config.popup_bar_border_color = '#535d6c66' local function worker(user_args) local args = user_args or {} - if beautiful ~= nil then - config.widget_bar_color = beautiful.fg_normal - config.widget_border_color = beautiful.bg_focus - config.widget_onclick_bg = beautiful.bg_focus - config.widget_background_color = beautiful.bg_normal - - config.popup_bg = beautiful.bg_normal - config.popup_border_color = beautiful.bg_focus - config.popup_bar_color = beautiful.fg_normal - config.popup_bar_border_color = beautiful.bg_focus - config.popup_bar_background_color = beautiful.bg_normal - config.popup_bar_border_color = beautiful.bg_focus - end - - for prop, value in pairs(args) do - config[prop] = value + -- Setup config for the widget instance. + -- The `_config` table will keep the first existing value after checking + -- in this order: user parameter > beautiful > module default. + local _config = {} + for prop, value in pairs(config) do + _config[prop] = args[prop] or beautiful[prop] or value end storage_bar_widget = wibox.widget { { id = 'progressbar', - color = config.widget_bar_color, + color = _config.widget_bar_color, max_value = 100, forced_height = 20, - forced_width = config.widget_width, + forced_width = _config.widget_width, paddings = 2, margins = 4, border_width = 1, border_radius = 2, - border_color = config.widget_border_color, - background_color = config.widget_background_color, + border_color = _config.widget_border_color, + background_color = _config.widget_background_color, widget = wibox.widget.progressbar }, shape = function(cr, width, height) @@ -99,12 +89,12 @@ local function worker(user_args) disk_header:ajust_ratio(1, 0, 0.3, 0.7) local popup = awful.popup { - bg = config.popup_bg, + bg = _config.popup_bg, ontop = true, visible = false, shape = gears.shape.rounded_rect, - border_width = config.popup_border_width, - border_color = config.popup_border_color, + border_width = _config.popup_border_width, + border_color = _config.popup_border_color, maximum_width = 400, offset = { y = 5 }, widget = {} @@ -117,7 +107,7 @@ local function worker(user_args) popup.visible = not popup.visible storage_bar_widget:set_bg('#00000000') else - storage_bar_widget:set_bg(config.widget_background_color) + storage_bar_widget:set_bg(_config.widget_background_color) popup:move_next_to(mouse.current_widget_geometry) end end) @@ -125,7 +115,7 @@ local function worker(user_args) ) local disks = {} - watch([[bash -c "df | tail -n +2"]], config.refresh_rate, + watch([[bash -c "df | tail -n +2"]], _config.refresh_rate, function(widget, stdout) for line in stdout:gmatch("[^\r\n$]+") do local filesystem, size, used, avail, perc, mount = @@ -139,12 +129,12 @@ local function worker(user_args) disks[mount].perc = perc disks[mount].mount = mount - if disks[mount].mount == config.mounts[1] then + if disks[mount].mount == _config.mounts[1] then widget:set_value(tonumber(disks[mount].perc)) end end - for k, v in ipairs(config.mounts) do + for k, v in ipairs(_config.mounts) do local row = wibox.widget { { @@ -153,17 +143,17 @@ local function worker(user_args) widget = wibox.widget.textbox }, { - color = config.popup_bar_color, + color = _config.popup_bar_color, max_value = 100, value = tonumber(disks[v].perc), forced_height = 20, paddings = 1, margins = 4, border_width = 1, - border_color = config.popup_bar_border_color, - background_color = config.popup_bar_background_color, + border_color = _config.popup_bar_border_color, + background_color = _config.popup_bar_background_color, bar_border_width = 1, - bar_border_color = config.popup_bar_border_color, + bar_border_color = _config.popup_bar_border_color, widget = wibox.widget.progressbar, }, {