Why A Plain Text To-Do List Works

Your to-do list is the hub of your personal productivity, so it makes sense that we're attracted to to-do apps filled with bells, whistles and tassels. Then you realise you're spending more time fiddling with your app than getting things done. Here's why a simple text file will make your to-do lists fast, easy to manage and seamlessly integrate with everything else you use.

Why Plain Text?

I've gone through more to-do apps than I can count, and I couldn't stand any of them. It felt like it took a million clicks to navigate to the app or website and add or edit a task, and accessing my to-dos in other contexts -- like displaying it on my desktop or on my phone as a widget -- was very difficult since it wasn't compatible with other programs. In essence, I spent more time fiddling with the apps than I actually did doing things.

Plain text files -- most commonly files you create with the .txt extension -- are like the universal language of desktop computers. It's the most basic file type around, stripped of all formatting and other complexities. And, unlike binary files (which only computers can understand), plain text files are readable by both humans and computer programs. It is, as the name implies, plain text.

In fact, what makes plain text so great is that you can pump a text file into nearly any program, on any platform or device. Everything and everyone can read plain text (both humans and computers). Often, programs -- including many desktop to-do apps -- have their own special binary files they use for storing data, making them incompatible (or hard to translate) for other apps.

Say you have a plain text file on your hard drive called todo.txt. You can manage it on any platform, with any text editor, and sync it with nearly any file-syncing service (like Dropbox). You can display your to-dos on your desktop with any program that can read text files, edit it with any number of programs that can handle plain text (these range from text editors like Notepad to more complex text-friendly to-do apps), and make it as simple or as complicated as you want it to be -- whether that means a simple list of tasks or complex to-dos that include priorities, categories and tags on each of them.

While you can manage that to-do list from the text file yourself, editing your to-do list in a flat text file using an editor like Notepad.exe or TextEdit isn't the fastest or most ideal way to do so. As such, a number of excellent to-do programs have cropped up that work with plain text to-do files, including (but not limited to) TaskPaper/TodoPaper, Org-Mode and our very own Gina Trapani's Todo.txt. Today, we'll show you how to get started with Todo.txt (our favourite plain-text to-do program) and show you all the things you can do with the resulting text file -- like display it on your desktop, add it as a widget to your phone, and even synced to all my other computers via Dropbox.

Note that Todo.txt is truly a geek's to-do list. You manage it from the command line and have to deal with editing config files to get it all set up. If you want something a bit simpler, you can use the same system with previously mentioned Todotxt.net, which is a bit more graphics-driven. And, no matter what system you're using, any plain text file can take advantage of our other plain text tricks, so take a gander at the last section of this article either way.

How To Set Up Todo.txt

Todo.txt manages your plain text file from the command line for extra speed and ease of use. If you're on a Mac, the process is pretty simple, and you can just use OS X's regular Terminal app (or one of the many great Terminal replacements out there). Windows users will have to download and install the Cygwin terminal to use it. For more info on Cygwin, check out our introduction to the Cygwin command line.

Once you've got your terminal program ready, head over to Todo.txt's home page and download the latest version. You should get a ZIP archive with two files in it: todo.sh and todo.cfg. Unzip these wherever you want. If you have a dedicated folder for scripts and the like, go ahead and unzip them there, or you can just put them in your home folder if you prefer. Just make sure both todo.sh and todo.cfg are in the same folder. These two files manage the to-do list; your actual to-do list is stored elsewhere in .txt format.

