X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/be9ae6862fd89b31e1177a1b302609cf04358ed0..1a40fe80f801a27e047ce29f57215eca8f84bf6f:/widget/fs.lua diff --git a/widget/fs.lua b/widget/fs.lua index e680a3c..d1b7a97 100644 --- a/widget/fs.lua +++ b/widget/fs.lua @@ -13,7 +13,7 @@ local focused = require("awful.screen").focused local wibox = require("wibox") local naughty = require("naughty") local math = math -local sformat = string.format +local string = string local tconcat = table.concat local tonumber = tonumber local query_size = Gio.FILE_ATTRIBUTE_FILESYSTEM_SIZE @@ -52,6 +52,7 @@ local function factory(args) local args = args or {} local timeout = args.timeout or 600 local partition = args.partition + local threshold = args.threshold or 99 local showpopup = args.showpopup or "on" local settings = args.settings or function() end @@ -67,7 +68,8 @@ local function factory(args) end function fs.update() - local notifytable = { [1] = sformat("%-10s %-5s %s\t%s\t\n", "fs", "used", "free", "size") } + local notifytable = { [1] = string.format("%-10s %-5s %s\t%s\t\n", "path", "used", "free", "size") } + local pathlen = 10 fs_now = {} for _, mount in ipairs(Gio.unix_mounts_get()) do @@ -92,9 +94,11 @@ local function factory(args) } if fs_now[path].percentage > 0 then -- don't notify unused file systems - notifytable[#notifytable+1] = sformat("\n%-10s %-5s %3.2f\t%3.2f\t%s", path, + notifytable[#notifytable+1] = string.format("\n%-10s %-5s %.2f\t%.2f\t%s", path, fs_now[path].percentage .. "%", fs_now[path].free, fs_now[path].size, fs_now[path].units) + + pathlen = math.max(pathlen, #path) end end end @@ -103,12 +107,12 @@ local function factory(args) widget = fs.widget settings() - if partition and fs_now[partition] and fs_now[partition].used >= 99 then + if partition and fs_now[partition] and fs_now[partition].percentage >= threshold then if not helpers.get_map(partition) then naughty.notify { preset = naughty.config.presets.critical, title = "Warning", - text = partition .. " is full", + text = string.format("%s is above %d%% (%d%%)", partition, threshold, fs_now[partition].percentage) } helpers.set_map(partition, true) else @@ -116,6 +120,13 @@ local function factory(args) end end + if pathlen > 10 then -- formatting aesthetics + for i = 1, #notifytable do + local pathspaces = notifytable[i]:match("/%w*[/%w*]*%s*") or notifytable[i]:match("path%s*") + notifytable[i] = notifytable[i]:gsub(pathspaces, pathspaces .. string.rep(" ", pathlen - 10) .. "\t") + end + end + fs.notification_preset.text = tconcat(notifytable) end