dotfiles/notion/statusd_timelogger.lua
2020-08-12 02:29:03 +04:00

53 lines
1.4 KiB
Lua

local timelogger_base_settings = {
update_interval = 5*1000 -- 5 seconds
}
local timelogger_settings = timelogger_base_settings
local timelogger_timer
-- Read the active timelogger
local function read_timelogger_data ()
local f = assert(io.popen("timelogger status"))
local current = f:read("*all")
f:close()
local f = assert(io.popen("timelogger today"))
local total = f:read("*all")
f:close()
return tonumber(current), tonumber(total)
end
-- Write the current state to the statusbar:
local function inform_timelogger ()
local tl_current, tl_total = read_timelogger_data()
statusd.inform("timelogger", tostring(math.floor(tl_current/60).." min / "..tostring(math.ceil(tl_total/3600).." hr")))
if tl_current >= 40*60 then
statusd.inform("timelogger_hint", "critical")
elseif tl_current >= 25*60 then
statusd.inform("timelogger_hint", "important")
else
statusd.inform("timelogger_hint", "normal")
end
end
-- Statusbar update loop:
local function update_timelogger ()
inform_timelogger()
timelogger_timer:set(timelogger_settings.update_interval, update_timelogger)
end
-- Run the script:
if statusd then
-- we're a statusbar plugin:
timelogger_settings = table.join(statusd.get_config("timelogger"), timelogger_base_settings)
timelogger_timer = statusd.create_timer()
update_timelogger()
end
-- vim: set ts=4 sw=4 expandtab