Developer Todo List

About

Dev Todo is small command line application for maintaining lists of tasks. It stores tasks hierarchically, with each task given one of five priority levels. Data is stored as XML, so various XSLT templates can be executed on the XML to convert it into different formats (eg. HTML).

Data is stored in a file named .todo in the current directory. Depending on the setting of backup in your configuration file, there may also be files named .todo.1, .todo.2, etc.

The change log is also of interest for highlighting the newest features and bug fixes.

You can download Dev Todo from the bottom of this page.

Screen Shot

http://swapoff.org/files/devtodo/devtodo.jpg

News

Check the ChangeLog for a full list of changes.

Tips and Tricks

You can easily list all of your notes with either of the following two commands.

$ todo +
$ todo all

You can search note bodies, but remember that it only searches visible notes, so you might want to use it in conjunction with the previous tip.

$ todo all /foo

If you find that your todo list is overwhelming your screen, turn on summary mode. It displays only the first line of each note.

$ todo -s

Use the --timeout feature to only display notes if they haven't been viewed within a certain period of time. This is useful to avoid filling your terminal with Dev Todo output.

You can list all direct children of a certain note by the parents index.

$ todo 10

If you want to display all children of a note, prefix the index with a plus.

$ todo +10

Database Format

The Dev Todo XML data files are very simple. They consist mainly (see below) of nested <note> elements. The data section of each element is the note content, and each element may have several attributes.

The attributes recognised by Dev Todo as of version 0.1.18 are as follows.

priority

Possible values for priority are.

veryhigh

Very high priority notes are usually displayed in bright red.

high

Very high priority notes are usually displayed in bright yellow.

medium

Medium notes are usually displayed in the default console colour.

low

Low priority notes are usually displayed in bright cyan.

verylow

Very low priority notes are usually displayed in bright blue.

time

The time1 when the note was created.

done

The time when the note was completed.


  1. 1. All times are stored as UNIX time stamps

Thanks to Christian Hammond, a Dev Todo contributor, Dev Todo also has the ability to link a note in a data file to an external Dev Todo data file. This is accomplished with todo -l <file>. The body of the new item will be either the title of the data file linked to, or the path of the link. Having a valid title is preferable.

Example Files

An example Dev Todo data file follows.

<!-- Automagically generated by the ToDo program on 07/01/04, 23:08 -->
<todo version="0.1.18">
  <note priority="veryhigh" time="1002173843" done="1003923162">
    Build border firewall replacement.
  </note>
  <note priority="veryhigh" time="1002173859" done="1003923162">
    Build web/mail/DNS server replacement.
  </note>
  <note priority="veryhigh" time="1003405760" done="1003923162">
    Finish downloading Open Office (http://sf1.mirror.openoffice.org/638c/install638C''linux''intel.tar.gz)
  </note>
  <link filename="todo/.todo" priority="medium" time="0"/>
</todo>

Dev Todo is most useful in conjunction with a few small additions to your shell environment. In BASH, the following short script will automatically execute Dev Todo as you change directories. This is typically executed by your login script.

TODO_OPTIONS="--timeout --summary"

cd()
{
	if builtin cd "$@"; then
		devtodo ${TODO_OPTIONS}
	fi
}

pushd()
{
	if builtin pushd "$@"; then
		devtodo ${TODO_OPTIONS}
	fi
}

popd()
{
	if builtin popd "$@"; then
		devtodo ${TODO_OPTIONS}
	fi
}

# Run todo initially upon login
devtodo ${TODO_OPTIONS}

This is even easier in TCSH.

alias cwdcmd devtodo --timeout --summary
devtodo --timeout --summary

Dev Todo's default behavior can be changed via either a global resource file (typically in /etc/todorc) or a per-user resource file (~/.todorc). Following is a copy of my ~/.todorc.

filter -children
colour comment=+black
force-colour
timeout 10
paranoid
global-database $HOME/.todo
backup 2
comment
sort priority,-created,-text
format date=%d/%m/%y, %H:%M
on create {
  exec chmod 600 $TODODB
}
on add verbose
on edit verbose
on title verbose
on done verbose
on link verbose
on remove verbose
priority default

Download

Subversion
svn co http://swapoff.org/svn/todo/trunk
Browse Source
trunk, 0.1.20
Download Source
Slackware packages
i386 RPM's
Source RPM's
Debian
http://packages.debian.org/devtodo/