After trying every to do list app/process/method imaginable, in January of 2017 I finally found one that worked for me: todo.txt. I’ve been using it every single day since then and it has really helped me stay on top of what I need to get done. It’s geeky and great.
It’s just a single text file with a list of items. It works great for me! The todo.txt system was developed by Gina Trapani, who also happens to be the person (or one of the people) responsible for Lifehacker. She does great stuff!!
Here’s a demo video of using todo.txt:
I keep my
todo.txt file in Dropbox and edit it using many different tools: vim on unix, SwiftToDo on iOS, TextWrangler on Mac, and so on. I also use Gina’s todo.sh suite of bash scripts to manipulate my file in different ways, and I make extensive use of add-ons like
due (show what items are due today or overdue),
xp (show items completed during the last X number of days), and
projectview (show items organized by projects). Check out all the todo.sh add-ons here.
The flexibility of the todo.txt system allows me to stay focused on the goal: get stuff done. Because I spend a large portion of my day in the command line, it’s easy to add items, complete items, and edit my list quickly. It’s also easy to write scripts to do other things to and with my todo.txt file.
A while back I wrote a suite of scripts that I call “today.txt,” which combines items from todo.txt with items from my calendar to create a day planner. Each day has a file called
today.txt which includes items that are due, my agenda for the day, and upcoming events. Every night, this file is archived in my journal and a new one is created for the next day. This really helps me stay organized. At some point I’ll share my today.txt suite… but not today.
Due to all the various scripts that edit my todo.txt file, sometimes I somehow get duplicate lines. This can clog up my view of what needs to get done. To solve this, I wrote a todo.sh add-on called “clean” that removes duplicate lines. The script also re-orders the lines alphabetically, which works great with todo.txt’s syntax. I’ll surely add more bells and whistles, but for now it does exactly what I need it to do. I sure do love bash scripting.
To install the script, simply put the “clean” file in you todo.sh add-ons directory (usually
It’s extremely simple:
#!/bin/bash # CB's second todo.txt add-on # clean up the todo file # purpose: clean up the todo.txt file. remove duplicate lines # usage: # todo.sh clean echo ">>>>>>> cb's todo.txt cleaner <<<<<<<<<" TODO='/home/chris/Dropbox/Apps/cbtodo/todo.txt' TMP='/home/chris/Dropbox/Apps/cbtodo/tmp.txt' echo "cleaning $TODO" # sort the todo file, then # show only unique lines, then # write the output of that file to a temp file sort $TODO | uniq -u > $TMP # then move that tmp file to the main todo file mv $TMP $TODO echo "done!"