X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/912bd26ede8901c98fd8d7a35f8493ee448109ad..7dce46c34d7bf3e8ccdc03aa10d25d4df581326d:/widgets/maildir.lua?ds=sidebyside

diff --git a/widgets/maildir.lua b/widgets/maildir.lua
index 8cb821d..e963fc6 100644
--- a/widgets/maildir.lua
+++ b/widgets/maildir.lua
@@ -9,9 +9,11 @@
 
 local newtimer        = require("lain.helpers").newtimer
 local read_pipe       = require("lain.helpers").read_pipe
+local spairs          = require("lain.helpers").spairs
 
 local wibox           = require("wibox")
 
+local awful           = require("awful")
 local util            = require("lain.util")
 
 local io              = { popen  = io.popen }
@@ -19,13 +21,12 @@ local os              = { getenv = os.getenv }
 local pairs           = pairs
 local string          = { len    = string.len,
                           match  = string.match }
-local table           = { sort   = table.sort }
 
 local setmetatable    = setmetatable
 
 -- Maildir check
 -- lain.widgets.maildir
-local maildir = { total = 0 }
+local maildir = {}
 
 local function worker(args)
     local args         = args or {}
@@ -33,13 +34,18 @@ local function worker(args)
     local mailpath     = args.mailpath or os.getenv("HOME") .. "/Mail"
     local ignore_boxes = args.ignore_boxes or {}
     local settings     = args.settings or function() end
+    local ext_mail_cmd = args.external_mail_cmd
 
     maildir.widget = wibox.widget.textbox('')
 
     function update()
+        if ext_mail_cmd then
+            awful.util.spawn(ext_mail_cmd)
+        end
+
         -- Find pathes to mailboxes.
         local p = io.popen("find " .. mailpath ..
-                           " -mindepth 1 -maxdepth 1 -type d" ..
+                           " -mindepth 1 -maxdepth 2 -type d" ..
                            " -not -name .git")
         local boxes = {}
         repeat
@@ -56,7 +62,7 @@ local function worker(args)
                                     "-not -name '.*' -printf a")
 
                 -- Strip off leading mailpath.
-                local box = string.match(line, mailpath .. "/*([^/]+)")
+                local box = string.match(line, mailpath .. "/(.*)")
                 local nummails = string.len(mailstring)
                 if nummails > 0
                 then
@@ -66,13 +72,13 @@ local function worker(args)
         until line == nil
 
         p:close()
-        table.sort(boxes)
 
         newmail = "no mail"
+
         -- Count the total number of mails irrespective of where it was found
         total = 0
 
-        for box, number in pairs(boxes)
+        for box, number in spairs(boxes)
         do
             -- Add this box only if it's not to be ignored.
             if not util.element_in_table(box, ignore_boxes)
@@ -88,10 +94,8 @@ local function worker(args)
             end
         end
 
-        if maildir.total ~= total then
-            widget = maildir.widget
-            settings()
-        end
+        widget = maildir.widget
+        settings()
     end
 
     newtimer(mailpath, timeout, update, true)