An open API service indexing awesome lists of open source software.

https://github.com/tj/pomo

Ruby Pomodoro app for the command-line (time / task management)
https://github.com/tj/pomo

Last synced: 9 months ago
JSON representation

Ruby Pomodoro app for the command-line (time / task management)

Awesome Lists containing this project

README

          

# Pomo [![Build Status](https://travis-ci.org/visionmedia/pomo.png?branch=master)](https://travis-ci.org/visionmedia/pomo) [![Dependency Status](https://gemnasium.com/visionmedia/pomo.png)](https://gemnasium.com/visionmedia/pomo) [![Code Climate](https://codeclimate.com/github/visionmedia/pomo.png)](https://codeclimate.com/github/visionmedia/pomo)

Command-line application for the [Pomodoro](http://www.pomodorotechnique.com/)
time management technique, with notification and tmux status bar support.

## Description

With Pomo you can add, remove, list, view, and start timing tasks all via the
command-line with a simple, slick interface. You are reminded of the remaining
time on a task via Notification Center, Growl, libnotify, or Quicksilver.
These notifications appear half-way, at the 5 minute point, and when the task
duration has expired. Also, the Pomo timer can be displayed in your tmux
status bar.

## Installation

$ gem install pomo

## Configuration

Pomo uses `~/.pomorc` for configuration options.

To initialize a default configuration file:

$ pomo initconfig

See [Configuration Options](#configuration-options) for more details on all the available options.

## Task Selection API

Taken from `pomo help`:

pomo provides a unified task selection api which can be used
with most of the commands. Commands with [task] or [task ...]
in their synopsis accept only single or both single and multiple
task selection, respectively.

Single task selection:
n : selects a single task by index : Ex: pomo remove 1
first : selects the first task : Ex: pomo remove first
last : selects the last task : Ex: pomo remove last

Multiple task selection:
[n ]+ : selects several tasks by index : Ex: pomo remove 2 8 1
[n..n]+ : selects a range of tasks : Ex: pomo remove 5..9 11..14
[n..-n]+ : selects a range of tasks : Ex: pomo remove 2..-1
[api ]+ : selects several tasks by api : Ex: pomo remove first last
complete : selects complete tasks : Ex: pomo remove complete
incomplete : selects incomplete tasks : Ex: pomo remove incomplete
all : selects all tasks : Ex: pomo remove all

## Examples

* View global or command specific help:

$ pomo help
$ pomo help add
$ pomo help remove

* Get started by adding a task:

$ pomo add "Fix IE6 stying issues"

And another:

$ pomo add "Destroy IE6" --description "because IE6 is terrible"

* List your tasks (or use `pomo` which defaults to `pomo list`):

$ pomo list
0. Fix IE6 stying issues : 25 minutes
1. Destroy IE6 : 25 minutes

* Start the first incomplete task:

$ pomo start

A notification window will display:

![Pomo OS X Notification](http://i.imgur.com/iEfdZ.png)

* Alternatively, you can start the first incomplete task with a progress bar:

$ pomo start --progress
Started Fix IE6 stying issues, you have 25 minutes :)
(=........................) 24 minutes remaining

* Once you have completed the task, list again (alternatively `pomo ls`) for remaining tasks:

$ pomo ls
1. Destroy IE6 : 25 minutes

* Or take a break:

$ pomo break
$ pomo break 10
$ pomo break --length 10

* List all tasks:

$ pomo ls --all
✓ 0. Fix IE6 stying issues : 25 minutes
1. Destroy IE6 : 25 minutes

* List only completed tasks:

$ pomo ls --complete
✓ 0. Fix IE6 stying issues : 25 minutes

* At any time mid-task you may terminate pomo via CTRL + C, at which
time you may manually complete the task:

$ pomo complete first
$ pomo complete last
$ pomo complete 1
$ pomo complete all
$ pomo complete incomplete
$ pomo complete 5..7

* The next time you run `pomo start` the first incomplete task
will start:

$ pomo start

Or choose a specific task:

$ pomo start first
$ pomo start last
$ pomo start 5

* You may also remove tasks:

$ pomo remove first
$ pomo remove last
$ pomo remove 2
$ pomo remove 1
$ pomo remove 6
$ pomo rm first
$ pomo rm 2..5
$ pomo rm 1..-1

* View task details:

$ pomo show first
$ pomo show last
$ pomo show 5
$ pomo show 1 2 3

* Remove all tasks:

$ pomo remove all
$ pomo rm all

* Or if you prefer, create a directory specific task list. Pomo will
auto-detect `./.pomo` in this directory, and utilize its contents.

$ pomo init

## Configuration Options

The default configuration for pomo is as follows:

* Notification library is set to Notification Center on OSX 10.8; Growl on OSX
10.7 or less and Windows; and libnotify on Linux
* Progress bar is turned off
* tmux integration is turned off

Settings are easily customizable. Taken from `pomo help initconfig`:

Examples:

# Configure with notification center, no progress bar, and tmux integration
pomo initconfig --notifier notification_center --no-progress --tmux

Options:
--notifier Specify notificaiton library: `notification_center`, `libnotify`, `growl`, `quicksilver`
--[no-]progress Run with progress bar
--[no-]tmux Refresh tmux status bar on timer change
--[no-]force force overwrite of existing config file

### Tmux Status Bar Integration

Pomo's timer can be displayed in tmux's status bar with the following
configuration set:

pomo initconfig --tmux

Then add the below to your `~/.tmux.conf`:

set-option -g status-right '#(cat ~/.pomo_stat)'

The timer will display with the default color when not active,
green during a Pomodoro, red during the last 5 minutes of a Pomodoro,
and blue during a break e.g.

![tmux status bar](http://i.imgur.com/uIzM3.png)

## Contributing

We :heart: pull requests and feedback. Feel free to
[submit a ticket](https://github.com/visionmedia/pomo/issues) or see
[CONTRIBUTING](CONTRIBUTING.md)
for details on pull requests.

## Copyright

Copyright (c) 2012 TJ Holowaychuk. See
[LICENSE](LICENSE.md)
for details.