Taskwarrior is a command-line based productivity software. You can use it to maintain a simple shopping list, but it is capable of much more. It is lightweight, open-source and most importantly, terminal-based. This makes it much more powerful than other TODO lists such as Trello.
It is easy to run a Taskwarrior server locally and manage tasks over a group of people.
task
pacman -S task
sudo apt-get install taskwarrior
Then run it using task
. You’ll be prompted to create the config file. Say yes.
Modify the .taskrc
file to use the light-256 theme, which works best with white terminal background. If you ever consider shifting to a darker terminal, consider exploring other themes. I recommended dark-256, obviously.
git add
the files: .taskrc
, and the directory .task
so that you can have them forever.
task add "Name of the task"
task
task ID done (IDs are 1, 2 3, ... etc)
task ID delete
task ID modify "new and modified task description"
task ID annotate "and another thing"
task ID modify project:projectname due:duedate
task ID1 ID2 ID3 modify project:projectname
task 1 modify until:eoy
task 1 modify wait:30th
task project:projectname modify +tagname
task project:prj
task project:prj tag:
task project:prj tag: modify +newtag
task started (write "task reports" to see all possible options)
This part is taken from best practices suggested by the author.
task ID modify project:Home
task ID modify due:31st
task ID start
task ID modify priority:M
task ID modify +problem +house
+next
to a task, to boost its urgency:
task ID modify +next
task ID modify depends:OTHER_ID
The rules for date and time format can be changed from rc.dateformat
setting, but the default setting prints the date in the British format.
Example:
task add Open the store due:2015-01-31T08:30:00
task add Pay the rent due:eom
Here the synonym eom
means ‘end of the month’. Synonyms are a useful shortcut to entering lengthy dates. Here is the full set:
now
today
sod
eod
yesterday
tomorrow
monday
january
later
someday
soy
eoy
soq
eoq
som
socm
eom
eoc
Here, eo
=end of, so
=starting of (the next), soc
=starting of the current, d
=day, w
= week, m
=month, y
=year, q
=quarter etc. See here for more details.
The rc.dateformat
setting in taskrc
allows you to specify other formats for date input. It supports standard date and time formats (without the %
).
A recurring task is a task with a due date that keeps coming back as a reminder. Here is an example:
task add Pay the rent due:1st recur:monthly until:2015-03-31
To get rid of unnecessary info that is displayed, this page can be a lifesaver. Here is what I found most useful.
Adding the line
verbose=no
to the file .taskrc
will help you get rid of the footnote and header.
Here is an example of a custom report called “verybasic” which contains very specific columns that we want, in our desired order. Either add the following lines to .taskrc
or add task
to the beginning of every line and run individually in terminal (both have the same effect):
report.verybasic.description='A list with very basic information, created by me.'
report.verybasic.columns=id,project,tags,description.count,due
report.verybasic.sort=start-,urgency-
report.verybasic.filter=status:pending
To make this report your default output report, add to your .taskrc
:
default.command=verybasic
or, issue this command in terminal: task config default.command 'verybasic'
To see this custom report in action, just run task verybasic
. Detailed documentation found here.
task undo
task calendar
You can combine more commands to generate desired output.
vit
. Compile from the AUR (on Arch). Alternatively, here is the github.The website freecinc provides a service to host your tasks so that you do not need to set up your own server. To use this, simply log in to the website and follow their instruction. After you are done, in order to sync manually, run task sync
in your client and done. To automate it, add this to your crontab -e
:
# Syncing task warrior
3 */2 * * * task sync && notify-send "Syncing Tasks"
which sends out a little notification every time syncing is performed.
On Android, the app Mirakel (Caution: outdated) gives you a way to upload a specially created config file so that you can sync with your server (freecinc, in this case). Format of this config file:
username: foo
org: bar
user key: <your key here>
server: localhost:6544
client.cert:
-----BEGIN CERTIFICATE-----
…
-----END CERTIFICATE-----
Client.key:
-----BEGIN RSA PRIVATE KEY-----
…
-----END RSA PRIVATE KEY-----
ca.cert:
-----BEGIN CERTIFICATE-----
…
-----END CERTIFICATE-----
Get your username, org and server from the line starting with taskd.credentials=
in the file ~/.taskrc
. The format of that line is
taskd.credentials=org\/username\/user_key
Note that the org comes before the username. Get your server from the line staring with taskd.server=
.
Finally, insert the contents of the file *.cert.pem
, *.key.pem
, *.ca.key
.
Save it with any name and send it to the mobile phone so that you cam import it into Mirakel.
Tips: Use arithmetic operations in attributes:
task add newtask due:2days scheduled:due-1day
My new favourite is inthe.AM. This one has a web front-end as well as a nice server. Works similarly. You have to login with your email.
To use Mirakel effectively, I use several UDAs which are defined in my taskrc
.
Task Warrior for Andriod is the most functional development so far, although it is a bit buggy at times.
It is easy to set up Kanban or GTD with Taskwarrior. There are many extensions. Here is a whole list of tools developed around it. Here are a few.