Kevin Schoon 3 years ago
155 commits
90b85349 90b853492d324c5b359508aaacda4e189bfaac7e
Merge pull request #55 from herbygillot/patch-1
File Commit Size Mode Time
.dockerignore add new build environment for cross compile 2 B -rw-r--r-- 6 years ago
.github run tests in ci NaN B d--------- 3 years ago
.gitignore fix missing demo on docs site 339 B -rw-r--r-- 3 years ago
.gitmodules add hugo sources 103 B -rw-r--r-- 7 years ago
LICENSE update license 1 KiB -rw-r--r-- 6 years ago
Makefile build bin/pomo by default 632 B -rw-r--r-- 3 years ago
README.md Merge pull request #55 from herbygillot/patch-1 3.7 KiB -rw-r--r-- 3 years ago
bin improve build support NaN B d--------- 7 years ago
cmd Merge pull request #35 from kevinschoon/cleanup_project_stru… NaN B d--------- 4 years ago
docs update docs NaN B d--------- 3 years ago
go.mod bump various dependencies 610 B -rw-r--r-- 3 years ago
go.sum bump various dependencies 5.8 KiB -rw-r--r-- 3 years ago
pkg Merge pull request #51 from amiel/publish-and-listen NaN B d--------- 3 years ago
tomato-icon.png refactor run loop, add simple libnotify support, improve not… 3.8 KiB -rw-r--r-- 7 years ago
www fix broken docs links NaN B d--------- 3 years ago

🍅 pomo

pomo

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.

Background

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

Installation

Source

git clone git@github.com:kevinschoon/pomo.git
cd pomo
make
# copy pomo somewhere on your $PATH
cp bin/pomo ~/bin/

Package Managers

On Arch Pomo is available on the aur.

On macOS, pomo can be installed via MacPorts.

Usage

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"

Configuration

Pomo has a few configuration options which can be read from a JSON file in Pomo’s state directory ~/.pomo/config.json.

colors

You can map colors to specific tags in the colors field.

Example:

{
"colors": {
"my-project": "hiyellow",
"another-project": "green"
}
}

Integrations

By default pomo will setup a Unix socket and serve it’s status there.

echo | socat stdio UNIX-CONNECT:$HOME/.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.

Status Bars

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.

Polybar

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

luastatus

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,
}

Roadmap

  • Generate charts/burn down
  • ??

Credits

Clone

HTTP

Subscribe

License

MIT

Authors

Kevin Schoon: 82%
Christos Kontas: 3%
strogiyotec: 2%
Steven Edwards: 1%
Jack Mordaunt: 1%

Analysis