TodoTxtMac is a minimalist, keyboard-driven to-do manager for Mac OS X that conforms to the todo.txt format spec. Official support and testing are only done on Mac OS X 10.10 (Yosemite) at this time, though the application is built to run on Mac OS X 10.8 (Mountain Lion) and higher. (Additional screenshots below.)
The commercial version of TodoTxtMac is called SwiftoDo Desktop and is available from the Mac App Store. SwiftoDo Desktop has the same features as TodoTxtMac, but adds application sandboxing and is code-signed, so it plays nicely with Gatekeeper (i.e., Security & Privacy systems preferences). Purchasing SwiftoDo Desktop will help support further development of this app and other todo.txt apps on Apple platforms, such as SwiftoDo for iOS.
There is also a free version of TodoTxtMac available on the Releases page on GitHub. TodoTxtMac releases hosted on GitHub are not sandboxed or code-signed.
This application is inspired by the Todotxt.net application for Microsoft Windows with numerous improvements and modifications specific to the Mac OS X platform. It is designed to pair well with other todo.txt applications, such as SwiftoDo, Todotxt.net, SimpleTask, topydo, and many others.
From a design perspective, the goal is to be the fastest, simplest, and cleanest implementation possible.
- Full compliance with the todo.txt format spec.
- Support for due date (due:), threshold date (t:), recurring tasks (rec:), and hidden (h:1) tags.
- Fully keyboard-driven, with one-key bindings for commonly-used commands.
- Multiple selection in the task list.
- Support for due dates, which are formatted "due:YYYY-MM-DD".
- Shortcuts to toggle completion, change priority, set due dates, and delete all selected tasks.
- Archive completed tasks (to done.txt), either on command or automatically.
- Preserves Windows or Unix line endings in the todo.txt file for cross-platform compatability.
- Automatic update checking.
- Displays general metadata (task counts, etc.) about the task list.
- Paste one or more tasks into the task list from the clipboard.
- Import one or more tasks into the task list via drag-and-drop.
- Optionally prepend the task creation task on newly created tasks (including those pasted in from the clipboard).
- Copy selected tasks to the clipboard.
- Cut selected tasks to the clipboard.
- Reload file on command.
- Sort task list by priority, project, context, due date, etc.
- Filter task list.
- Quick filters: preset filters mapped to number keys.
- Search field for quick, ad-hoc filtering of the task list.
- Set arbitrary due dates on selected tasks.
- Increment, decrement, or remove due dates.
- Postpone tasks by X (user-entered) days.
- Supports relative due dates, such as "due:tomorrow" and "due:Saturday" for new tasks. These strings can be localized.
- Set arbitrary threshold dates on selected tasks.
- Increment, decrement, or remove threshold dates.
- Filter task list on threshold state.
- Hide future tasks option, which allows you to hide tasks with a threshold date that is in the future, regardless of what filter options you have selected.
- User-customizable font for the task list.
- Bold priorities in task list.
- Colors completed tasks in light gray and applies strikethrough.
- Colors overdue tasks in purple and tasks due today in red. Both these colors are user customizable.
- Colors projects and contexts in dark gray in task list. Both these colors are user customizable.
- Colors threshold dates in the task list, with a user-customizable color.
- Colors completion dates in the task list, with a user-customizable color.
- Autosave on change (Note that the title bar will say "Edited" even after autosaving, because this is the Mac's default behavior).
- Autocomplete project names.
- Autocomplete context names.
- Multiple document interface.
- Full screen mode.
- Customizable (and optional) bottom status bar.
- Open todo.txt files by dragging and dropping them onto the application icon.
- N: new task
- J: move down to next task
- K: move up to previous task
- X: toggle task completion
- D or Backspace: delete task (with confirmation)
- U or Enter: update task
- P: postpone task by X (user-entered) days
- S: set due date
- Option+S: set threshold date
- I: set priority to user-entered value (A-Z)
- T: append text to end of selected tasks
- R: prepend text to beginning of selected tasks (after priority and creation date)
- A: archive completed tasks (archive file done.txt must be set)
- Command+Up: Increase priority
- Command+Down: Decrease priority
- Command+Left or Command+Right: Remove priority
- Command+C: Copy selected tasks to the clipboard
- Command+Shift+C: Copy selected task to the new task text box
- Command+X: Cut selected tasks to the clipboard
- Command+Shift+V: Paste tasks into the task list from the clipboard
- Command+Option+Up: Increase due date by 1 day
- Command+Option+Down: Decrease due date by 1 day
- Command+Option+Left or Command+Option+Right: Remove due date
- Command+Shift+Option+Up: Increase threshold date by 1 day
- Command+Shift+Option+Down: Decrease threshold date by 1 day
- Command+Shift+Option+Left or Command+Shift+Option+Right: Remove threshold date
- Command+Z: Undo
- Command+Shift+Z: Redo
- Command+N: new file
- Command+O: open file
- Command+S: save file (forces the file to save immediately)
- .: reload file
- Option+.: reload all files
- Command+I: view task list metadata (task counts, etc.)
- Command+W: close file
- Command+Option+W: close all files
- Command+0: order in file
- Command+1: priority
- Command+2: project
- Command+3: context
- Command+4: due date
- Command+5: creation date
- Command+6: completion date
- Command+7: alphabetical
- Command+F: find (moves focus to the search field)
- F: define quick filters
- 1: apply quick filter 1
- 2: apply quick filter 2
- 3: apply quick filter 3
- 4: apply quick filter 4
- 5: apply quick filter 5
- 6: apply quick filter 6
- 7: apply quick filter 7
- 8: apply quick filter 8
- 9: apply quick filter 9
- 0: remove applied filter
- This application is not meant for direct reordering of tasks in the todo.txt file.
- This application does not retain blank lines in the todo.txt file.
- This application does not support line breaks, long-form notes, attachments, or other features not part of the todo.txt format specification.
Yes, but most people will not need such a preference, because the default behavior of TodoTxtMac is to reopen whatever todo.txt files were open when you last quit the app. To enjoy this behavior, do not close your todo.txt file's window prior to quitting the app.
If the TodoTxtMac is not reopening your files, or keeping a list of them in the "File > Open Recent" menu, then you should check the following preferences under System Preferences > General:
- "Close windows when quitting an app" must be unchecked.
- "Recent items" must not be "None".
If you need to force TodoTxtMac to open a particular todo file on launch, you may set a default todo.txt file in TodoTxtMac's Preferences > Startup.
You may also force TodoTxtMac to open a particular todo file on launch, you may launch the app with the command-line argument "todo-file", in the Terminal, as follows:
$ open /Applications/TodoTxtMac.app --args -todo-file ~/Documents/todo.txt
No. Unlike the official Todo.txt iOS application, this application does not call Dropbox's API. You can sync your file outside of TodoTxtMac via Dropbox or other services. TodoTxtMac will automatically reload your file if it detects changes init, from Dropbox or other sync providers. Also, you can easily reload you todo.txt file on demand with a keyboard shortcut (".").
TodoTxtMac says my todo.txt file cannot be autosaved. The file has been changed by another application.
Note: The section below applies to versions prior to 2.3.0. TodoTxtMac now will automatically reload your file when it changes on disk.
Your todo.txt file can get modified outside of TodoTxtMac, especially if you are syncing the file via Dropbox or a similar service. TodoTxtMac uses Cocoa's default document object model to handle the file interactions. This means that the application will warn you of file changes that came from outside the application when you try to make changes to the file, not at the moment the file was changed. To avoid file conflicts, try the following strategies:
- Reload your TodoTxtMac file manually (press
.) before making changes to it, if you believe the file was updated (by Dropbox for example) recently.
- Close TodoTxtMac when not using it for extended periods.
- When presented with the option to "Save Anyway" or "Revert" changes, always revert changes. You will have to re-do your last action in TodoTxtMac, but you will not lose the changes that originated outside the application.
Note that modifying your todo.txt file in a Cocoa NSDocument-based application, such as TextEdit, will result in live updates in TodoTxtMac.
At this time, there are no concrete plans to move from Objective C to Swift. If Apple deprecates Objective C, this will change.
This application is dual-licensed under the GNU General Public License and the MIT License. See LICENSE.txt for full license information.
Thanks to Gina Trapani who created the Todo.txt format and the community of developers who created the command line tools and iOS/Android apps.
Thanks to Ben Hughes whose Windows application todotxt.net formed the basis of this application's design and feature set. Todotxt.net is a fantastic program and did not have an analog on the Mac. After starting my application, I contributed some patches to todotxt.net and am happy to be a contributor on such a great project.
Thanks to Sam Daitzman <@sdaitzman> for the application icon.
Thanks to Andy Matuschak and the other contributors for the Sparkle framework.