X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/e73a70c2ab26caf981d356756d4f83ad8bfbdb5a..89bb71e154283db9edd656518073200821374100:/widgets/net.lua diff --git a/widgets/net.lua b/widgets/net.lua index d692df1..84751b6 100644 --- a/widgets/net.lua +++ b/widgets/net.lua @@ -13,7 +13,7 @@ local notify_fg = require("beautiful").fg_focus local naughty = require("naughty") local wibox = require("wibox") -local io = io +local io = { popen = io.popen } local tostring = tostring local string = { format = string.format, gsub = string.gsub } @@ -29,13 +29,13 @@ local net = { function net.get_device() f = io.popen("ip link show | cut -d' ' -f2,9") - ws = f:read("*all") + ws = f:read("*a") f:close() - ws = ws:match("%w+: UP") + ws = ws:match("%w+: UP") or ws:match("ppp%w+: UNKNOWN") if ws ~= nil then - return ws:gsub(": UP", "") + return ws:match("(%w+):") else - return "" + return "network off" end end @@ -44,29 +44,33 @@ local function worker(args) local timeout = args.timeout or 2 local iface = args.iface or net.get_device() local units = args.units or 1024 --kb + local notify = args.notify or "on" + local screen = args.screen or 1 local settings = args.settings or function() end net.widget = wibox.widget.textbox('') helpers.set_map(iface, true) - function net.update() + function update() + net_now = {} + if iface == "" then iface = net.get_device() end - carrier = helpers.first_line('/sys/class/net/' .. iface .. + net_now.carrier = helpers.first_line('/sys/class/net/' .. iface .. '/carrier') or "0" - state = helpers.first_line('/sys/class/net/' .. iface .. + net_now.state = helpers.first_line('/sys/class/net/' .. iface .. '/operstate') or "down" local now_t = helpers.first_line('/sys/class/net/' .. iface .. '/statistics/tx_bytes') or 0 local now_r = helpers.first_line('/sys/class/net/' .. iface .. '/statistics/rx_bytes') or 0 - sent = tostring((now_t - net.last_t) / timeout / units) - sent = string.gsub(string.format('%.1f', sent), ",", ".") + net_now.sent = tostring((now_t - net.last_t) / timeout / units) + net_now.sent = string.gsub(string.format('%.1f', net_now.sent), ",", ".") - received = tostring((now_r - net.last_r) / timeout / units) - received = string.gsub(string.format('%.1f', received), ",", ".") + net_now.received = tostring((now_r - net.last_r) / timeout / units) + net_now.received = string.gsub(string.format('%.1f', net_now.received), ",", ".") widget = net.widget settings() @@ -74,19 +78,18 @@ local function worker(args) net.last_t = now_t net.last_r = now_r - if carrier ~= "1" + if net_now.carrier ~= "1" and notify == "on" then if helpers.get_map(iface) then - n_title = iface - if n_title == "" then n_title = "network" end naughty.notify({ - title = n_title, + title = iface, text = "no carrier", timeout = 7, position = "top_left", icon = helpers.icons_dir .. "no_net.png", - fg = notify_fg or "#FFFFFF" + fg = notify_fg or "#FFFFFF", + screen = screen }) helpers.set_map(iface, false) end @@ -95,8 +98,7 @@ local function worker(args) end end - helpers.newtimer(iface, timeout, net.update) - + helpers.newtimer(iface, timeout, update) return net.widget end