From 2a8109419a96f7cf1a34ffce15ee5a41523b2a2d Mon Sep 17 00:00:00 2001 From: "martin f. krafft" Date: Mon, 23 Feb 2009 11:44:40 +0100 Subject: [PATCH] integrate bzed's calendar widget --- .config/awesome/rc.lua | 85 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua index bdbf42d..0d63e5b 100644 --- a/.config/awesome/rc.lua +++ b/.config/awesome/rc.lua @@ -1,6 +1,7 @@ -- Include awesome libraries, with lots of useful function! require("awful") require("beautiful") +require("naughty") -- Load Debian menu entries require("debian.menu") @@ -626,3 +627,87 @@ else end hook_battery() + +function displayMonth(month,year,weekStart) + local t,wkSt=os.time{year=year, month=month+1, day=0},weekStart or 1 + local d=os.date("*t",t) + local mthDays,stDay=d.day,(d.wday-d.day-wkSt+1)%7 + + local lines = {} + + for x=0,6 do + lines[x+1] = os.date("%a ",os.time{year=2006,month=1,day=x+wkSt}) + end + lines[8] = " " + + local writeLine = 1 + while writeLine < (stDay + 1) do + lines[writeLine] = lines[writeLine] .. " " + writeLine = writeLine + 1 + end + + for x=1,mthDays do + if writeLine == 8 then + writeLine = 1 + end + if writeLine == 1 or x == 1 then + lines[8] = lines[8] .. os.date(" %V",os.time{year=year,month=month,day=x}) + end + if (#(tostring(x)) == 1) then + x = " " .. x + end + lines[writeLine] = lines[writeLine] .. " " .. x + writeLine = writeLine + 1 + end + local header = os.date("%B %Y\n",os.time{year=year,month=month,day=1}) + header = string.rep(" ", math.floor((#(lines[1]) - #header) / 2 )) .. header + + return header .. table.concat(lines, '\n') +end + +local calendar = {} +function switchNaughtyMonth(switchMonths) + if (#calendar < 3) then return end + local swMonths = switchMonths or 1 + calendar[1] = calendar[1] + swMonths + calendar[3].box.widgets[2].text = displayMonth(calendar[1], calendar[2], 2) +end + +mytimebox.mouse_enter = function () + local month, year = os.date('%m'), os.date('%Y') + calendar = { month, year, + naughty.notify({ + text = displayMonth(month, year, 2), + timeout = 0, hover_timeout = 0.5, + width = 200, screen = mouse.screen + }) + } +end +mytimebox.mouse_leave = function () naughty.destroy(calendar[3]) end + +mytimebox:buttons({ + button({ }, 1, function() + switchNaughtyMonth(-1) + end), + button({ }, 3, function() + switchNaughtyMonth(1) + end), + button({ }, 4, function() + switchNaughtyMonth(-1) + end), + button({ }, 5, function() + switchNaughtyMonth(1) + end), + button({ 'Shift' }, 1, function() + switchNaughtyMonth(-12) + end), + button({ 'Shift' }, 3, function() + switchNaughtyMonth(12) + end), + button({ 'Shift' }, 4, function() + switchNaughtyMonth(-12) + end), + button({ 'Shift' }, 5, function() + switchNaughtyMonth(12) + end) +}) -- 2.39.2