Sincronizar Taskwarrior con rclone

Termux Taskwarrior

Como comentamos en el artículo anterior, Taskwarrior es una herramienta de gestión de tareas muy potente y flexible. Pero, ¿qué pasa si trabajamos en varios dispositivos y queremos tener nuestras tareas sincronizadas en todos ellos? En este artículo vamos a ver cómo hacerlo.

En este post describiré el proceso que seguí para tener funcionando taskwarrior en Termux (Android) y que sea sincronizable en un Laptop vía Dropbox.

En primer lugar, es necesario instalar taskwarrior y timewarrior en Termux

$ pkg install taskwarrior
$ pkg install timewarrior

Luego instalaremos rclone para sincronizar con Dropbox.

$ pkg install rclone

Configuración de rclone

Para configurar rclone necesitas registrar una aplicación en Dropbox for developers y guardar los valores de app_id, app_secret y access_token.

Además, hay que añadir las siguientes Redirect URIs

Dropbox App

Luego ejecutamos

$ rclone config

Sigues los pasos, para añadir un nuevo servicio llamado "Dropbox" del tipo 12 de la lista y le pasas las app_id, app_secret guardadas. En configuración extra, sólo hace falta añadir el generado access_token. El resto lo dejas en blanco (default).

Así, crearemos un script llamado syncw.sh que sincronice la carpeta .task correspondiente a la base de datos de tareas y la carpeta timewarrior en Dropbox.

`pushw.sh``

#!/data/data/com.termux/files/usr/bin/bash

# Rutas de sincronización
LOCAL_TIMEWARRIOR_PATH="/data/data/com.termux/files/home/.local/share/timewarrior"
DROPBOX_TIMEWARRIOR_PATH="Dropbox:/timewarrior"
LOCAL_TASK_PATH="/data/data/com.termux/files/home/.task/taskchampion.sqlite3"
DROPBOX_TASK_PATH="Dropbox:/.task"

# Sincronización en ambos sentidos para Timewarrior
rclone sync "$LOCAL_TIMEWARRIOR_PATH" "$DROPBOX_TIMEWARRIOR_PATH"

# Sincronización en ambos sentidos para Taskwarrior
rclone sync "$LOCAL_TASK_PATH" "$DROPBOX_TASK_PATH"

pullw.sh

#!/data/data/com.termux/files/usr/bin/bash

# Rutas de sincronización
LOCAL_TIMEWARRIOR_PATH="/data/data/com.termux/files/home/.local/share/timewarrior"
DROPBOX_TIMEWARRIOR_PATH="Dropbox:/timewarrior"
LOCAL_TASK_PATH="/data/data/com.termux/files/home/.task/taskchampion.sqlite3"
DROPBOX_TASK_PATH="Dropbox:/.task"

rclone sync "$DROPBOX_TIMEWARRIOR_PATH" "$LOCAL_TIMEWARRIOR_PATH"
rclone sync "$DROPBOX_TASK_PATH" "$LOCAL_TASK_PATH"

Configuración en el Ordenador

Por otro lado, debemos crear un enlace simbólico en .task y ~/.local/share/timewarrior hacia las carpeta de Dropbox correspondientes. Esto permite que se sincronice directamente desde el ordenador mediante el demonio de Dropbox instalado. `

Advertencia Si se modifica la misma tarea en dos dispositivos distintos antes de realizar la sincronización, se encontrarán conflictos de fusión por parte de Dropbox. No dar pie a esta situación arregla el problema.