Syncing Taskwarrior with WingTask

WingTask provides a Taskserver for syncing your local Taskwarrior tasks up to WingTask, you can also use it to sync your other Taskwarrior clients.

Sections in this article

WingTask provides a taskserver installaion for the syncing of taskwarrior tasks from your local machine up to WingTask. The taskserver’s main purpose is giving WingTask access to tasks that originate on your local machine, and it also provides the benefit of allowing you to sync your Taskwarrior tasks between your other devices.

Prerequisites

  1. Taskwarrior installed at version 2.5.1 or newer.

  2. A taskwarrior configuration file (.taskrc) located in your home directory.

Installing Taskwarrior (1 of 2)

There are several ways for you to get a copy of Taskwarrior:

  • Download a release tarball, from here, then make sure you have libuuid-dev (may be called uuid-dev) and gnutls-dev installed. Then using cmake, GCC 4.7 / Clang 3.3, build Taskwarrior.

    https://taskwarrior.org/docs/build.html

  • Using git, clone the code repository, switch to the current development branch, and build Taskwarrior.

    https://taskwarrior.org/docs/build.html

  • Install a binary package. Your operating system probably already has a binary package available. These packages are usually named ‘task’.

Mac OS X:

$ brew install task

Debian/Ubuntu:

$ apt install taskwarrior

Fedora:

$ yum install taskwarrior

Archlinux:

$ pacman -S task'

Others:

http://taskwarrior.org/download/

Creating taskwarrior configuration file (and data directory) (2 of 2)

Taskwarrior looks for a configuration file at $HOME_DIR/.taskrc every time a taskwarrior command is executed. In the event that a config file is not found at $HOME_DIR/.taskrc, taskwarrior will prompt the user asking if a sample config should be created. Here is an example:

$ task version
A configuration file could not be found in ~

Would you like a sample /home/alice/.taskrc created, so taskwarrior
can proceed? (yes/no) yes

Step 1 - Download the WingTask Configuration file

Navigate to Settings, on Mobile click on the App ellipse button and then click Settings, on Desktop click the Settings icon. On the Settings page click on Download WingTask Configuration and a file download should begin.

Mobile

App dropdown on mobile

Download WingTask Configuration button in Settings:

Download wingTask configuration button

Navigate to the folder where the configuration zip file was downloaded, unzip it, and cd to the extracted directory.

$ unzip wingtask_configuration.zip
$ cd wingtask_configuration
$ chmod +x install.sh
$ ./install.sh

The install script will do the following:

  1. Verifies Taskwarrior is installed and the ‘task’ command is in $PATH.
  2. Makes a backup copy of existing .taskrc to .taskrc.orig.
  3. Copies directory wingtask_certs to $HOME/.wingtask_certs. These PKI certificates authorize access to the WingTask taskservers.
  4. Runs ‘task configure’ to set the Taskwarrior configuration for taskd.server to point to the WingTask taskserver.
  5. Runs ‘task configure’ to set the taskd.key to point to the PKI key copied to $HOME/.wingtask.certs/YOUR_EMAIL.key.pem.
  6. Runs ‘task configure’ to set the taskd.ca to point to the intermediate chain certificate copied to $HOME/.wingtask_certs/letsencrypt_root_certificate.pem.
  7. Runs ‘task configure’ to set the taskd.certificate to the PKI cert copied to $HOME/.wingtask_certs/YOUREMAIL.cert.pem.
  8. Run ‘task configure’ to set taskd.credentials to your WingTask auth credentials.
wingtask configuration install by script

Step 2 - Manually configure Taskwarrior

Navigate to the folder where the configuration zip file was downloaded, unzip it, and cd to the extracted directory.

$ unzip wingtask_configuration.zip
$ cd wingtask_configuration

The extracted wingtask_configuration.zip contains 4 files. Of note is the taskrc file the contains the config necessary to connect to WingTask taskserver. Instead of running the install script you can copy the config over to your .taskrc file. Make sure to set the paths for the taskd certificates to the location of the certs in directory wingtask_certs.

  1. install.sh - Install script described above.
  2. README - provides included help.
  3. wingtask_certs - This directory contains your PKI certs to connect with WingTask tasksever securely.
  4. taskrc - A default taskwarrior .taskrc file with the addition of the configurations necessary for to connect to WingTask for your account. Of note is the taskd.credentials config which is the config that actually identifies your account to WingTask. You can copy and paste this config into your .taskrc file usually located in the home directory.

DO NOT UPLOAD TASKRC TO A PUBLIC REPO SUCH AS GITHUB

The UUID of configuration 'taskd/credentials' should be regarded as a password and kept secret.

Certificates are for encryption of data in transit and are not used for authentication. They should likewise be kept secret.

Step 3 - Run initial sync of Taskwarrior to WingTask

Taskwarrior has a special command for first time sync.

$ task sync init

Step 4 - Run task sync whenever you want to want to sync with WingTask.

Any changes you make locally will not be reflected in WingTask until you sync the local changes up to the WingTask taskserver. Likewise, any tasks created or changed in WingTask won’t show up locally until you sync. You can run sync as often as you like.

$ task sync

Troubleshooting

Error: Could not find common ancestor for…

This is the most common error reported and is fixed by running ‘task sync init’.


Related Articles