task-faq - A FAQ for the task(1) command line todo manager.
Task is a command line TODO list manager. It maintains a list of tasks
that you want to do, allowing you to add/remove, and otherwise
manipulate them. Task has a rich list of commands that allow you to do
various things with it.
Welcome to the task FAQ. If you have would like to see a question
answered here, please send us a note at <email@example.com>.
Q: When I redirect the output of task to a file, I lose all the colors.
How do I fix this?
A: Task knows (or thinks it knows) when the output is not going
directly to a terminal, and strips out all the color control
characters. This is based on the assumption that the color
control codes are not wanted in the file. Prevent this with the
following entry in your .taskrc file:
Q: How do I backup my task data files? Where are they?
A: Task writes all pending tasks to the file
and all completed and deleted tasks to
They are text files, so they can just be copied to another
location for safekeeping. Don't forget there is also the
~/.taskrc file that contains your task configuration data. To
be sure, and to future-proof your backup, consider backing up
all the files in the ~/.task directory.
Q: How can I separate my work tasks from my home tasks? Specifically,
can I keep them completely separate?
A: You can do this by creating an alternate .taskrc file, then
using shell aliases. Here are example Bash commands to achieve
% cp ~/.taskrc ~/.taskrc_home
% (now edit .taskrc_home to change the value of
% alias wtask="task"
% alias htask="task rc:~/.taskrc_home"
This gives you two commands, 'wtask' and 'htask' that operate
using two different sets of task data files.
Q: Can I revert to a previous version of task? How?
A: Yes, you can revert to a previous version of task, simply by
downloading an older version and installing it. If you find a
bug in task, then this may be the only way to work around the
bug, until a patch release is made.
Note that it is possible that the task file format will change.
For example, the format changed between versions 1.5.0 and
1.6.0. Task will automatically upgrade the file but if you need
to revert to a previous version of task, there is the file
format to consider. This is yet another good reason to back up
your task data files!
Q: I'm using Ubuntu 9.04, and I want task to word-wrap descriptions.
How do I do this?
A: You need to install ncurses, by doing this:
% sudo apt-get install libncurses5-dev
Then you need to rebuild task from scratch, starting with
% cd task-X.X.X
The result should be a task program that knows the width of the
terminal window, and wraps accordingly.
Note that there are binary packages that all include this
Q: How do I build task under Cygwin?
A: Task is built the same way everywhere. But under Cygwin,
you'll need to make sure you have the following packages
The gcc and make packages allow you to compile the code, and are
therefore required, but the ncurses packages are optional.
Ncurses will allow task to determine the width of the window,
and therefore use the whole width and wrap text accordingly, for
a more aesthetically pleasing display.
Note that there are binary packages that all include this
Q: Do colors work under Cygwin?
A: They do, but only in a limited way. You can use regular
foreground colors (black, red, green ...) and you can regular
background colors (on_black, on_red, on_green ...), but
underline and bold are not supported.
If you run the command:
% task colors
Task will display all the colors it can use, and you will see
which ones you can use.
See the 'man task-color' for more details on which colors can be
Q: Where does task store the data?
By default, task creates a .taskrc file in your home directory
and populates it with defaults. Task also creates a .task
directory in your home directory and puts data files there.
Q: Can I edit that data?
Of course you can. It is a simple text file, and looks somewhat
like the JSON format, and if you are careful not to break the
format, there is no reason not to edit it. But task provides a
rich command set to do that manipulation for you, so it is
probably best to leave those files alone.
Q: How do I restore my .taskrc file to defaults?
If you delete (or rename) your .taskrc file, task will offer to
create a default one for you. Another way to do this is with
$ task rc:new-file version
Task will create 'new-file' if it doesn't already exist. Note
that this is a good way to learn about new configuration
settings, if your .taskrc file was created by an older version
Q: Do I need to back up my task data?
Yes. You should back up your ~/.task directory, and probably
your ~/.taskrc file too.
Q: Can I share my tasks between different machines?
Yes, you can. Most people have success with a DropBox - a free
and secure file synching tool. Simply configure task to store
it's data in a dropbox folder, by modifying the:
configuration variable. Check out DropBox at
Q: The undo.data file gets very large - do I need it?
You need it if you want the undo capability. But if it gets
large, you can certainly truncate it to save space, just be
careful to delete lines from the top of the file, up to and
including a separator '---'. The simplest way is to simply
delete the undo.data file. Note that it does not slow down
task, because task never reads it until you want to undo.
Otherwise task only appends to the file.
Q: How do I know whether my terminal support 256 colors?
You will need to make sure your TERM environment variable is set
to xterm-color, otherwise the easiest way is to just try it!
With task 1.9 or later, you simply run
$ task color
and a full color palette is displayed. If you see only 8 or 16
colors, perhaps with those colors repeated, then your terminal
does not support 256 colors.
See the task-color(5) man page for more details.
Q: How do I make use of all these colors?
See the task-color(5) man page for an in-depth explanation of
the task color rules.
Q: How can I make task put the command in the terminal window title?
You cannot. But you can make the shell do it, and you can make
the shell call the task program. Here is a Bash script that
printf "\033]0;task $*"
You just need to run the script, and let the script run task.
Here is a Bash function that does the same thing:
printf "\033]0;task $*"
Q: Task searches in a case-sensitive fashion - can I change that?
You can. Just set the following value in your .taskrc file:
This will affect searching for keywords:
$ task list Document
task will perform a caseless search in the description and any
annotations for the keyword 'Document'. It also affects
description and annotation substitutions:
$ task 1 /teh/the/
The pattern on the left will now be a caseless search term.
Q: Why do the task ID numbers change?
Task does this to always show you the smallest numbers it can.
The idea is that if your tasks are numbered 1 - 33, for example,
those are easy to type in. If instead task kept a rolling
sequence number, after a while your tasks might be numbered 481
- 513, which makes it more likely to enter one incorrectly,
because there are more digits.
When you run a report (such as "list"), task assigns the numbers
before it displays them. For example, you can do this:
$ task list
$ task do 12
$ task add Pay the rent
$ task delete 31
Those id numbers are then good until the next report is run.
This is because task performs a garbage-collect operation on the
pending tasks file when a report is run, which moves the deleted
and completed tasks from the pending.data file to the
completed.data file. This keeps the pending tasks file small,
and therefore keeps task fast. The completed data file is the
one that grows unbounded with use, but that one isn't accessed
as much, so it doesn't matter as much. So in all, the ID number
resequencing is about efficiency.
Q: How do I list tasks that are either priority 'H' or 'M', but not
Task's filters are all combined with and implicit logical AND
operator, so if you were to try this:
$ task list priority:H priority:M
There would be no results, because the priority could not
simultaneously be 'H' AND 'M'. What is required is some way to
use OR instead of an AND operator. The solution is to invert the
filter in this way:
$ task list priority.not:L priority.any:
This filter states that the priority must not be 'L', AND there
must be a priority assigned. This filter then properly lists
tasks that are 'H' or 'M', because the two logical restrictions
are not mutually exclusive as in the original filter.
Some of you may be familiar with DeMorgan's laws of formal logic
that relate the AND and OR operators in terms of each other via
negation, which can be used to construct task filters.
Q: How do I delete an annotation?
Task now has a 'denotate' command to remove annotations. First
here is an example task:
$ task add Original task
$ task 1 annotate foo
$ task 1 annotate bar
$ task 1 annotate foo bar
Now to delete the first annotation, use:
$ task 1 denotate foo
This takes the fragment 'foo' and compares it to each of the
annotations. In this example, it will remove the first
annotation, not the third, because it is an exact match. If
there are no exact matches, it will remove the first non-exact
$ task 1 denotate ar
This will remove the second annotation - the first non-exact
CREDITS & COPYRIGHTS
task was written by P. Beckingham <firstname.lastname@example.org>.
Copyright (C) 2006 - 2010 P. Beckingham
This man page was originally written by P. Beckingham.
task is distributed under the GNU General Public License. See
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
task(1), taskrc(5), task-tutorial(5) task-color(5)
For more information regarding task, the following may be referenced:
The official site at
The official code repository at
You can contact the project by writing an email to
Bugs in task may be reported to the issue-tracker at