pomo
is a simple CLI for using the Pomodoro Technique. There are some amazing task management systems but pomo
is more of a task execution or timeboxing system. pomo
helps you track what you did, how long it took you to do it, and how much effort you expect it to take.
The Pomodoro Technique is simple and effective:
- Decide on a task you want to accomplish
- Break the task into timed intervals (pomodoros), [approx. 25 min]
- After each pomodoro take a short break [approx. 3 - 5 min]
- Once all pomodoros are completed take a longer break [approx 15 - 20 min]
- Repeat
git clone git@github.com:kevinschoon/pomo.git
cd pomo
make
Once pomo
is installed you need to initialize it's database.
pomo init
Start a 4 pomodoro session at 25 minute intervals:
pomo start -t my-project "write some codes"
Pomo has a few configuration options which can be read from a JSON file in Pomo's state directory ~/.pomo/config.json
.
You can map colors to specific tags in the colors
field.
Example:
{
"colors": {
"my-project": "hiyellow",
"another-project": "green"
}
}
By default pomo will setup a Unix socket and serve it's status there.
echo | socat stdio UNIX-CONNECT:/home/kevin/.pomo/pomo.sock | jq .
{
"state": 1,
"remaining": 1492000000000,
"count": 0,
"n_pomodoros": 4
}
Alternately by setting the publish
flag to true
it will publish it's status
to an existing socket.
The Pomo CLI can output the current state of a running task session via the pomo status
making it easy to script and embed it's output in various Linux status bars.
You can create a module with the custom/script
type and
embed Pomo's status output in your Polybar:
[module/pomo]
type = custom/script
interval = 1
exec = pomo status
Configured this bar by setting publish
to true
.
widget = {
plugin = "unixsock",
opts = {
path = "pomo.sock",
timeout = 2,
},
cb = function(t)
local full_text
local foreground = ""
local background = ""
if t.what == "line" then
if string.match(t.line, "R") then
-- green
foreground = "#ffffff"
background = "#307335"
end
if string.match(t.line, "B") or string.match(t.line, "P") or string.match(t.line, "C") then
-- red
foreground = "#ffffff"
background = "ff8080"
end
return { full_text = t.line, background = background, foreground = foreground }
elseif t.what == "timeout" then
return { full_text = "-" }
elseif t.what == "hello" then
return { full_text = "-" }
end
end,
}
- Generate charts/burn down
- ??