X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/e79cd9c029d0aa88327e62573602aa4748006641..d58ac139b6198118314a4fe640abe18e3f816380:/widgets/net.lua?ds=sidebyside diff --git a/widgets/net.lua b/widgets/net.lua index 2585ad4..702937c 100644 --- a/widgets/net.lua +++ b/widgets/net.lua @@ -13,7 +13,6 @@ local notify_fg = require("beautiful").fg_focus local naughty = require("naughty") local wibox = require("wibox") -local io = { popen = io.popen } local string = { format = string.format, gsub = string.gsub, match = string.match } @@ -22,24 +21,20 @@ local setmetatable = setmetatable -- Network infos -- lain.widgets.net -local net = { - last_t = 0, - last_r = 0 -} - -function net.get_device() - f = io.popen("ip link show | cut -d' ' -f2,9") - ws = f:read("*a") - f:close() - ws = ws:match("%w+: UP") or ws:match("ppp%w+: UNKNOWN") - if ws ~= nil then - return ws:match("(%w+):") - else - return "network off" - end -end local function worker(args) + local net = { last_t = 0, last_r = 0 } + + function net.get_device() + local ws = helpers.read_pipe("ip link show | cut -d' ' -f2,9") + ws = ws:match("%w+: UP") or ws:match("ppp%w+: UNKNOWN") + if ws ~= nil then + return ws:match("(%w+):") + else + return "network off" + end + end + local args = args or {} local timeout = args.timeout or 2 local units = args.units or 1024 --kb @@ -103,7 +98,8 @@ local function worker(args) end helpers.newtimer(iface, timeout, update) - return net.widget + + return setmetatable(net, { __index = net.widget }) end -return setmetatable(net, { __call = function(_, ...) return worker(...) end }) +return setmetatable({}, { __call = function(_, ...) return worker(...) end })