воскресенье, 20 января 2013 г.

Last emerge --sync widget для awesome 3.4

Простой виджет, отображающий информацию о последнем обновлении дерева портежей. 
Для начала добавим в rc.lua код виджета, который читает содержимое файла /usr/portage/metadata/timestamp.chk, и вносит его содержимое в таблицу.

-- {{{ Wibox
-- Last portage update
local sync = {
    ["{weekday}"] = "N/A",
    ["{date}"]    = "N/A",
    ["{month}"]   = "N/A",
    ["{year}"]    = "N/A",
    ["{hour}"]    = "N/A",
    ["{minutes}"] = "N/A"
}
local function timestamp()
    local l = {}
    local f = io.open("/usr/portage/metadata/timestamp.chk", "r")
    local t = f:read("*line")
    f:close()
    for w in t:gmatch("%w+") do
    table.insert(l,w)
    end
    sync["{weekday}"], sync["{date}"], sync["{month}"], sync["{year}"], sync["{hour}"], sync["{minutes}"] = l[1], l[2], l[3], l[4], l[5], l[6], l[7]
    return sync
end
 Инициализируем виджет (пример для отражения дня и месяца) :
    lastsyncwidget =  widget({ type = "textbox" })
  lastsyncwidget.text = sync["{date}"] .. " " .. sync["{month}"]
И, наконец, добавим таймер(пример для обновления каждые 30 секунд).
    timestamptimer = timer({ timeout = 30 })
    timestamptimer:add_signal("timeout", function()
    timestamp()
    lastsyncwidget.text = sync["{date}"] .. " " .. sync["{month}"]
    end)
    timestamptimer:start()
Теперь осталось только добавить виджет на wibox.

  mywibox[s].widgets = {
...
        lastsyncwidget,
...
    }