X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/4148ccdfcd5ed620163f9d78e6224c684a358ac7..d00b63fdf2168a6d7c5ef6f7ca6d418fcd96f2b7:/widgets/fs.lua?ds=inline diff --git a/widgets/fs.lua b/widgets/fs.lua index 374d6eb..ec87191 100644 --- a/widgets/fs.lua +++ b/widgets/fs.lua @@ -9,7 +9,6 @@ local helpers = require("lain.helpers") local shell = require("awful.util").shell -local beautiful = require("beautiful") local focused = require("awful.screen").focused local wibox = require("wibox") local naughty = require("naughty") @@ -21,29 +20,28 @@ local setmetatable = setmetatable -- File system disk space usage -- lain.widgets.fs -local fs = {} +local fs = { unit = { ["mb"] = 1024, ["gb"] = 1024^2 } } --- Unit definitions -fs.unit = { ["mb"] = 1024, ["gb"] = 1024^2 } - -function fs.hide() naughty.destroy(fs.notification) end +function fs.hide() + if not fs.notification then return end + naughty.destroy(fs.notification) + fs.notification = nil +end function fs.show(seconds, scr) - fs.hide() + fs.update() - local cmd = (fs.options and string.format("dfs %s", fs.options)) or "dfs" - local ws = helpers.read_pipe(helpers.scripts_dir .. cmd):gsub("\n*$", "") + fs.hide() if fs.followtag then fs.notification_preset.screen = focused() elseif scr then - fs.notification_preset.screen = scr + fs.notification_preset.screen = scr or 1 end fs.notification = naughty.notify({ preset = fs.notification_preset, - text = ws, - timeout = seconds or 5, + timeout = seconds or 5 }) end @@ -57,16 +55,23 @@ local function worker(args) fs.options = args.options fs.followtag = args.followtag or false - fs.notification_preset = args.notification_preset or { fg = beautiful.fg_normal } + fs.notification_preset = args.notification_preset + + if not fs.notification_preset then + fs.notification_preset = { + font = "Monospace 10", + fg = "#FFFFFF", + bg = "#000000" + } + end fs.widget = wibox.widget.textbox() helpers.set_map(partition, false) - - function update() + function fs.update() fs_info, fs_now = {}, {} - helpers.async(string.format("%s -c 'LC_ALL=C df -k --output=target,size,used,avail,pcent'", shell), function(f) + helpers.async({ shell, "-c", "/usr/bin/env LC_ALL=C df -k --output=target,size,used,avail,pcent" }, function(f) for line in string.gmatch(f, "\n[^\n]+") do local m,s,u,a,p = string.match(line, "(/.-%s).-(%d+).-(%d+).-(%d+).-([%d]+)%%") m = m:gsub(" ", "") -- clean target from any whitespace @@ -94,19 +99,22 @@ local function worker(args) widget = fs.widget settings() - if notify == "on" and fs_now.used >= 99 and not helpers.get_map(partition) then + if notify == "on" and #fs_now.used > 0 and tonumber(fs_now.used) >= 99 and not helpers.get_map(partition) then naughty.notify({ - title = "warning", - text = partition .. " is empty!", - timeout = 8, - fg = "#000000", - bg = "#FFFFFF" + preset = naughty.config.presets.critical, + title = "Warning", + text = partition .. " is empty", }) helpers.set_map(partition, true) else helpers.set_map(partition, false) end end) + + local notifycmd = (fs.options and string.format("dfs %s", fs.options)) or "dfs" + helpers.async(helpers.scripts_dir .. notifycmd, function(ws) + fs.notification_preset.text = ws:gsub("\n*$", "") + end) end if showpopup == "on" then @@ -114,9 +122,9 @@ local function worker(args) fs.widget:connect_signal('mouse::leave', function () fs.hide() end) end - helpers.newtimer(partition, timeout, update) + helpers.newtimer(partition, timeout, fs.update) - return setmetatable(fs, { __index = fs.widget }) + return fs end return setmetatable(fs, { __call = function(_, ...) return worker(...) end })