root@/software/hacks/tasklist# cursor
  scientific sw
  cygwin ports


Tasklist is a small Perl script to generate an overview over the tasks that you maintain with planner.el.



planner.el is an ingenious planning tool that runs on top of Emacs Muse. It integrates nicely with the Emacs calendar. You can either use the hyperlinks within Emacs and edit your tasks and notes directly, or you publish your plans as a set of HTML pages.


Limitations of planner.el

While using planner.el as a tool to organize my work in a biochemical lab I came across a few limitations of this tool. My needs differ a little from what planner.el was designed for:

  • Certain tasks can be scheduled only on particular weekdays. E.g. an experiment that takes four consecutive days to finish should be started only on Monday or Tuesday. The automatic carry-over of unfinished tasks does not help in this case. I prefer to reschedule these tasks manually, but for this I need an overview of unfinished business.
  • I like to have an overview of how "dense" my days are going to be, in order to schedule things wisely that do not have to happen on a particular date.
  • I want to see at a glance what I'll have to do the next couple of days or weeks.
  • I want to keep track of ideas that I'm not yet ready to break down into tasks. Sort of a todo list, but integrated with the project pages of planner.el

Tasklist.pl generates a HTML overview of your tasks

tasklist.pl is a small Perl script that evaluates the day files in your planner directory and generates a HTML page of all tasks, optionally limited to a range of dates. The generated page links back to the day files and the project files of the regular planner HTML output. In addition, it finds all todo sections in the project files and generates links to these projects. The visual appearance of the output can be controlled with the same CSS file that is used for the other planner HTML pages. See this example project and the generated tasklist.


Put the script tasklist.pl somewhere into your path, e.g. into ~/bin. Make sure the executable bit is set: chmod u+x tasklist.pl. Edit the user-customizable stuff at the top of the file if it does not meet your needs. That's it.

If you're using Windows, you'll need the Cygwin tools which include the tools to extract the information from the planner files and, of course, the Perl interpreter to run the script in the first place.

Running tasklist.pl

Invoke the script like this:

tasklist.pl [-e date] [-h] [-m t|f] -o outpath -p planner-dir [-r status] [-s date] [-u baseurl]
  • -e date: (optional) the end date in ISO notation (YYYY-MM-DD)
  • -h: prints a brief help message and exits
  • -m t|f: (optional, default is f) if t, create and include a mind map (see taskmm.pl)
  • -o outpath: the full path of the output html file
  • -p planner-dir: the full path of the directory containing the planner files
  • -r status: (optional, default:all) string containing one or more of the characters "_X>PoC" to select statuses (status? stati? whatever...) to be included in the output
  • -s date: (optional) the start date in ISO notation (YYYY-MM-DD)
  • -u baseurl: (optional) the base URL for the mind map output (see taskmm.pl for details)

How to generate the task list automatically

Nothing beats things happening automagically. To run tasklist.pl whenever you publish your planner project, include the file .planner-tasklist.el into your .emacs like this:

(load-file "/path/to/.planner-tasklist.el")

This file requires a little customization. Just follow the comments in the file.


Download information

The tarball includes the tasklist.pl script, the taskmm.pl script, and couple of additional files that you'll need. It was last updated on December 22, 2007.

An older version for Emacs-Wiki based planner releases is right here.