taskwarrior¶
Command-line to-do list manager. More information.
overview¶
Taskwarrior has a flexible command line syntax, but it may not be clear at first what the underlying structure means. Here is the general form of the syntax:
There are four parts to the syntax (filter
, command
, modifications
, and miscellaneous
), and each part is optional.
tldr
Add a new task which is due tomorrow:
</details>
task add description due:tomorrow
Update a task's priority:
task task_id modify priority:H|M|L
Complete a task:
task task_id done
Delete a task:
task task_id delete
List all open tasks:
task list
List open tasks due before the end of the week:
task list due.before:eow
Show a graphical burndown chart, by day:
task burndown.daily
List all reports:
task reports
Documentation for Taskwarrior can be found using 'man task', 'man taskrc', 'man task-color', 'man task-sync' or at https://taskwarrior.org
The general form of commands is:
task [<filter>] <command> [<mods>]
The <mods> consist of zero or more changes to apply to the selected tasks, such as:
task <filter> <command> project:Home
task <filter> <command> +weekend +garden due:tomorrow
task <filter> <command> Description/annotation text
task <filter> <command> /from/to/ <- replace first match
task <filter> <command> /from/to/g <- replace all matches
Tags are arbitrary words, any quantity:
+tag The + means add the tag
-tag The - means remove the tag
Built-in attributes are:
description: Task description text
status: Status of task - pending, completed, deleted, waiting
project: Project name
priority: Priority
due: Due date
recur: Recurrence frequency
until: Expiration date of a task
limit: Desired number of rows in report, or 'page'
wait: Date until task becomes pending
entry: Date task was created
end: Date task was completed/deleted
start: Date task was started
scheduled: Date task is scheduled to start
modified: Date task was last modified
depends: Other tasks that this task depends upon
Alternately algebraic expressions support:
and or xor Logical operators
< <= = != >= > Relational operators
( ) Precedence
task due.before:eom priority.not:L list
task '(due < eom and priority != L)' list
task commands
Command Category R/W ID GC Recur Context Filter Mods Misc Description
columns config RO Misc All supported columns and formatting styles
config config RO Misc Change settings in the task configuration
reports config RO Lists all supported reports
show config RO Misc Shows all configuration variables or subset
udas config RO Shows all the defined UDA details
commands metadata RO Generates a list of all commands, with behavior details
stats metadata RO GC Ctxt Filt Shows task database statistics
ids metadata RO ID GC Recur Filt Shows the IDs of matching tasks, as a range
count metadata RO GC Recur Ctxt Filt Counts matching tasks
projects metadata RO GC Recur Ctxt Filt Shows all project names used
tags metadata RO GC Ctxt Filt Shows a list of all tags used
uuids metadata RO GC Recur Filt Shows the UUIDs of matching tasks, as a space-separated list
context context RO Misc Set and define contexts (default filters / modifications)
internals
_aliases internal RO Generates a list of all aliases, for autocompletion purposes
_columns internal RO Displays only a list of supported columns
_commands internal RO Generates a list of all commands, for autocompletion purposes
_config internal RO Lists all supported configuration variables, for completion purposes
_context internal RO Lists all supported contexts, for completion purposes
_get internal RO Misc DOM Accessor
_ids internal RO ID GC Recur Filt Shows the IDs of matching tasks, in the form of a list
_projects internal RO GC Recur Filt Shows only a list of all project names used
_show internal RO GC Shows all configuration settings in a machine-readable format
_tags internal RO GC Recur Filt Shows only a list of all tags used, for autocompletion purposes
_udas internal RO Shows the defined UDAs for completion purposes
_unique internal RO ID GC Filt Misc Generates lists of unique attribute values
_urgency internal RO GC Filt Displays the urgency measure of a task
_uuids internal RO GC Recur Filt Shows the UUIDs of matching tasks, as a list
_version internal RO Shows only the Taskwarrior version number
_zshattributes internal RO Generates a list of all attributes, for zsh autocompletion purposes
_zshcommands internal RO Generates a list of all commands, for zsh autocompletion purposes
_zshids internal RO ID GC Recur Filt Shows the IDs and descriptions of matching tasks
_zshuuids internal RO GC Recur Filt Shows the UUIDs and descriptions of matching tasks
operation
add operation RW Ctxt Mods Adds a new task
annotate operation RW Filt Mods Adds an
append operation RW Filt Mods Appends text to
delete operation RW Ctxt Filt Mods Deletes the
denotate operation RW Ctxt Filt Misc Deletes an
done operation RW Ctxt Filt Mods Marks the
duplicate operation RW Ctxt Filt Mods Duplicates the
edit operation RW Recur Ctxt Filt Launches an
log operation RW Ctxt Mods Adds a new task
modify operation RW Filt Mods Modifies the
prepend operation RW Ctxt Filt Mods Prepends text to
purge operation RW GC Ctxt Filt Removes the
start operation RW Ctxt Filt Mods Marks specified
stop operation RW Ctxt Filt Mods Removes the
undo operation RW Reverts the most
graphs
burndown.daily graphs RO GC Recur Ctxt Filt Shows a
burndown.monthly graphs RO GC Recur Ctxt Filt Shows a
burndown.weekly graphs RO GC Recur Ctxt Filt Shows a
calendar graphs RO ID GC Misc Shows a
ghistory.annual graphs RO Recur Ctxt Filt Shows a
ghistory.daily graphs RO Recur Ctxt Filt Shows a
ghistory.monthly graphs RO Recur Ctxt Filt Shows a
ghistory.weekly graphs RO Recur Ctxt Filt Shows a
history.annual graphs RO Recur Ctxt Filt Shows a report
history.daily graphs RO Recur Ctxt Filt Shows a report
history.monthly graphs RO Recur Ctxt Filt Shows a report
history.weekly graphs RO Recur Ctxt Filt Shows a report
summary graphs RO GC Ctxt Filt Shows a report
task +home status:pending count
task reports
Report Description
---------------- --------------------------------------------------
active Active tasks
all All tasks
blocked Blocked tasks
blocking Blocking tasks
burndown.daily Shows a graphical burndown chart, by day
burndown.monthly Shows a graphical burndown chart, by month
burndown.weekly Shows a graphical burndown chart, by week
completed Completed tasks
ghistory.annual Shows a graphical report of task history, by year
ghistory.monthly Shows a graphical report of task history, by month
history.annual Shows a report of task history, by year
history.monthly Shows a report of task history, by month
information Shows all data and metadata
list Most details of tasks
long All details of tasks
ls Few details of tasks
minimal Minimal details of tasks
newest Newest tasks
next Most urgent tasks
oldest Oldest tasks
overdue Overdue tasks
projects Shows all project names used
ready Most urgent actionable tasks
recurring Recurring Tasks
summary Shows a report of task status by project
tags Shows a list of all tags used
unblocked Unblocked tasks
waiting Waiting (hidden) tasks
28 reports
burndown.daily
burndown.monthly
burndown.weekly
calendar
colors
export
ghistory.annual
ghistory.monthly
history.annual
history.monthly
information
summary
timesheet
active
all
blocked
blocking
completed
list
long
ls
minimal
newest
next
oldest
overdue
ready
recurring
unblocked
waiting
Config Variable Value
--------------------- ---------------------------
report.minimal.labels ID,Project,Tags,Description
Config Variable Value
---------------------- ---------------------------------------
report.minimal.columns id,project,tags.count,description.count
$ task config report.minimal.labels 'ID,Project,Description'
...
$ task config report.minimal.columns 'id,project,description.count'
Simple list of open tasks by project
depends
description
due
end
entry
foo
id
imask
mask
modified
parent
priority
project
recur
scheduled
start
status
tags
until
urgency
uuid
wait
id,project,description
Columns Supported Formats Example
------- ----------------- ------------------------------------
id number* 123
uuid long* f30cb9c3-3fc0-483f-bfb2-3bf134f00694
short f30cb9c3
Columns Supported Formats Example
------- ----------------- -------------
project full* home.garden
parent home
indented home.garden
Columns Supported Formats Example
----------- ----------------- -----------------------------------------------------------------------------
description combined* Move your clothes down on to the lower peg
2014-02-08 Immediately before your lunch
2014-02-08 If you are playing in the match this afternoon
2014-02-08 Before you write your letter home
2014-02-08 If you're not getting your hair cut
desc Move your clothes down on to the lower peg
oneline Move your clothes down on to the lower peg 2014-02-08 Immediately before ...
this afternoon 2014-02-08 Before you write your letter home 2014-02-08 If ...
truncated Move your clothes do...
count Move your clothes down on to the lower peg [4]
id,project,description.count
ID,Proj,Desc
project+/,entry+
status:pending
task config report.simple.description 'Simple list of open tasks by project'
task config report.simple.columns 'id,project,description.count'
task config report.simple.labels 'ID,Proj,Desc'
task config report.simple.sort 'project+/,entry+'
task config report.simple.filter 'status:pending'
report.simple.description=Simple list of open tasks by project
report.simple.columns=id,project,description.count
report.simple.labels=ID,Proj,Desc
report.simple.sort=project+\/,entry+
report.simple.filter=status:pending
task simple
ID Proj Desc
-- ---- -----------------
1 Home Wash the windows
3 Home Vacuum the floors
2 Food shopping
task help | grep simple
task simple Simple list of open tasks by project
task show report.simple
Config Variable Value
------------------------- ------------------------------------
report.simple.columns id,project,description.count
report.simple.description Simple list of open tasks by project
report.simple.filter status:pending
report.simple.labels ID,Proj,Desc
report.simple.sort project+/,entry+
Built-in attributes are:
description: Task description text
status: Status of task - pending, completed, deleted, waiting
project: Project name
priority: Priority
due: Due date
recur: Recurrence frequency
until: Expiration date of a task
limit: Desired number of rows in report, or 'page'
wait: Date until task becomes pending
entry: Date task was created
end: Date task was completed/deleted
start: Date task was started
scheduled: Date task is scheduled to start
modified: Date task was last modified
depends: Other tasks that this task depends upon
Modifiers Example Equivalent Meaning
---------------- ----------------- ------------------- -------------------------
due:today due = today Fuzzy match
not due.not:today due != today Fuzzy non-match
before, below due.before:today due < today Exact date comparison
after, above due.after:today due >= tomorrow Exact date comparison
none project.none: project == '' Empty
any project.any: project !== '' Not empty
is, equals project.is:x project == x Exact match
isnt project.isnt:x project !== x Exact non-match
has, contains desc.has:Hello desc ~ Hello Pattern match
hasnt, desc.hasnt:Hello desc !~ Hello Pattern non-match
startswith, left desc.left:Hel desc ~ '^Hel' Beginning match
endswith, right desc.right:llo desc ~ 'llo$' End match
word desc.word:Hello desc ~ '\bHello\b' Boundaried word match
noword desc.noword:Hello desc !~ '\bHello\b' Boundaried word non-match
Alternately algebraic expressions support:
and or xor Logical operators
< <= = != >= > Relational operators
( ) Precedence
task due.before:eom priority.not:L list
task '(due < eom and priority != L)' list
by due.by:today due <= today Exact date comparison
task add Pay the rent due:1st recur:monthly until:2015-03-31
Created task 123.
task 123 info
Name Value
ID 123
Description Pay the rent
Status Recurring
Recurrence monthly
Entered 2014-03-01 12:13:28 (42 secs)
Due 2014-04-01 00:00:00
Until 2015-03-31 00:00:00
UUID 64bcf8fd-74d5-40d2-9e57-1d6a5922cdfc
Urgency 2.4
task 124 info
Name Value
ID 124
Description Pay the rent
Status Pending
Recurrence monthly
Parent task 64bcf8fd-74d5-40d2-9e57-1d6a5922cdfc
Mask Index 0
Entered 2014-03-01 12:17:03 (15 secs)
Due 2014-04-01 00:00:00
Until 2015-03-31 00:00:00
UUID 29d2df7a-1165-4559-b974-a727519e00f1
Urgency 2.4
task 123 info
Name Value
ID 123
Description Pay the rent
Status Recurring
Recurrence monthly
Mask -
Entered 2014-03-01 12:13:28 (3 mins)
Due 2014-04-01 00:00:00
Until 2015-03-31 00:00:00
Last modified 2014-03-01 12:17:03 (24 secs)
UUID 64bcf8fd-74d5-40d2-9e57-1d6a5922cdfc
Urgency 2.4
Date Modification
2014-03-01 12:17:03 Mask set to '-'.
Modified set to '2014-03-01 12:17:03'.
The <filter> consists of zero or more restrictions on which tasks to select, such as:
task <command> <mods>
task 28 <command> <mods>
task +weekend <command> <mods>
task project:Home due.before:today <command> <mods>
task ebeeab00-ccf8-464b-8b58-f7f2d606edfb <command> <mods>
By default, filter elements are combined with an implicit 'and' operator, but 'or' and 'xor' may also be used, provided parentheses are included:
task '(/[Cc]at|[Dd]og/ or /[0-9]+/)' <command> <mods>
A filter may target specific tasks using ID or UUID numbers. To specify multiple tasks use one of these forms:
task 1,2,3 delete
task 1-3 info
task 1,2-5,19 modify pri:H
task 4-7 ebeeab00-ccf8-464b-8b58-f7f2d606edfb info
task +HOME list
task -WORK list
task +HOME -WORK list
task due.after:yesterday and due.before:tomorrow list
task due:today list
task due.after:yesterday and due.before:tomorrow list
task +TODAY list
task -TODAY list
$ task add Send Alice a birthday card
$ task add Send Alice a birthday card \
due:2016-11-08
$ task due:today list
...
$ task +TODAY list
...
$ task due.any: list
...
$ task due.none: list
...
$ task add Send Alice a birthday card \
due:2016-11-08 \
scheduled:2016-11-04
$ task ready
...
$ task +READY list
...
$ task add Send Alice a birthday card \
due:2016-11-08 \
scheduled:2016-11-04 \
wait:november
$ task waiting
...
$ task add Send Alice a birthday card \
due:2016-11-08 \
scheduled:2016-11-04 \
wait:november \
until:2016-11-10
$ task add Send Alice a birthday card \
due:2016-11-08 \
scheduled:due-4d \
wait:due-7d \
until:due+2d
document.getElementById("myAnchor").href;
1.description
task add Buy milk due:tomorrow +store project:Home pri:H
task 1 info
Name Value
------------- ------------------------------------------
ID 1
Description Buy milk
Status Pending
Project Home
Priority H
Entered 2014-09-28 21:53:59 (4 seconds)
Due 2014-09-29 00:00:00
Last modified 2014-09-28 21:53:59 (4 seconds)
Tags store
UUID c0ab2bf6-b4f5-45c2-8420-18ab4f1ba7e7
Urgency 16.56
project 1 * 1 = 1
priority 1 * 6 = 6
tags 0.8 * 1 = 0.8
due 0.73 * 12 = 8.76
$ task _get 1.description
Buy milk
$ task _get 1.uuid
c0ab2bf6-b4f5-45c2-8420-18ab4f1ba7e7
$ task _get c0ab2bf6-b4f5-45c2-8420-18ab4f1ba7e7.id
1
$ task _get 1.due.year
2014
$ task _get 1.due.julian
272
$ task _get system.version
2.4.0
$ task _get system.os
FreeBSD
$ task _get rc.data.location
~/.task
$ task add Pay rent due:eom wait:'due - 3days'
$ task add Fix the leak depends:3 scheduled:3.due
$ task _get 1.due.year
2014
$ task _get 1.due.month
9
$ task _get 1.due.day
29
$ task _get 1.due.week
40
$ task _get 1.due.weekday
1
$ task _get 1.due.julian
272
$ task _get 1.due.hour
0
$ task _get 1.due.minute
0
$ task _get 1.due.second
0
$ task _get 1.tag.home
home
$ task _get 1.tag.DUE
DUE
$ task _get 1.tag.OVERDUE
$ task _get 1.annotations.0.description
$ task _get 1.annotations.0.entry
$ task _get 1.annotations.0.entry.year
2014