If this is a first draft, I hope to make it less long-winded on an edit later.
The story on this awesome app I’m trying
I recently got really into a todo/productivity app called Taskwarrior. I tried a few apps, hoping to be able to find a workflow that was relatively seamless between phone and personal computer. A good browser app would have been a plus too, so that I could use it on any computer. I also had a strong preference that when I worked on my list on my personal computer, I could access my items with a lightweight tool, like a terminal or text editor, and not be forced to have yet another application open, or worse, hogging CPU and battery life. Also, I find these apps to be very slow and awkward, as you’re forced to click around with your mouse. So shame on them further for not giving you better options in how you interact with your list.
One option I had, was to continue using Org-mode, and that’s more or less what I was doing to an extent. However, I’ve never had a stupendous experience with the phone apps for org-mode.
But for some reason I revisited Taskwarrior, an app I had noticed some time ago. I think recently I had run into one of its android incantations, in my search for todo apps. And it seems to be working out great. I won’t say it’s for everyone, but for me, right now, it’s filling a spot perfectly.
The interface on the PC is primarily and first in the terminal. There are more interfaces than the initial one there, but this is just fine for me on first setup. And the fact that it’s a terminal app means I have very quick access to it. On the android, the version I like best is TaskWarriorC2, a very good selection of features there, and the awesome monospace text aesthetic. Unfortunately, I don’t have any workflow for it to work in a browser at any computer, but the terminal and phone use more than make up for this.
A very short tutorial
Let’s say you want to remember to take the trash out. Then you simply
type in terminal,
task add take out trash.
To review your list of todos, simply
task, and you’ll see your list.
(The default command being run there is
You’ll see the task has an ID, which in this case might simply be
So when you’re done, you simply do
task 1 done.
A few more of the commands
The other features I really like at the moment, are tags for filtering
task add do homework +school), and setting dates and
times for items (for example,
task add ask boss for raise
due:Monday+7.5hrs). Also, there is a feature for recurrence (
add plank and abs due:today+6hrs recur:12hrs). The original author of
the app has recently been working on making the recurrence feature
even more awesome, which I’m very excited in that it will make this
already awesome app even awesomer. However, he said estimated delivery
time is n months. For now, I am content in not trying to do anything
too complicated with the recurrence feature.
Okay, another really cool feature I really must comment on, is Taskwarrior’s urgency feature. Taskwarrior uses a polynomial to represent the urgency of each task, that is, it applies a weight to various properties of a todo item, such as due date, date created, priority, tags, projects, etc. And so everytime you list your tasks, Taskwarrior will use this heuristic to sort in terms of this urgency polynomial.
Note: In an effort to avoid using
sudo, I’ll assume that
~/opt/bin/ is on your
To install on Ubuntu 16.04, GNU/Linux, I had to make sure that some
tools were installed,
apt install git cmake g++ libgnutls-dev
uuid-dev. (Not sure why I didn’t mention
make there, but I have an
obsession with listing those requirements in the order that error
messages would have issue, so I won’t merge to list until I try an
install on a new machine.)
git clone https://git.tasktools.org/scm/tm/task.git cd task cmake -DCMAKE_INSTALL_PREFIX=~/opt . make install
Compare the following change below.
include /usr/local/share/doc/task/rc/light-256.theme include ~/opt/share/doc/task/rc/light-256.theme
If you run into problems with
make, you may not be able to simply
cmake after installing more packages, I sometimes had to run
git clean -dfx to get a clean slate. (:nod: to resources on chat
channels and webpages as I troubleshooted the install.)
To install on MacOS, try
brew install cmake
The installation for Taskserver is almost exactly the same.
git clone https://git.tasktools.org/scm/tm/taskd.git cd taskd cmake -DCMAKE_INSTALL_PREFIX=~/opt . make install
You can install the Taskserver on some machine you can host from, and this will allow you to sync your todo lists between devices. It takes a little effort, you’ll be making CA, certs, keys, as well as making a user and certs and keys for the user that you’ll have to copy to each device. I have a way to ssh into my Android phone to copy the cert and key securely.
One thing you’ll have to look out for, is using recurrence, two
devices may create duplicates. The advice is to turn off recurrence on
one of the devices, but I didn’t want one of the devices to be
necessarily visited in order to keep recurring items coming, so I
turned off recurrence on both my personal computer and my phone, and
instead have a client running on the private server where
running, and a cron job to run
task sync every minute.
Make sure the cron doesn’t fill the system mailbox with the output.
(You may get a clue when shell reports you have mail.)
Note: At one point, I was puzzled when trying out some recurrence features, did not realize that this choice of configuration was creating some unexpected delays in recurrence effects, and realized I could toggle the recurrence feature on personal machine and server to get live and local effects while experimenting.
Taskwarrior allows users to make User Defined Attributes (UDA), described here, https://taskwarrior.org/docs/udas.html.
They mention there that some users request to have a property where you can define a time estimate on tasks, thus one might want to do a series of tasks all at once that are estimated to take less than five minutes. A little more on how one might configure this is described at https://taskwarrior.org/docs/terminology.html#uda.
There they describe that you can simply do
task config uda.estimate.label Estimate task config uda.estimate.type duration
Then from there, you may now indicate time estimates like so
task add Paint the door due:eom estimate:4hours
Further you can have it contribute to the urgency polynomial, as described at the links above, but for now I’ll use it in a simple fashion just to indicate items that I expect would take less than five minutes to complete.
Then if you’d like a column to appear in the
task next report, use
task reports to see list of reports, use
task show next to see the
settings available, and note you want to modify the
task config report.next.labels ID,Active,Age,Deps,P,Project,Tag,Recur,S,Due,Until,Description,Urg,Est task config report.next.columns id,start.age,entry.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description,urgency,estimate