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
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. All times are stored as UNIX time stamps
Links
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/

