taskwarrior
Bin beim “RSS-Feeds” räumen grad auf diesen Blogeintrag gestossen und hab mir gedacht, dass ich Taskwarrior auch mal anschauen werde… (ja ich weiss, ist schon älter, hab ihn immer “ungelesen” gelassen, da ich es eben genauer anschauen wollte…)
Task anlegen
Ich mach jetzt grad ein Beispiel, bei dem möglichst viele Angaben enthalten sind. Diese müssen natürlich nicht immer angegeben werden
task add "über taskwarrior schreiben" project:work +blog (+tag2) (+tag3...) due:1w priority:M depends 2,4
Das legt dem Tasl “über taskwarroir schreiben” unter dem Projekt “work” mit den tags “blog”, dem Fälligkeitsdatum in einer Woche, der Priorität Medium an. Zudem ist er abhängig vom Task mit der ID 2 + 4.
Oder einen monatlichen Task erstellen, aber nur für ein Jahr
task add Pay rent due:28th recur:monthly until:now+1yr
task add Pay the rent due:eom (End-Of-Month)
Auch ganz cool: Monatlich jeweils am 25-ten
task add Monatslohn überweisen due:25th recur:monthly
und dann andere Zahlungen abhängig machen davon
task add Krankenkasse zahlen due:eom project:private depends:113 (id vom anderen Task, das wäre hier "Monatslohn überweisen")
Ändern
Mit modify können Tasks geändert werden (man kann aber auch “edit” verwenden und via vi anpassen)
task 1 modify depends:2-4
Notizen
um eine Notiz bei einem Task hinzuzufügen:
task annotate 117 Notiz für Task 117
Dies kann man beliebig oft wiederholen. In der Auflistung wird mit der Anzahl Notizen in [] hingewiesen, bspw.:
ID Project Tags Description 117 private irgendein Task [3]
Filterung
Wenn man nur die Tasks mit gewissen Tags oder von gewissen Projekten angezeit haben möchte, kann man das einfach bei den Parametern mitgeben, z.B.:
task ghistory project:work task burndown.daily +blog task list project:private task +OVERDUE list task +WEEK list task +DUE -DUETODAY list (alle überfälligen, aber nicht die heute überfälligen)
Das ganze geht natürlich auch ohne Tags / Projekt, aber ich finde diese Optionen schon ziemlich cool…
Wenn man einen Task starten, teilt man das einfach taskwarrior mit (ich glaube, damit wird auch einfach die Priosisierung in tw aktualisiert). Zudem kann man bspw. mit “task active” checken, woran man grad arbeitet…
task 12 start
wenn er erledigt ist einfach “done” setzen…
task 12 done
Doku
Das ganze geht natürlich ins “Endlose”, also schaut man sich am Besten mal die Doku mit etlichen Beispielen und Erklärungen an (hab ja auch das meiste nur daraus kopiert…)
Suche
mit task ls /suchbegriff/ kann man recht simpel suchen
task ls /zahlen/ ID Project Tags R Description 111 private home R Krankenkasse zahlen 113 work R Monatslohn zahlen
Viele weitere Beispiele findet man in der Doku… darum geh ich auch nicht weiter darauf ein…
Integration in Mutt
Um Mails zu Tasks zu machen, erstellt man ein Keybinding. Ich habe C-a gewählt (t ist bei mir schon für’s Taggen reserviert)
#taskwarrior, add task with ctrl-a macro index,pager \Ca "<pipe-message>~/.mutt/mutt2task/mutt2task.sh<enter>"
Dass mutt2task-Script ist ziemlich simpel gestrickt:
/usr/bin/task add +email E-mail: $(grep 'Subject' $* | awk -F: '{print $2}')
Damit wird ein Task mit dem Mailsubject und dem Tag “email” erstellt.
Sync mit Bugtracker
Mit bugwarrior können Tickets aus Redmine, Github, Jira und etlichen anderen Bugtrackern synchronisiert werden. Wird dort ein Ticket geschlossen, wird dies auch beim nächsten Syncdurchgang berücksichtigt. Die Dokumentation hat zu allen Services Beispiele. Das ganze schaut dann in etwa so aus (hier mit Redmine):
[foo_redmine] service = redmine redmine.url = https://redmine.foo.bar/ redmine.key = API-KEY redmine.user_id = USER-ID redmine.project_name = work redmine.issue_limit = 100 redmine.add_tags = redmine
Somit werden Tickets mit dem Tag “redmine” zum Projekt “work” synchronisiert, auf 100 limitiert. Wird ein Ticket geschlossen, wird dies natürlich auch im Sync berücksichtigt…
Server
Verwendet man Taskwarrior auf mehreren Endgeräten, ist natürlich eine Serverinstanz gar nicht uninteressant. Auch hierzu gibt es eine Lösung: den Taskserver (unter Debian ist er als taskd paketiert).
Es gibt auch etliche Tools / Erweiterungen für Taskwarrior, bspw. Weboberflächen etc. Ziemlich cool, das ganze. Und so kann man auch Leute dazu bewegen, Taskwarrior einzusetzen, die nichts mit einem cli-Interface zu tun haben möchten…
EDIT 01.05.2018: Habe nun auch den Serverteil von taskwarrior (taskd) montiert und dokumentiert.
Übersicht
so schaut in etwa ein “task next” Output aus…
mein Fazit
also ich setze das ganze jetzt seit etwa einer Woche ein – und ich bin verdammt begeistert. Vorallem der Sync mit Redmine, einfach Hammer. Ich habe das Gefühl, dass ich meine “Tasks” wesentlich besser im Griff habe, seitdem ich taskwarrior verwende. Ich kann jedem nur empfehlen, taskwarrior mal anzuschauen. Für mich ist es generell eine sehr grosse Bereicherung, jetzt habe ich Mail (mutt), Kalender (khal), Kontakte (khard) und IM (profanity/weechat) im “TUI” (terminal user interface). Das macht mich schon sehr happy…
Eigentlich dachte ich, dass Redmine schon mehr als genug ist für mich (würde ich auch nicht meĥr weggeben), aber taskwarrior setzt noch eins drauf…
EDIT [30.01.2018]
Nach bald einem Monat mit taskwarrior bin ich immer noch voll begeistert, hab mich jedoch noch nicht dazu bewegt, eine Serverinstanz aufzusetzen (taskd).
Gerade eben kam mir noch todoman in die Quere. Es ist zwar wesentlich weniger umfangreich, was ich bei todoman aber sehr schön finde, ist die out-of-the-box Integration mit CalDAV. Das scheint bei taskwarrior leider nicht so ein Thema zu sein.
EDIT [15.03.2018]
Und immer noch bin ich voll begeistert (das CalDAV-Problem mal überschaut), aber ich habe meine Task wirklich wesentlich besser “im Griff”, seitdem ich taskwarrior einsetze..
(die Pending bleiben immer gleich, da ich via bugwarrior immer die letzten Tickets aus Redmine wieder importiere…)
1 thought on “taskwarrior”
taskwarrior http://blog.datentraeger.li/?p=916
Comments are closed.