Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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