local clockingLog = hs.logger.new("clocking") | |
local clockingMenu = hs.menubar.new() | |
local currentTask = nil | |
local function trim(s) | |
return (s:gsub("^%s*(.-)%s*$", "%1")) | |
end | |
local function eval(sexp, callback) | |
hs.task.new( | |
"/usr/local/bin/emacsclient", | |
function(exitCode, stdOut, stdErr) | |
if exitCode == 0 then | |
callback(trim(stdOut)) | |
end | |
end, | |
{ "--eval", sexp } | |
):start() | |
end | |
local function updateClockingMenu() | |
eval( | |
"(org-clock-is-active)", | |
function(value) | |
if value == "nil" then | |
clockingMenu:setTitle("No Task") | |
else | |
eval( | |
"(org-clock-get-clock-string)", | |
function(value) | |
clockingMenu:setTitle(string.match(value, '"(.+)"')) | |
end | |
) | |
end | |
end | |
) | |
end | |
local function startUpdatingClockingMenu() | |
hs.timer.doEvery(10, updateClockingMenu) | |
end | |
local mod = {} | |
function mod.init() | |
updateClockingMenu() | |
startUpdatingClockingMenu() | |
end | |
return mod |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment