Linkdump 09/2026
Important advice: Permission to Hibernate.
You've changed. Which is the only constant in life.
Wie bereits geschrieben, bin ich nach einigem "hin und her", was die Aufgabenverwaltung angeht, wieder bei Taskwarrior gelandet. Ich bin sehr überrascht, wie vieles noch in meinem "Muskelgedächtnis" ist und von mir ohne Nachdenken getippt wird.
Trotzdem hat sich in den vergangenen sechs Jahren eine Menge getan. Mit Version 3 setzt Taskwarrior auf die taskchampion-Bibliothek auf und nutzt im Backend keine ASCII-Dateien mehr, sondern eine SQLite-Datenbank.
Was sich durch diese Entscheidung in jedem Fall deutlich erleichtert hat, ist die Synchronisation zwischen verschiedenen Taskwarrior-Instanzen.
Wenn Ihr Synchronisation einsetzten wollt, müsst Ihr auf allen Clients bis auf einen recurrence=off in Eure Konfigurationsdatei aufnehmen.
Die Synchronisation bei Taskwarrior funktioniert (immer noch) so, dass Ihr eine Aufgabenvorlage anlegt, die nach Ablauf des Wiederholungsintervalls nach einem Aufruf von task eine neue zu bearbeitende Aufgabe generiert. Das passiert nur auf der Instanz auf der recurrence=on (oder "1", das ist der Standard-Wert) gesetzt ist.
Aus diesem Grund empfehle ich einen Taskwarrior Client auf der Maschine laufen zu lassen, auf der der Taskchampion-Sync-Server läuft und nur bei diesem die wiederkehrenden Aufgaben erstellen zu lassen.
Aber jetzt zum Setup. der Sync-Server "spricht" http ohne "s", daher ist es sinnvoll einen Reverse-Proxy davor zu schalten, der die Transportverschlüsselung übernimmt, bei mir ist das Caddy, der kümmert sich auch um die Zertifikate. Die folgende kleine Konfiguration leitet Anfragen an den lokal laufenden Server auf Port 8000 weiter.
Die Installation und den Start des Caddyservers spare ich mir an dieser Stelle.
Ich spare mir bei den Skripten im folgenden auch den Anfang, der bei allen Skripten gleich ist. Ersetzt bitte User durch den Nutzer, unter dem Ihr die Dinge ausführen wollt.
Mit dem Start des newclient-Skriptes könnt Ihr einen neuen User anlegen, ich habe das ausgelagert, weil ich das im Produktivbetrieb nicht mehr möchte.
Auf dem Client müsst Ihr jetzt eine client_id und ein encryption_secret definieren. Für die Client-ID benutze ich uuidgen und für das Secret pwgen -n 32 1.
Mit diesen Informationen könnt Ihr jetzt den Client konfigurieren, dazu die folgenden Zeilen in Eure .taskrc aufnehmen.
Einer ersten Synchronisation steht jetzt nichts mehr im Weg.
Wenn alles geklappt hat, könnt Ihr das laufende Skript newclient.bash beenden.
Das nun folgende Skript startet den Syncserver im "Produktivbetrieb" (Umgebungsvariable CREATE_CLIENTS), die Daten landen in ~/.local/share/taskchampion-sync-server:
Ein Stoppskript hat es natürlich auch.
So, jetzt noch einen User-Service angelegt und später aktiviert (enabled).
So, Endspurt. Als letztes ein kleines Skript, das das task-Kommando aufruft (um wiederkehrende Aufgaben zu erstellen) und danach mit dem Syncserver synchronisiert.
Noch einmal ein Userservice:
Statt einem Cronjob lasse ich diese Aufgabe mit einem systemd-timer-Eintrag erledigen. Ja, alle fünf Minuten, aber das ganze Syncskript läuft nur eine viertel Sekunde.
Rückfragen, Kommentare und Verbesserungsvorschläge gerne in den Kommentaren.
Nach rund sechs Jahren mit verschiedenen Tools habe ich mich entschieden, wieder zurück auf Taskwarrior zu wechseln. Über Taskwarrior finden sich hier im Blog eine Menge Artikel (Tag taskwarrior) und in meinen Vorträgen und Workshops gibt es auch reichlich Informationen. Warum ich gewechselt bin, habe ich "natürlich" auch dokumentiert.
Bei Taskwarrior war ich relativ lange und als ich zu Todoist gewechselt bin, habe ich sehr viele Funktionen vermisst. Meinen Workflow habe ich auf das reduzierte Featureset von Todoist angepasst. Natürlich habe ich auch neue Funktionen bekommen: eine perfekte Synchronisation, die Verfügbarkeit überall und dergleichen mehr.
Das Killerfeature von Taskwarrior, nämlich die Berechnung der Dringlichkeit einer Aufgabe, ist seitens Todoist nie implementiert worden (die wait-Funktion allerdings schon, sie heisst "scheduled").
Die Preiserhöhung bei Todoist hat bei mir allerdings einen Denkprozess angestossen und dafür gesorgt, dass ich nach Alternativen geschaut habe.
Wenn ich darüber nachdenke, dann habe ich herausgefunden, dass ich alle Aufgaben, die ich mobil erfasst habe, einmal nachbearbeiten musste. Sei es, dass ich sie einem Projekt zugewiesen, das Fälligkeitsdatum angepasst oder einen Tag vergeben habe. Daher ist es gar nicht so wahnsinnig wichtig, einen lokalen Client zu haben. Toll wäre es, ein Webfrontend zu haben, um mobil nachschauen zu können.
Nach intensiven Tests mit Super Productivity, Vikunja und Logseq zur Aufgabenverwaltung bin ich von allen nicht zu 100% überzeugt. Alle drei haben Stärken und Schwächen. Zum Teil Stärken, die ich nicht brauche, und Schwächen, die mir wehtun. Logseq werde ich weiterhin für Notizen benutzen, aber nicht zur Aufgabenverwaltung.
Jetzt habe ich Taskwarrior auf einer VM mit Fedora installiert (ich nutze nur das paketierte Tool) und zusätzlich als Frontend Taskwarrior WebUI um auf Systemen ohne ssh-Client (insbesondere mobil) zugreifen zu können. Das WebUI muckt manchmal ein wenig und es scheint auch nicht mehr weiterentwickelt zu werden. Vermutlich steige ich auf Taskwarrior Web um, wenn mein Problem gelöst wird.
MitTaskwarrior 3 hat sich eine Menge getan, unter anderem wird im Backend jetzt SQLite als Datenbank verwendet und es gibt einen neuen Synchronisationsserver, den ich noch testen muss.