Quest is a command line interface for todo.txt with many additional features:
- Views
- Powerful query language
- Time tracking with Timewarrior
- Recurrence
- Due/Threshold dates (as a byproduct of the views feature)
- Multi line notes
- Tag Expansions (e.g. expand
tomorrow
to the date of tomorrow) - Sublist editing with your favourite editor
To build from source:
go install 'github.com/Fabian-G/quest@latest'
or download the precompiled binary from the Release Page.
The purpose of this README is to show an example usage of quest.
To learn how things work checkout the documentation.
Many things that are shown in the following examples are not possible with the
default configuration. If you want the exact behaviour shown here choose Dev's Choice
when running quest init
.
A good way to start the day is by clearing out the task inbox, which contains tasks that need refinement (like rewriting it to be actionable, assigning due dates, projects or priorities). First let's see what currently is in the inbox.
~ ❯ quest inbox
# Created On Description
1 2024-03-11 Plan Bilbos birthday
2 2024-03-11 Take the hobbits to Isengart
3 2024-03-11 Get stabbed by Morgul-knife
4 2024-03-11 Meet Gandalf
5 2024-03-11 Simply walk into Mordor
Often times it is most efficient to edit all the inbox tasks at once in your editor:
~ ❯ quest inbox edit
This will open the 5 inbox items in your favourite editor in todo.txt format.
With this configuration a task item is considered an inbox item if it does not have a priority assigned. So after assigning at least a priority to each item the inbox should be cleared:
~ ❯ quest inbox
no matches
The next view will show us all actionable tasks sorted by what Quest thinks should be done next (based on priority and due dates).
~ ❯ quest next
# Score Priority due Projects Contexts Description
5 7.4 (D) in 1 day +ring Simply walk into Mordor
4 7.1 (A) Meet Gandalf
2 6.6 (D) in 7 days Take the hobbits to Isengart
3 5.5 (B) @errands Get stabbed by Morgul-knife
1 1.0 (E) +bday Plan Bilbos birthday
Personally I like to pick a few tasks from this view and schedule them for the day.
~ ❯ quest set -a do:today on 5,1,3
Set tag "do" to "today" on 3 items
Note that the word "today" will actually be expanded to the date of today.
Now they will show up in the today view.
~ ❯ quest today
# Score Priority due Projects Contexts Description
5 7.4 (D) in 1 day +ring Simply walk into Mordor
3 5.5 (B) @errands Get stabbed by Morgul-knife
1 1.0 (E) +bday Plan Bilbos birthday
Other tasks may need to be delegated, because we can't do them ourselves.
~ ❯ quest set @waiting on 2
Set context "@waiting" on item #2: Take the hobbits to Isengart due:2024-03-18 @waiting
Since Task #5 is due tomorrow we should better start working on it.
~ ❯ quest track 5
Started tracking item #5: Simply walk into Mordor +ring due:2024-03-12 do:2024-03-11 tr:28502833
By running timew
you should see that tracking has been started.
~ ❯ timew
Tracking "Simply walk into Mordor" ring
Started 2024-03-11T16:14:10
Current 15:09
Total 0:00:59
Word has it that one does not simply walk into Mordor. So maybe we have some difficulties with task 5 and want to take some notes on that. With the following command Quest will create a markdown file, attach it to task 5 and then open it for editing.
~ ❯ quest notes 5
When tasks pop up while we actually want to be focused on the current task
we can easily get them out of our head by using the add
command.
~ ❯ quest add Eat second breakfast
Added task #6
Task #6 will automatically show up in the inbox view, because it does not have a priority.
When we are done with task #5 we can just use complete
(e.g. with a word from the target task).
~ ❯ quest complete mordor
Completed item #5: Simply walk into Mordor +ring due:2024-03-12 tr:28502833 n:y362
It is safe to be rather vague about which task to complete, because if there are multiple matches Quest will ask you which one you mean.
Plans don't always work out as expected. If there are tasks left undone at the end of the day we can easily schedule them for tomorrow.
~ ❯ quest today set -a do:tomorrow
Set tag "do" to "tomorrow" on 2 items
- There is no doubt that Taskwarrior is a great task management solution. Its query language is simpler than Quest's
and at the same it has many more features. The number 1 reason why I ended up not using
it is that Taskwarrior's recurrence implementation just did not work for me. Other reasons include that there is no
way of bulk editing tasks like
quest edit
does and that I actually wanted the simplicity of the todo.txt format. - pter did everything I needed for a long time. But after trying out Taskwarrior I noticed that a CLI based workflow is much more productive for me. However, if you are looking for a todo.txt TUI this is a solid choice.
- I just recently discovered topydo. I never tried it, but it looks very promising.