November 27, 2018

Pomogoro: A CLI-based Time Tracking App

I’ve recently released pomogoro, a pomodoro time tracking app for the terminal with desktop notifications (Linux/OSX). It reads text based files like todo.txt, makes them selectable in a window and logs the times you work on them.

Pomogoro cli app screenshot

The Pomodoro Technique

Why do I use the Pomodoro Technique for my daily work?

  1. Because it makes me more productive. It slices your workday into small, easily digestible work bursts, so I don’t feel as exhausted as working for 2-3 long batches.
  2. It forces you to take breaks every 25 minutes. This means, you constantly step back from what you have done in the past 25 minutes and come back with a clear mind.
  3. Estimating the workload for the next 25 minutes fights Parkinson’s Law.

todo.txt

todo.txt is an amazing format to organize todo files. It’s uses simple txt files, so it’s cross-platform by nature. There are quite a lot of desktop/mobile apps which can work with this format.

Note: pomogoro does not require you to use the todo.txt format, it will work with any line-based text file.

Pomogoro Installation

Option 1: get a binary

Go to Releases and grep the appropriate release for your architecture.

# extract
tar -xvzf <release.tar.gz>
# move the binary to a directory in your $PATH
mv pomogoro ~/.local/bin

Option 2: go get

go get -u github.com/phux/pomogoro
cd $GOPATH/src/github.com/phux
dep ensure
go install

Configuration

pomogoro is configured via a config.toml.

TodoFile

Specifies the txt file to load the todos from (absolute path).

Example:

TodoFile = "/absolute/path/to/your/todo.txt"

LogFile

The path to the file pomogoro should log the tracked times to (absolute path). Does not have to exist before.

Example:

LogFile = "/absolute/path/to/pomogoro.log"

PomodoroEnabled

If set to false, pomogoro will not use pomodoro style time tracking but continuously track until the end of time.

Example:

PomodoroEnabled = true

PomodoroDuration

Specifies the time a pomodoro should run for.

Example:

PomodoroDuration = 25 # in minutes

BreakDuration

Duration of breaks in minutes.

Example:

BreakDuration = 5 # in minutes

LogBreakTime

Enable logging breaks as well.

Example:

LogBreakTime = true

LogIdleTime

After a break has finished, pomogoro switches to idle mode. When set to true, pomogoro will also log the time until you start the next task.

Example:

LogIdleTime = true

Usage

You must start pomgoro by providing an absolute path to a config.toml (see Configuration).

pomogoro --config <absolute/path/to/config.toml>

Key bindings

? brings up a help window with all key bindings.

Via j/k You can scroll up and down in the todo & history/summary windows.

Enter starts tracking on the selected task in the todo window.

p pauses the current task tracking, i.e. when somebody interrupts you.

c cancels the current task/break tracking completely.

s toggles between history and summary per task per day.

r reloads the todo file.

CTRL-c quits pomogoro.