Taskwarrior

Taskwarrior () is a Article description::to-do list manager for the command line written in C++. It uses a simple human readable text file format to store to-do list items and associated metadata. Taskwarrior isn't tied to a specific school of thought on task organization. It's designed to be simple yet flexible and scalable. As such, Taskwarrior has a syntax that is simple and intuitive.

Notable features include:


 * Data is stored locally in JSON files, easing migration to and from Taskwarror.
 * Interactions can be scripted via Taskwarrior's Hooks API.
 * Multiple UI options are available as part of the Taskwarrior ecosystem.
 * When paired with, tasks can be shared with multiple remote client applications.

Environment variables

 * $TASKRC allows the user to relocate the configuration file to a desired directory.
 * $TASKDATA allows the user to relocate the data file to a desired directory.

Modifying these variables is not required to enforce XDG Base Directory Support. If you've installed task warrior and it's ignoring you XDG preferences see the troubleshooting section.

Files

 * — XDG local (per user) configuration file.
 * — XDG task list directory with tasks spread across multiple files.
 * — legacy local (per user) configuration file.
 * — legacy local (per user) task list directory with tasks spread across multiple files.

Service
By itself, Taskwarrior is a single device application allowing all users on the device to have their own personal tasks lists. However, the taskd daemon provides a backend task server which provides for multiuser and multiclient support. Some smartphone applications, notably Foreground for Android, have begun to support this.

Taskwarrior is not respecting the XDG Base Directory Specification
Taskwarrior defaults to unless it detects the presence of. The file. If both are present it defaults to. So, you must first move the file:

Next, edit and uncomment the following lines:

Next, move your existing ~/.task/ directory:

Confirm the contents of the {[path|~/.task}} directory have been copied properly and then delete the original directory.

Lastly, copy the contents of to the  directory:

Finally, delete if present and the original {[path|~/.task}} directory.