txtGTD text-based 'Getting Things Done' system

Table of content:

The idea

The idea behind the txtGTD script is to facilitate and simplify editing project list in David Allen's time management method - Getting Thing Done (GTD). I assume that you already know 'what it's all about' in GTD, especially what is 'project' and 'context' (...in the context of GTD). :)

Why did I write it?

Since couple of weeks I've been trying to implement GTD in my life. At first I used FreeMind as a GTD tool. Mindmapping is really great, but in this case my map was growing a little bit to fast... I stuck in adding to much information to it, not necessarily the actions but also additional info on my projects. Yes, It was great to store it in one place, but way too much tiring. What's more, I had to add the actions to each context manually. The projects were on my left-hand side and the context on the other side. Too much of distraction from the project itself. And I didn't like the 'attributes' in FreeMind.

I needed something simple, to store ONLY the actions and something that will look for the contexts and keep it in order. I couldn't find anything appropriate. And I always liked the notepad. So I wrote txtGTD. I hope you'll like it too. :)

The script and how to use it

The script that I describe here is, in fact, a program (or algorithm) for processing single text file which would be your project list. I wrote this as a script for AutoHotkey, a free, open-source utility for Windows in which you can write macros and simple applications. The script works in background (or with a hotkey - to be changed in preferences) and anytime you save your project list it creates context lists for you. But now to the meritum: how to use it...

The syntax

The best way to explain how it works is an example. The projects.txt file contain my GTD list of projects. That how your projects list may look like. However almost everything here can be customized (see Preferences).:


Generally this is the part of the list describing one single project. In this case project's name is "Buy a dog".

Buy a dog to buy a nice, fluffy dog ! find nearby animal shelter // @internet ! ask Sis for an advice // @phone @basia's flat - go to the shelter and choose a dog x buy dog food // @shop

In this case project's name is "Buy a dog". Please note that project name is simply a line without space at the beginning (which is my escape tag (what can be changed in preferences). Each line that begins (in my case) with a space at the beginning or is entirely empty - is not treated as a project name.

What is more, I wanted all lines that begins with ' ! ' to be treated as 'next actions'.

Each next action refer to the first project mentioned right above it. Please note that actions that don't refer to any specific project (single actions) are written at the top of a file.

Each next action should have its context (or contexts) specified after context indicator (in ma case: ' //').

Each context indicator should have context prefix (in my case: ' @'; again: all of those symbols can be changed to suite your taste).

Generally that's all about the syntax. It's clear, easy skimmable (in GTD way), easy editable and really flexible.

You can arrange it as you wish. For example, why not adding a line (or couple) below the project name (followed by escape tag, not to be treated as a project) and put there the result you wish to achieve (just like David Allen advises)?

As you can see, I decided to mark (during planning a particular project) all my next actions with ' ! ', actions that are not yet to be conducted with ' - ' and actions completed with ' x '. But it's up to you.

The magic!

At the beginning my project list lies peacefully in the folder:

Folder with a list

I execute the script. A small icon appears in the system tray... The speaker beeps once... And... Pooofff! Voilà!

Folder with the lists

'TODO' folder (change the name in preferences...) include text files - one for each context.

TODO folder with contexts.

As you can see, special folder was created for next actions without any context. Generally, as you probably know, it shouldn't happen in GTD. An exapmle of context list:

TODO folder with contexts.

The TODO.txt file in the folder including projects.txt file is simply a compilation of those separate context lists. As you may imagine, the option responsible for creating this 'global' file can be disabled in preferences. That's how this TODO.txt looks like:

TODO folder with contexts.

...easy to be printed out and put to your pocket (see To be done), or simply opened and skimmed.

As you may discovered, there is shortened name of a project (in brackets) near each action. Well, almost each, because some of them were single actions. Read below to know how to disable that option entirely or display full project names.


Click here (right click: Save as...) to download the script (you will need to install AutoHotkey first).

14th September 2009 (changelog):


The example file can be downloaded here: projects.txt (put it to the script directory). The program is released under GNU GPL license. Download it, edit it, spread it!

Please let me know if you tweaked it somehow.

Linux (cross-platform) version in PERL

As I switched to Linux (Ubuntu) I was in need of such functionality like txtGTD. I heard of running AutoHotkey under Wine, but didn't like it. I learned PERL and re-wrote txtGTD in it. Here you go with the script (right click: Save as...)...

31th August 2009 (changelog):


Having problems with download? Try zipped version: txtGTD.pl.zip.

The example file can be downloaded here: projectz.txt (put it to the script directory).

The script share almost the same functionality that it's older AHK brother. I tested it under Linux, but it should run smoothly also under other Operating Systems (Did you try it? Could you send me an e-mail?). Apart from simple 'log' in command line, there is also one more difference: changed preferences. Nevertheless you can change it if you don't like it. :)

To be done by someone, someday, somewhere...

Daring, isn't it? :)


All preferences can be edited directly in the script (the variables are at the beginning of the file). There are comments included. Just download the script and play with it yourself! :) By the way. The script is open-source - feel free to edit it, correct it, better it.

But please note some differences between AHK and PERL version (due to different implementation)! It's the most visible with "context separators/prefixes". I can imagine 2 types of defining contexts of next actions (example):

  1. - my next action 1 | @context1 @context2
  2. - my next action 2 | context1, context2

Of course the dividing characters are not important (you can choose your own), but the lack of it in version 2 is (the lack of comma before first context).

The AHK version supports only the first version (before each context must be it's prefix). In this case context indicator would be ' |' and context prefix would be ' @'.

In PERL version in version 1 would be similar, and in version 2 context indicator would be ' | ' (note the space) and context separator (prefix) would be just ', '.

If you don't understand what the fcuk I am talking about... Don't be worried, just play with that and you'll find that out easily! :)

Nice ideas how to keep your tasklist online

If you're fishing for remote (online) access to your task list... You should consider using one of the following:

"I will not use it!"

If you don't like it or it has shortcomings that made you decide that it's not suitable for you - tell me about it! E-mail me please!

NEW! txtGTD modifications

Some people seem to like the project and personalise it to suit their needs - it's great! You may find some of these modifications REALLY useful. And hopefully the authors agreed to publish them here. If you have also made some improvements and wish to share it - please contact me (contact info below).

Other, similar applications/scripts

Mailny after writing this script I started discovering other, similar applications or scripts basing on the same idea: GTD in TXT. Here are some of them; take a look, maybe you'll like them more.

The author

The author of this script is Marcin 'BishKopt' Woroch, that's me. Any constructive feedback, comments, advices, flame, wrath and laudations are welcomed. Please e-mail me at bisXhkoXpt@gXmail.com [antyspam: remove all X'es]

If you like my idea of this ascetic tool and hopefully txtGTD helped you - you can buy me a beer or sponsorship my trip to South America. :)