Next, open up todo.cfg with your favourite text editor and edit the export TODO_DIR line at the top (not the one that says /users/gina/documents/dodo; that's just an example). This line is what determines where your Todo.txt file is stored. I put it in my Dropbox's Scripts folder along with todo.sh and todo.cfg, so that line in my config file reads:

export TODO_DIR=`dirname "/cygdrive/c/Users/Whitson Gordon/Dropbox/Scripts/todo.txt"`

Where /cygdrive/c/ is Cygwin's way of saying C:\. If you're on a Mac, the line will look more like this:

export TODO_DIR=`dirname "/Users/whitsongordon/Dropbox/Scripts/todo.txt"`

Obviously, edit the paths to match where you want to save your particular Todo.txt file. Save the config file and open up your terminal. cd to the folder containing todo.sh, and make it executable with chmod, like so:

cd ~/Dropbox/Scripts/

chmod +x todo.sh

This command assumes you've put todo.sh in a folder called Scripts in your Dropbox. Again, change the path to match wherever you've put it (the sh file, not the txt file). Lastly, we'll make an alias for our script to make adding tasks quick and easy. To do this, you'll need to edit your bash profile. On Windows, that means opening up C:\cygwin\home\Whitson Gordon\.bashrc in your favourite text editor and adding the following line anywhere you want:

alias t='"cygdrive/c/cygwin/home/Whitson Gordon/Dropbox/Scripts/todo.sh"'

On a Mac, you'll instead want to open up the hidden .bash_profile file in your home folder, or, if you've never used it before, create a new text file named .bash_profile in your home folder. Note that this folder will be hidden, so if you want to edit it again after you create it, you'll have to show hidden files first. Once you've got it open, add the following line anywhere you want:

alias t='"/Users/whitsongordon/Dropbox/Scripts/todo.sh"'

Restart your terminal app and run the following:

t ls

If you get an output saying TODO: 0 of 0 tasks shown, you've successfully set up Todo.txt. If not, run through the instructions again and make sure you didn't miss anything. Then, continue on below to find out how to use it.

How To Use Todo.txt

Adding and editing tasks through the command line is super easy. To add a new task, just type something like:

t add "Do Laundry"

And, after adding a few more tasks, such as:

t add "Pay Bills"

t add "Install Skyrim"

You can view all your tasks in a list by typing

t ls

You'll get an output that looks something like this:

1 Do Laundry

2 Pay Bills

3 Install Skyrim

TODO: 3 of 3 tasks shown

To edit or complete items, you can just refer to them by the number shown on this list. So, say you've decided Skyrim is more important than paying bills and doing laundry. You can give it a higher priority by typing:

t pri 3 A

t invokes the Todo.txt program, pri tells it you're assigning a priority, 3 is the task you're editing (Installing Skyrim), and A is thie priority you're assigning it.

To edit a task, you can use the replace, append, or prepend commands. For example, if you wanted to specify that you need to pay the water bill rather than just "bills", you could replace that task with:

t replace 2 "Pay Water Bill"

Similarly, if you wanted to add something to the end of the line instead of replacing it entirely, you could run:

t append 2 "Online"

Which would change the task to "Pay Water Bill Online". To complete that task, you can just run:

t do 2

That's it! Todo.txt can do a few other advanced things, but we won't talk about them here. For more info, you can check out our original post on Todo.txt.

Other Useful Things You Can Do With Your todo.txt File

Now that you've got your todo.txt file up and running, there are some nice tricks you can do with it to make it even more useful. Here are some of my favourites.

Display Your todo.txt File on the Desktop: I'm one of those people that needs my to-do list up in my face, all the time, or I'll never get anything done. I never open it up manually just to see what I have to do. As such, I like displaying my to-do list on my desktop. With services like Remember the Milk or Google Tasks, this involves a lot of work, but with Todo.txt, it's incredibly simple.

If you're a Windows user, you can display your to-do list on your desktop with Rainmeter. Assuming you already have Rainmeter set up, all you need to do is grab a "Notes" skin, as they often display a text file. What skin you use will differ depending on what suite your Rainmeter setup uses, but in general, all it involves is finding the config file for your Notes skin and giving it the path to your todo.txt file. Some suites, like Enigma, will ask for this file in their main configuration, instead of the Notes skins' config file, so check both if you're unsure.

If you're on a Mac, you can use GeekTool to display your to-do list instead. Assuming you have GeekTool set up, all you need to do is open up GeekTool, drag a new "File" Geeklet to your desktop, click on it, and navigate to your todo.txt file under "File".

Sync Your todo.txt File with Simplenote: Occasionally, you may want to edit your to-do list manually, but searching out the file on your hard drive and doing it with Notepad is no fun. I constantly keep a Simplenote client open at all times, whether it's ResophNotes on Windows or Notational Velocity on the Mac. What's great is that both these clients allow saving your notes as plain text files, meaning you can place your todo.txt file in its folder and have it show up in Simplenote with all your other notes.

To do this in ResophNotes, just open up its settings and go to the Storage tab. Click the Plain Text File radio button, and give it a directory to save your files in. In Notational Velocity, go to Preferences > Notes > Storage, choose Plain Text Files from the dropdown, and choose your desired folder at the top of the window.

Note that this folder is also where your todo.txt file will be saved, so make sure it's a good location for both. Then, just drag your current todo.txt file into that folder with your other notes, and be sure to edit your todo.cfg file to represent its new location. You may want to create a separate folder outside of your ResophNotes folder for your "done.txt", "report.txt" and temp file -- and you can edit all this in your todo.cfg as well. Mine looks like this:

export TODO_DIR="/cygdrive/f/Users/Whitson Gordon/Dropbox/Scripts/ResophNotes" # Your todo/done/report.txt locations

export TODO_FILE="$TODO_DIR/todo.txt"

export DONE_FILE="/cygdrive/f/Users/Whitson Gordon/Dropbox/Scripts/todo/done.txt"

export REPORT_FILE="/cygdrive/f/Users/Whitson Gordon/Dropbox/Scripts/todo/report.txt"

export TMP_FILE="/cygdrive/f/Users/Whitson Gordon/Dropbox/Scripts/todo/todo.tmp"

Turn Your todo.txt File Into An Android Widget: As I said before, I need my to-do list in my face if I'm ever going to get anything done. While there is a Todo.txt app for Android, it doesn't yet have a widget, so displaying my to-dos on my home screen is something I had to put together myself. However, since it's just plain text, it was remarkably simple. There are probably a number of ways to do this, but I put my todo.txt in Simplenote (as described above), then just used my Simplenote widget (via Flick Note) to display the "todo" note on my home screen. It's as simple as that.

These are just a few examples of what you can do with your todo.txt file, but you're starting to see why plain text is awesome -- you can really do anything with it. You don't have to deal with complicated scripts, APIs or other nonsense to sync your data back and forth -- it's just a matter of finding a program that can read plain text and putting it to good use. Got any of your own clever tricks for a todo.txt file? Be sure to let us know about them in the comments.


    This is EXACTLY why I use WorkFlowy

    Sorry, but you blow your own argument out of the water when you explain the versatility of a plain text file and then go into detailed instructions with an app that requires a *nix shell to use. I understand you gave options, but go into detail using the most open and accessible option, not the restricted one created by your founding editor.

      +1 If you're just keeping a plain list, why not use Evernote? Then it's synced automatically to all your devices and if you want to get fancy, you can add checkboxes and labels.

    There's a GUI for Windows...

    No, no, no, no, NO!

    I thought this would be a short article saying "Use notepad.exe", not this beast. Randy Pausch extolled the virtues of a simple todo list, which seemed to work for him (googled screenshot:

    I use MyLifeOrganized, and while it's fantastically powerful, I end up just firing endless tasks into it, and never doing many (nor the most important). On reflection, I think 43 folders would work much better, and be much simpler, for me.

    This is just spruiking Gini Trapini's todo.txt

    I literally maintain a todo.txt in Dropbox. I edit it on my phone using Dropbox, and notepad on my desktop. That's a plain text todo list. todo.txt by Gini is not.

Join the discussion!