vern@2010-12-17:/bin% ls tags
awesome, cli, and hack

附带节假日信息和阴历信息的命令行日历程序

命令行日历程序 cal,功能简单,没有节假日阴历信息,所以有了 gcal

包括: 除夕(Chinese New Year's Day)、清明(Tomb-Sweeping Day)、端午(Dragon Boat Festival)、中秋(Mid-Autumn Festival)等传统节日,以及元旦、五一、十一、儿童节、 教师节等。

% sudo apt-get install gcal
% gcal -i -s1 -qcn --chinese-months -cezk .

集成到 Awesome 窗口管理器,向 rc.lua 的 globalkeys = awful.util.table.join 里面添加以下内容:

awful.key({ modkey, "Control" }, "d", function ()
    if calendar ~= nil then
        naughty.destroy(calendar)
        calendar = nil
        return
    end
                                                                                                        --| 从这里开始是为了删除末尾的空行和换行符,这样显示在 naughty 的效果会更紧凑一些
    local f = io.popen("gcal -i -s1 --highlighting=\" :+: :*\" -qcn --chinese-months -cezk . | tail -n +3 | awk 'NR > 1 { print h } { h = $0 } END { ORS = \"\"; print h }'")
    local c = f:read("*a")
    f:close()

    calendar = naughty.notify({
        text = string.format('<span font_desc="%s">%s</span>', "Envy Code R", c), -- 必须用等宽字体,把 Envy Code R 改成你习惯的等宽字体
        position = "bottom_right", --font = "Envy Code R",
        timeout = 0, width = 460, screen = mouse.screen })
    end),