-function calendar:attach(widget, background, foreground)
- create(background, foreground)
- widget:connect_signal("mouse::enter", function () calendar:show() end)
- widget:connect_signal("mouse::leave", function () calendar:hide() end)
- widget:buttons(awful.util.table.join( awful.button({ }, 1, function ()
- calendar:show(0, -1) end),
- awful.button({ }, 3, function ()
- calendar:show(0, 1) end) ))
+function calendar.attach(widget, args)
+ local args = args or {}
+
+ calendar.cal = args.cal or "/usr/bin/cal"
+ 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
+ calendar.fg = args.fg or beautiful.fg_normal or "#FFFFFF"
+ calendar.bg = args.bg or beautiful.bg_normal or "#000000"
+ calendar.position = args.position or "top_right"
+ calendar.scr_pos = args.scr_pos or 1
+ calendar.followtag = args.followtag or false
+
+ calendar.offset = 0
+ calendar.notify_icon = nil
+
+ widget:connect_signal("mouse::enter", function () calendar.show(0, 0, calendar.scr_pos) end)
+ widget:connect_signal("mouse::leave", function () calendar.hide() end)
+ widget:buttons(awful.util.table.join(awful.button({ }, 1, function ()
+ calendar.show(0, -1, calendar.scr_pos) end),
+ awful.button({ }, 3, function ()
+ calendar.show(0, 1, calendar.scr_pos) end),
+ awful.button({ }, 4, function ()
+ calendar.show(0, -1, calendar.scr_pos) end),
+ awful.button({ }, 5, function ()
+ calendar.show(0, 1, calendar.scr_pos) end)))