No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download

An add-on for Gina Trapani's todo.txt script, allowing the automatic addition of recurring tasks to the todo list.

Once installed, the recur command should be run from a cron job (or other scheduler), once a day. Any tasks applicable to the current date will be appended to the todo list (if they're not already present).

The recurring tasks are pulled from a recur.txt file, living in the same directory as todo.txt. Each line in recur.txt has the syntax:

[week[,week ...] ] day : task


daily: task    


  • week is an optional list of weeks - "first", "second", "third", "fourth", "fifth" or "last". Weeks are separated by commas only (no spaces).
  • day is one of "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" or "sunday". If a task needs to happen on two different days of the week, you'll need two lines.
  • task is anything that might appear in a todo.txt task, including priority, contexts or projects. Do not include an added-on date, however.


sunday: (A) Weekly review of projects list
monday: Take out the trash @home
last saturday: Apply the dog's flea medicine
first,third friday: Collect and file expenses
daily: run the dishwasher

Note that the add-on attempts to be smart about things, so if you ran this on a Sunday when todo.txt already contained:

(B) Weekly review of projects list @home

It would notice the task with the same text (ignoring priority, context, project) and add nothing.


Download the latest recur archive, and unpack it in a temporary directory, e.g.

tar zxf Todotxt-Recur-1.02.tar.gz
cd Todotxt-Recur-1.02

If you are using the standard location for add-ons ($HOME/.todo.actions.d), you'll want to run:

perl Makefile.PL
make test
sudo make install

to install the recur script and its component modules.

There are a few common Perl modules you'll need if you want to run the make test step: Test::Harness, Test::More and Test::Class. These are not required for normal script operation.

If your add-ons live elsewhere, you'll need to specify that directory as an INSTALLSITESCRIPT option when generating the Makefile.

perl Makefile.PL INSTALLSITESCRIPT=/some/other/directory
make test
sudo make install

(Installing the modules in a user-specific directory, rather than system-wide, calls for setting LIB= as appropriate, and is left as an exercise for the reader.)

See the general Creating and Installing Add-Ons documentation to learn where your add-ons live if you're unsure.