X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/c47857046f627ec5c80c8f8dbf9527cf1606a4b0..5cdae1d0ba99364e8a1a586217d37ac42271417e:/widgets/calendar.lua

diff --git a/widgets/calendar.lua b/widgets/calendar.lua
index b15d182..1a481ca 100644
--- a/widgets/calendar.lua
+++ b/widgets/calendar.lua
@@ -41,8 +41,6 @@ function calendar:show(t_out, inc_offset, scr)
     local offs  = inc_offset or 0
     local tims  = t_out or 0
     local today = tonumber(os.date('%d'))
-    local init_t = string.format("%s %s | sed -e 's/[\b]\\{3\\}//g'",
-                   calendar.cal, calendar.post_cal)
 
     calendar.offset = calendar.offset + offs
 
@@ -52,32 +50,25 @@ function calendar:show(t_out, inc_offset, scr)
         calendar.notify_icon = calendar.icons .. today .. ".png"
 
         -- bg and fg inverted to highlight today
-        f = io.popen(string.format("%s -e '0,/%d $/ s/ %d /<b> <span foreground=\"%s\" background=\"%s\">%d<\\/span> <\\/b>/'",
-                     init_t, today, today, calendar.bg, calendar.fg, today))
-
+        f = io.popen(calendar.cal_format(today))
     else -- no current month showing, no day to highlight
        local month = tonumber(os.date('%m'))
        local year = tonumber(os.date('%Y'))
 
        month = month + calendar.offset
 
-       if month > 12 then
-           month = month % 12
+       while month > 12 do
+           month = month - 12
            year = year + 1
-           if month <= 0 then
-               month = 12
-           end
-       elseif month < 1 then
+       end
+
+       while month < 1 do
            month = month + 12
            year = year - 1
-           if month <= 0 then
-               month = 1
-           end
        end
 
        calendar.notify_icon = nil
-
-       f = io.popen(string.format('%s %s %s %s', calendar.cal, month, year, calendar.post_cal))
+       f = io.popen(string.format('%s %s %s', calendar.cal, month, year))
     end
 
     c_text = "<tt><span font='" .. calendar.font .. " "
@@ -109,7 +100,10 @@ function calendar:attach(widget, args)
     local args = args or {}
 
     calendar.cal         = args.cal or "/usr/bin/cal"
-    calendar.post_cal    = args.post_cal or ""
+    calendar.cal_format  = args.cal_format or function(today)
+        return string.format("%s | sed -r -e 's/_\\x08//g' -e '0,/(^| )%d($| )/ s/(^| )%d($| )/\\1<b><span foreground=\"%s\" background=\"%s\">%d<\\/span><\\/b>\\2/'",
+                             calendar.cal, today, today, calendar.bg, calendar.fg, today)
+    end
     calendar.icons       = args.icons or icons_dir .. "cal/white/"
     calendar.font        = args.font or beautiful.font:gsub(" %d.*", "")
     calendar.font_size   = tonumber(args.font_size) or 11
@@ -119,9 +113,6 @@ function calendar:attach(widget, args)
     calendar.scr_pos     = args.scr_pos or 1
     calendar.followmouse = args.followmouse or false
 
-    calendar.fg = string.sub(calendar.fg, 1, 7)
-    calendar.bg = string.sub(calendar.bg, 1, 7)
-
     calendar.offset      = 0
     calendar.notify_icon = nil