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.20 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.
The title (if given) is stored as the body of a top-level <title> element. If there are more than one, the last one governs.
Links can be put anywhere a <note> can. They consist of a <link> element with a required filename attribute whose value is the full path to the linked todo list.
Example Files
An example Dev Todo data file follows.
#!xml
<!-- 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.
#!sh
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.
#!sh 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.
#!sh
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
- Download Source
- Slackware packages
- i386 RPM's
- Source RPM's

