Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A (very) simplistic command-line to-do/notes list manager in Ruby
Tag: v0.2.0

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


A very simplistic command-line to-do/note list manager in Ruby.


You should know this gem lacks of fancy things, meaning: social, cloud, mobile, web interface, etc.

Why another to-do list manager?

I spend a lot of time in the terminal and I didn't really like any of the current options.

How does Dooby works?

A bunch of lists

Dooby is directory-based, so you can maintain different to-do/notes lists in every directory you want.

For instance, I use one to-do list per project, that way I don't have all the tasks in one place so I can get focused in just one set of tasks, in one context.


Dooby doesn't like to handle priorities, that's your concern. The main goal of Dooby is to help me to handle my today/tomorrow tasks and to handle my personal notes.

Due dates

Due dates for today/tomorrow tasks? well, maybe later.

#tag #tag and #tag again and tell @jim to #tag everything in his %life as well

Dooby uses some special characters to visually help us to differentiate between things and let us search tasks very easily, the ones that you might recognize are @ and #, I stole the idea from Twitter, but of course they don't behave as in Twitter, the @ sign is not an username but a character to simply tag a person, that's all, nothing else (so far).


@peter, @john, @jim

Contexts (states of mind, mood, places, etc)

#today, #tomorrow, #urgent

#work, #home

#thinking, #sad


%website, %shoppinglist, %whatever

Most of these characters are meaningless to Dooby, she (yes, she's a woman) isn't aware of them, Dooby is aware only of some of them:


All the tasks tagged with #today and #urgent will be shown in a special section every time you list your to-dos/notes.

All the tasks tagged with #tomorrow will be marked with the tag #today at the next day.


Creating an alias

$ alias d='dooby'

Initializing Dooby

$ d init

This creates a .dooby/list.yml file in the current directory. Dooby will save all the tasks on it.

Adding items

$ d add "#fix the email error in %website, talk to @peter #today"

$ d a "learn to use the #aliases of the #commands"

Listing items

$ d list @peter

$ d l today

$ d l \#today

$ d l "#today"

$ d l %website

$ d l @
 > shows tasks related to people

$ d l %
 > shows all the tasks with a related project

Listing items interactively

$ d il

> #today
Showing items containing: #today
 (b954bf)  #fix the email error in %website, talk to @peter #today
 (9cfbf4)  Need to go to the #doctor @hendrix #today

> #doctor
Showing items containing: #doctor
(9cfbf4)  Need to go to the #doctor #today

> email
Showing items containing: email
(b954bf)  #fix the email error in %website, talk to @peter #today

Note: Dooby uses SHA1 as Task ID.

Listing all the hashtags you have used

$ d l#

Listing all the people you have tagged

$ d l@

Listing all the projects you have tagged

$ d l%

Editing items

Dooby supports autocompletion of task IDs in the delete and the edit commands, to fire it just do the same as in a bash shell, press TAB TAB.

$ d edit


$ d e
b954bf 9cfbf4 (we only have 2 tasks)

$ d e
Task ID > b TAB

and you'll see that the task id have been auto-completed

$ d e
Task ID > b954bf

now press Enter and TAB TAB again if you want the original text of the item:

$ d e
Task ID > b954bf
TAB or up arrow to edit > TAB

$ d e
Task ID > b954bf
TAB or up arrow to edit > #fix the email error in %website, talk to @peter #today

$ d e
Task ID > b954bf
TAB or up arrow to edit > #fix the email error in %website #today

Edit it and press Enter and the task will be saved.

Deleting items

$ d delete


$ d d
521a3d 9cfbf4

Note: the SHA1 of the task we edited previously has changed because it's based on the content

$ d d
Task ID > 9cfbf4
9cfbf4 deleted...

Dooby won't ask you if you really want to delete the task.

$ d l
Showing all items...
 (521a3d)  #fix the email error in %website #today

Bulk delete

If you want to delete all the tasks containing a tag or set of tags this is what bulk delete is useful for. This feature will delete only by tag, not simple text, actually if you enter simple text it will simply ignore it.

Bulk delete supports auto-completion too. Say you want to delete all the tasks containing @hendrix AND #today.

$ d bulkdelete


$ d b
What do you want to bulk delete? (@, #, % allowed)
#today #doctor

$ d b
What do you want to bulk delete? (@, #, % allowed)
#today @hendrix

That's it

Deleting all the items

$ d flush


$ d f
Sure??? (yes/no)
All the task were deleted!

Deleting the .dooby directory and all the tasks

$ d trash


$ d t
Sure??? (yes/no)
No more dooby here T_T


You can check the help out using the -h flag

$ d -h

$ d t -h

$ d l -h

  dooby list [what_to_show*] [options]+

  Lists @people, #tags, %projects or tasks (default)

  what_to_show (-1 ~> what_to_show) 
  --help, -h 

Known bugs

  • Auto-completion doesn't work with at signs (@)

Special Thanks

Most of the the ideas to code dooby were based on the work of other programmers, here's a list of all of them:

Gina Trapani (
Lakshan Perera (
Scott Chacon (

Thanks all of you!

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2010 Rafael Magana. See LICENSE for details.

Something went wrong with that request. Please try again.