_____ _ _
|_ _|_ _ ___| | ____ ____ _ _ __ _ __(_) ___ _ __
| |/ _` / __| |/ /\ \ /\ / / _` | '__| '__| |/ _ \| '__|
| | (_| \__ \ < \ V V / (_| | | | | | | (_) | |
|_|\__,_|___/_|\_\ \_/\_/ \__,_|_| |_| |_|\___/|_|
Taskwarrior Tutorials
| Basic usage from the 30-Second Tutorial. | $ task add Read Taskwarrior documents later
$ task add priority:H Pay bills
$ task next
$ task 2 done
$ task
$ task 1 delete |
| — | — |
Creating Tasks
Creating tasks is straightforward, but here are some tips:
| Create a task with due date. | $ task add Pay the rent due:eom |
|---|---|
| Create a task, then add a due date later. | $ task add Pay the rent Created task 12 $ task 12 modify due:eom |
| Remove a due date from a task. | $ task 12 modify due: |
| Create a task with a multi-line description. | $ task add “Five syllables here Seven more syllables there Are you happy now?” |
Filters
A filter is how you restrict the tasks to just those that you want to see or modify.
| Show tasks I added in the last 4 days. | $ task entry.after:today-4days list |
|---|---|
| Show tasks I added yesterday. | $ task entry:yesterday list |
| Show tasks I added in the last hour. | $ task entry.after:now-1hour list |
| Show tasks I completed between a date range. | $ task end.after:2015-05-01 and end.before:2015-05-31 completed |
| Show tasks I completed in the last week. | $ task end.after:today-1wk completed |
Show tasks in This project or That project. |
$ task project:This or project:That list |
| More complex algebraic filters. | $ task project:This and ( priority:H or priority:M ) list |
Search for pattern in description and annotations: |
$ task /pattern/ list $ task rc.search.case.sensitive:yes /pattern/ list $ task rc.search.case.sensitive:no /pattern/ list |
| Search for tasks with no project. | $ task project: list |
Reports
Reports are simply a colllection of configuration settings that specify display attributes, sorting, filter and a name.
| Temporarily changing the sorting of a report. | $ task rc.report.next.sort=due-,urgency- next | | — | — |
Projects
A single project may be assigned to a task, and that project may be multiple words.
| Assign a long project name. | $ task add Rake the leaves project:’Home & Garden’ |
|---|---|
| Moving all tasks to a new project. | $ task project:OLDNAME modify project:NEWNAME |
| Moving all pending tasks to a new project. | $ task project:OLDNAME and status:pending modify project:NEWNAME |
| Using a project hierarchy. | $ task add project:Home.Kitchen Clean the floor $ task add project:Home.Kitchen Replace broken light bulb $ task add project:Home.Garden Plant the bulbs $ task project:Home.Kitchen count 2 $ task project:Home.Garden count 1 $ task project:Home count 3 |
| What projects are currently used? | $ task projects $ task _projects |
| What are all the projects I have ever used? | $ task rc.list.all.projects=1 projects $ task rc.list.all.projects=1 _projects $ task _unique projects |
Tags
Tags are simply one-word alpha-numeric labels, and a task may have any number of them.
| List tasks that have a specific tag. | $ task +home list |
|---|---|
| List tasks that do not have a specific tag. | $ task -home list |
| List tasks that have any tags. | $ task tags.any: list $ task +TAGGED list |
| List tasks that have no tags. | $ task tags.none: list |
| List tasks that have two specific tags. | $ task +this +that list $ task +this and +that list |
| List tasks that have either of two specific tags. | $ task +this or +that list |
| List tasks that have just one of two specific tags. | $ task +this xor +that list |
| What tags am I currently using? | $ task tags |
| What are all the tags I have ever used? | $ task rc.list.all.tags=1 tags $ task _tags |
Special Tags
A special tag is one with a specific name, that can influence behavior.
| Modify a task to boost it’s urgency, and probably cause it to show up on the next report. | $ task 1 modify +next |
| — | — |
Virtual Tags
A virtual tag is a tag that doesn’t actually exist, but the tag filter syntax is used to simulate the tag, providing a very convenient shortcut. After all, composing a filter to match the tasks due today is not straightforward.
| List tasks due today. | $ task due.after:yesterday and due.before:tomorrow list $ task +DUETODAY list |
|---|---|
| List tasks that are due, but not today. | $ task +DUE -DUETODAY list |
| List tasks that are due this week. | $ task +WEEK list |
| List task that are overdue. | $ task +OVERDUE list |
| What virtual tags are present for this task? | $ task 1 info |
Recurring Tasks
Recurring tasks are tasks that you need to do again and again.
| I want to make a task that is due at 9:00am every Monday, starting this coming Monday. | $ task add Do the thing due:2015-06-08T09:00 recur:weekly |
|---|---|
| I want a reminder to pay the rent every month, but only for a year. | $ task add Pay rent due:28th recur:monthly until:now+1yr |
Priority
Priority is now a User Defined Attribute since version 2.4.3, and as such can be configured.
Make priority L sort lower than no priority. |
$ task config – uda.priority.values H,M,,L |
|---|---|
| I need more priority values for my workflow. | $ task config – uda.priority.values OMG,DoIt,Meh,Phfh,Nope, |
| How do I remove the priority from a task? | $ task 1 modify priority: |
Color
| I’m using a color theme, but I don’t see any colors. This is usually because your tasks do not contain due dates, priorities etc. Prove color is working with these commands. | $ task color $ task color legend |
|---|---|
| When task output goes to a file or pipe, all color is lost. Force color with: | $ task rc._forcecolor:on rc.defaultwidth:120 rc.detection:off … |
DOM
The Taskwarrior DOM is an addressing mechanism to provide access to all stored data. It can be used in your scripts, or when manipulating tasks at the command line.
| Get just the description for task 12. | $ task _get 12.description Rake the leaves |
|---|---|
| Show the creation timestamp, and last modification date for task 12. | $ task _get 12.entry 12.modification 2010-04-04T01:02:31 2014-08-24T13:31:43 |
| Get the dimensions of my terminal window. | $ task _get context.width context.height |
| Add a task, and set the wait date to 4 days before the due date. | $ task add Pay the rent due:eom wait:due-4days |
| Add a task, and use the same due date as task 12. | $ task add Buy wine for the party due:12.due |
| Get the week number on which task 12 due. | $ task _get 12.due.week |
| Get the columns used in the next report. | $ task _get rc.report.next.columns $ task show report.next.columns |
Configuration
Although you can interactively edit your .taskrc file using any text editor, there is also a command for doing this. Furthermore you can temporarily override these settings on the command line.
Set the default.command to a different report. |
$ task config default.command long |
|---|---|
Restore the default.command to its original setting. |
$ task config default.command |
Set the default.command to a blank value. |
$ task config default.command ‘’ |
| Temporarily override default.command. | $ task rc.default.command:long |
| Show sort order of all reports. | $ task show | grep report | grep sort |
Miscellaneous
Script writers often need access to assorted data, and it can all be obtained, but sometimes through odd mechanisms…
| What is the most recent task ID? | $ task newest rc.verbose=nothing limit:1 | cut -f1 -d’ ‘ $ task rc.verbose=nothing rc.report.foo.columns:id <br> rc.report.foo.sort:id- foo limit:1 |
|---|---|
| What is the minimum necessary data for a task? | $ echo ‘{“description”:”A new task”}’ | task import - $ task add A new task |
Troubleshooting
Taskwarrior has some built-in functionality to help you get past obstacles.
| Show the runtime diagnostics, to see if anything is wrong. | $ task diagnostics | |
|---|---|---|
| Determine which version of GnuTLS is used by Taskwarrior. | $ task diagnostics \ | grep gnutls |
| Just let me brute-force change a task. Using Vim. | $ task 12 edit $ EDITOR=vim task 12 edit |
|
I can’t list my completed tasks, because the list report has a filter that shows only pending tasks. |
$ task rc.report.list.filter: list $ task all |
|
| Do I have the latest released version? | $ curl https://gothenburgbitfactory.org/latest/task 2.5.3 $ task –version 2.5.3 |