Joseph Hallenbeck
November 23, 2018

Todo.txt Practices

Filed under: Software Development

In 2016, I wrote about switching back to Todo.txt. At the time, I outlined the rough system I was using. In the two year’s since, I’ve refined my Todo list process greatly and wished to share.

The Todo.txt format has a ton of flexibility allowing the user to go wild. Very few articles out there seem to illustrate how individuals use the format for themselves. This leaves a lot of stumbling about to create good practice and habits.

Basic Practices

  • All tasks must have a project and context and only one project and context
  • The main todo list represents tasks to be done this quarter. A seperate tickler list is used for tasks in future quarters.
  • Always keep the main todo list under 120 tasks.
  • To reduce clutter, use “project stubs” as placeholders for upcoming projects. Maintain the project sub-tasks in their own todo lists and import them only once the “stub” reaches priority C.
  • Liberally use the recur plugin for daily and weekly interval tasks
  • Generally avoid using meta-data tags
  • Doubly do not use due dates. Manage appointments and meeting times in a dedicated calendar app. Add upcoming appointments to the main task list during the fortnight review and daily reviews.


Use only priorities A-D, and with each having a particular meaning.

Priority A Tasks I am working on right now, never above three tasks
Priority B Tasks I will do today
Priority C Tasks I will do this fortnight
Priority D Blocked tasks to be priortized A-C when they become unblocked

Everything else is deprioritized, and typically hidden from view.


Projects both represent ongoing epics whose tasks are completed sequently as well as generic “grouping” of similar tasks. A few common projects are listed below.

+chores By taking the unison of the chores project and different context I can create sublists for housework (ls +chores @house), yardwork (ls +chores @yard) or errands (ls +chores @springerville).
+budgeting Dealing with anything related to personal finance
+admin Work related administrative tasks such as filing paperwork, planning meetings, or reviewing tasks
+literature, +games, +films Representing each form of media
+hike Details trails and distances hiked
+menu Identified recipes for this fortnight’s meals
+social Social outings
+wellbeing General medical and meditative tasks
+ops System related tasks


Contexts are used to identify where a tasks will probably be done.

@office Task completed in the home or mobile office, and generally denotes a need for networked computing power, e.g. desktop, laptop, or phone.
@house Task completed at home indoors
@yard Task completed at home in the outdoors
@out Task completed in the outdoors, the wilderness within a half day’s drive
@alpine Task is an errand, completed in the local Alpine community
@springerville, @reserve, @showLow, @phx, @abq Task is an errand, completed in one of the larger neighboring communities

Fortnight Review

Every two weeks, I complete a full review of the main and tickler todo lists.

Clean Up

Evaluate all forms of inboxes: kanban, e-mail, phone, calendar. Add upcoming appointments, tasks to the main todo list.

Clean up dead or dangling tasks that are no longer needed. Then evaluate the list to make sure the existing tasks conform to my practices. Aggressively cull tasks, create “project stubs” and move clutter into seperate files.


Create a variety of views of the main todo list. Evaluate each unprioritized task and determine if I must or should work on that task in the next two weeks and if so bump prioritization to C.


Evaluate all tasks prioritized A-D. Determine if I must complete each task, or if it can wait. Favor trimming the overall list of prioritized tasks to shorter to avoid accidentally overburderning a week.

Nightly Review

Every night at 21:00, a cronjob runs the command faketime -f '+1d' todo recur which appends to the main todo list any daily or weekly recurring tasks.

At this time, I clean out my inboxes noting appointments and meetings for the following day, and then evaluate tasks A-C, determing if they should be culled, deprioritized, bumped to another day (C), or bumped to be worked on tomorrow (B).

Tmux Set Up

I aleays have a “todo” session running in Tmux which when using panes and the watch add on, I can create a window that shows a variety of always up-to-date views of the state of my main todo list.

Commonly, I keep a “today” window for referencing my day’s work and a “planning” window for when I’m planning the next day’s agenda.



The today window displays my todo lists of tasks to be done today. From left to right we have:

Upcoming Tasks (t watch lsp c-d) Displays upcoming tasks in the fortnight and blocked tasks
Today’s Tasks (t watch lsp a-b) Displays my currently active tasks and tasks planned for today
Today’s House Tasks (t watch lsp a-b @house) Tasks to be done around the house
Today’s Office Tasks (t watch lsp a-b @office) Tasks to be done around the office
Today’s Yard Tasks (t watch lsp a-b @yard) Tasks to be done in the yard
Working Pane Pane not running watch for manipulating the todo list



The planning window is used during the nightly review of the todo list. It mirrors the Today list in terms of the Upcoming, Today, and Working panes. However, the context-specific panes are replaced by project-specific panes displaying either the breakdown of specific projects (t watch ls +blog) or for larger projects spread across multiple contexts, the unison of a project and context (t watch ls +chores @project).

"Todo.txt Practices" by Joseph Hallenbeck is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.