Meine Implementierung einer Aufgabenverwaltung im Emacs Org-mode

Letzte Aktualisierung: 12. August 2017

Den Emacs Org-mode verwende ich bereits seit 2005. Im Folgenden habe ich den Aufbau meiner Org-Dateien sowie meine täglichen Workflows dokumentiert. Die Konfiguration meines Emacs, der die beschriebenen Workflows ermöglicht, ist in meiner kommentierten Emacs-Konfiguration zu finden.

Hinweis

In diesem Text beschreibe ich meine spezifische Nutzung des Emacs Org-mode. Er setzt beim Leser voraus, dass er bereits mit dem Emacs und dem Org-mode vertraut ist. Für Einsteiger in die Welt des Emacs haben ich den Text Tutorial: Aufgaben- und Notizverwaltung im GNU Emacs geschrieben.

In den ersten Jahren der Nutzung hat sich meine Arbeitsweise mit dem Org-mode noch recht häufig geändert; ich musste erst einmal den für mich passenden Weg finden. Zudem habe ich meine Konfiguration nach Überwindung der Versuchung, alle tollen Features zu implementieren, mit der Zeit immer weiter vereinfacht; es sollte nur das implementiert werden, was ich unbedingt benötige. Nicht mehr, nicht weniger. Praktizierter Minimalismus. Mittlerweile habe ich einen stabilen Stand erreicht. Die im Folgenden beschreibene Konfiguration setze ich in dieser Form nun seit mehr als fünf Jahren bei der täglichen Arbeit ein; es ist mein „Trusted System“.

1 Struktur meiner Org-Dateien

1.1 Eine zentrale tasks.org

Das zentrale Element ist bei mir eine Datei mit dem Namen tasks.org. Hier trage ich das meiste ein, was ich zu erledigen habe; sowohl berufliche als auch private Dinge. Vor allem zu umfangreicheren Projekten führe ich daneben Notizen in einzelnen Org-Dateien, die mit der Emacs-Erweiterung Deft verwaltet werden. Innerhalb dieser Notizen werden die dem jeweiligen Projekt zuzuordnenden Aufgaben notiert und in die Org Agenda einbezogen. Dies ist – wie schon erwähnt – eine der großen Stärken des Org-mode. Eine Datei notes.org verwende ich hingegen nicht (mehr).

Es hat sich nicht bewährt, für berufliche und private Dinge zwei unterschiedliche Dateien zu verwenden. Insbesondere müsste ich dann auch eine allgemeine, gesonderte inbox.org verwenden. Bei einer gesonderten inbox.org habe ich jedoch nie daran gedacht, diese zu leeren – zumal das Verschieben von Tasks trotz der refile-Funktion des Org-mode nicht trivial ist. Besser scheint es mir, Capture-Einträge unter der letzten Überschrift „Inbox“ der zentralen Datei tasks.org zu sammeln. Oben sollte die Inbox deshalb nicht stehen, da die Capture-Funktion ggf. Zeilenumbrüche einfügt. Unten in der Datei ist dies nicht weiter schlimm; oben nervt es.

Kontextlisten scheinen mir – zumindest in meinem Fall – wenig Sinn zu machen. Weder Markierungen wie home oder besorgung, noch computer oder telefon scheinen mir hilfreich und die Arbeit, diese immer zu vergeben, zu rechtfertigen.

Als Tags nutze ich daher neben den Mandantennamen lediglich someday und flagged. Ein mit someday getaggter Eintrag erscheint nur auf ausdrücklichen Wunsch in der Agenda (Befehl s). Der Agenda-Befehl f zeigt alle mit flagged makierten Einträge. Wann ich diese Tags vergebe, ist unten im Workflow beschrieben.

1.2 Archiv tasks.org_archive

Im Archiv herrscht die gleiche Struktur wie in der Datei tasks.org. Die Archivdatei muss nicht manuell gepflegt werden. Einträge aus der Datei tasks.org werden mit dem Befehl C-c C-x C-s in das Archiv verschoben.

2 Workflow

Nun möchte ich kurz in der Übersicht darstellen, wie mein Workflow konkret aussieht.

2.1 Morgens: eintragen und organisieren

Jeden Morgen sehe ich die Eingangskörbe (phyische und E-Mail) durch und trage neu eingetroffene Aufgaben in das System ein, lege sie also zumindest in der Inbox ab.

An den folgenden Stellen treffen bei mir neue Aufgaben ein:

  • Berufliche und private E-Mail
  • Beruflicher und privater Eingangskorb auf Schreibtisch
  • Postkasten
  • Sektion „Inbox“ in der Datei tasks.org, in der Aufgaben per org-capture gesammelt wurden.

Aufgaben, die in diesen Eingangsorten angekommen sind, trage ich in die Datei tasks.org oder meinen Notiz-Dateien an der entsprechenden Stelle ein, sofern ich sie nicht innerhalb kürzester Zeit erledigen kann – und dazu auch gerade Zeit habe.

Ich versehe die Aufgaben mit den folgenden Stadien.

  • Standardstadien für Aufgaben
    • TODO
    • STARTED
    • WAITING
    • DELEGATED
    • CANCELED
    • DONE
  • APPT (Termin)
  • PROJ (Projekte, also Einträge, die Unterpunkte haben)
  • ZKTO (Zeitkonto, keine Aufgabe, aber etwas wie „Allg. Verwaltung“)

Aufgaben, die irgendwann mal erledigt werden sollen, die aber derzeit nicht sonderlich wichtig sind, tagge ich mit someday. Diese Aufgaben werden dann aus der Agenda ausgeschlossen und nur auf ausdrücklichen Wunsch mit einer benutzerdefinierten Agenda-Ansicht angezeigt.

Der Org-mode ermöglicht die verschiedensten Zeitangaben in Aufgabendefinitionen:

  • SCHEDULED: Aufgaben, die ab einem bestimmten Tag erledigt werden sollen. Der Eintrag wird an dem entsprechenden Tag in der Daily Agenda und auch an allen folgenden Tagen angezeigt, bis der Eintrag als DONE markiert wird. Der SCHEDULED-Eintrag ist also dann zu verwenden, wenn man an einem bestimmten Tag mit der Arbeit an einer Aufgabe beginnen möchte.
    * TODO Gutachten schreiben
      SCHEDULED: <2011-12-18 Sun>
    
  • DEADLINE: Aufgaben, die an einem bestimmten Tag fertig gestellt werden müssen. Muss man an einem bestimmten Tag mit der Arbeit an einer Aufgabe fertig sein, so verwendet man den DEADLINE-Eintrag.
    * TODO Gutachten fertig stellen
      DEADLINE: <2011-12-18 Sun>
    
  • Termine: Plain Timestamp (C-c .). Der Eintrag wird nur an dem jeweiligen Tag in der Daily Agenda angezeigt. Dieser Typ sollte daher für Termine Verwendung finden. Denn diese sind nur an dem jeweiligen Tag interessant; das Fortschreiben des Eintrags auf die folgenden Tage bis er als DONE markiert wird, wie SCHEDULED, macht hier keinen Sinn.
    * APPT Besprechung mit Stefan
      <2011-12-18 Sun>
    
  • INACTIVE: Aufgaben, die erst ab einem bestimmten Tag erledigt werden können. Inactive Timestamps (C-c !) erkennt man an eckigen statt spitzen Klammern. Diese Zeitangaben haben in der Grundeinstellung des Org-mode keine unmittelbare Auswirkung auf die Anzeige in der Daily Agenda. Man kann aber nach den Einträgen mit der Agenda suchen und sie somit in Custom Agenda Views verwenden.
    * TODO DVD kaufen
      AVAILABLE: [2011-12-18 Sun]
    
    TODO Agenda View: Start Dates implementieren

    Diese Kategorie habe ich noch nicht implementiert. Es muss noch eine entsprechende Ansicht generiert werden, die nicht verfügbare Aufgaben von der Agenda ausschließt.

Schließlich sichte ich die anstehenden Aufgaben und Termine:

  • Mit a in der Agenda bekomme ich eine Wochen- bzw. Tagesübersicht (Umschalten mit d für „day“ und w für „week“), in der Termine und Deadlines aufgeführt sind. Mit dieser Liste fange ich an, da hier die wichtigsten, nämlich ausdrücklich terminierten, Einträge sichtbar sind.
  • Anschließend rufe ich mir alle TODOs in der Agenda mit t auf. Die Liste beginnt bei mir mit den Mandantenaufträgen, dann kommen interne Dinge und am Ende Privates und weiteres. Aufgaben, die ich alsbald erledigen möchte, werden mit dem Tag flagged versehen. Hinweis: Vor Einführung des Tags flagged habe ich solche Aufgaben auf den aktuellen Tag „geschedult“. Die Verwendung eines Tags hat den Vorteil, dass ich Aufgaben, die mehere Tage in der Agenda erscheinen sollen, nicht jeden Tag neu „schedulen“ muss.

2.2 Tagsüber: Dinge erledigen, Zeiten aufzeichnen und neue Aufgaben erfassen

Während des Tages arbeite ich bestehende Aufgaben ab, buche Zeiten auf diese Aufgaben und erfasse neue Aufgaben, die sich ergeben.

2.2.1 Finden von zu erledigenden Aufgaben und Terminen

Für den aktuellen Tag anstehende Aufgaben habe ich spätestens am Morgen mit dem Tag flagged versehen. Durch den Aufruf von f in der Agenda werden mir alle diese Einträge angezeigt. Zudem werden „geschedulte“ Aufgaben angezeigt. Mit dieser Liste kann also den Tag über gearbeitet werden.

2.2.2 Zeiten erfassen

Der Org-mode eignet sich hervorragend zur Erfassung der Zeiten, die man auf seine Aufgaben verwendet hat.

Zeiten zu bereits konkret formulierten Aufgaben erfassen

Wird eine Aufgabe in der Agenda angezeigt und ist sie für den Zeitnachweis ausreichend konkret formuliert, kann ich einfach mit I („in“) die Uhr starten und mit O („out“) wieder anhalten.

Zeiten zu nicht bestehenden oder nicht ausreichend konkret formulierten Aufgaben erfassen

Beginne ich eine Tätgikeit, für die noch keine Aufgabe definiert ist, erstelle ich einen neuen Zeiteintrag mit Hilfe der Capture-Funktion. Mit C-c c z kreiere ich einen neuen Zeiteintrag. Sobald der Capture-Buffer erscheint, wird eine aktuell laufende Uhr gestoppt und eine neue gestartet. Wenn der Zeiteintrag mit C-c C-c abgeschlossen wird, wird er in meine tasks.org in die Inbox gelegt. So habe ich die Möglichkeit, den Zeiteintrag später einem Projekt zuzuordnen. Anschließend wird automatisch eine eventuell vorher laufende Uhr wieder gestartet.

Zeiten auf Sammelkonten erfassen

Teilweise ist zwar klar, auf welches Zeitkonto ein Eintrag zu buchen ist, ich benötige aber stets eine nähere Bezeichnung der geleisteten Arbeit. Dies ist zum Beispiel der Fall bei Dingen, die ich auf „Allgemeine Verwaltung“ buche. In diesem Fall ist es unnötig kompliziert für die Tätigkeit per Capture-Template einen neuen Eintrag in der Inbox zu erfassen, der ja später an eine sinnvolle Stelle in meiner tasks.org verschoben werden müsste. Für diese Fälle habe ich verschiedene Zeitkonten vorbereitet, auf denen ich laufend die entsprechenden Zeiten erfassen kann. Diese Einträge sind allerdings so konfiguriert, dass der Org mode beim „Ausclocken“ eine Notiz abfragt. Im meinem Zeitreport in der Agenda sehe ich dann zwar nur, dass ein Zeitraum X auf z.B. das Konto „Allgemeine Verwaltung“ gebucht wurde; wenn ich aber dem Link auf diesem Eintrag in meine tasks.org folge, finde ich dort die Notiz, die beschreibt, was ich konkret getan habe.

2.2.3 Erfassen neuer Aufgaben und Termine

Während des Tages können neue Aufgaben mit der Capture-Funktion (C-c c) erfasst werden. Die Einträge werden dann automatisch in der Datei tasks.org unter der Überschrift „Inbox“ gespeichert. Einträge unter „Inbox“ sollten spätestens am nächsten Morgen an die korrekte Stelle verschoben werden.

Wenn ich nicht am Rechner sitze, erfasse ich neue Aufgaben häufig mit dem iPhone und trage sie in meine Org-Datei ein.

2.3 Abends: Zeiten in das Kanzleimanagementsystem übertragen

Jeden Abend übertrage ich die im Org-mode aufgezeichneten Zeiten in das Zeiterfassungssystem meines Arbeitgebers. Ich verwende hierzu die einfache Daily Agenda, die unten auch die für den jeweiligen Tag aufgezeichneten Zeiten ausweist.

2.4 Wöchentlich: „Weekly Review“

Die folgenden Schritte führe ich regelmäßig am Montag Morgen im Rahmen eines Weekly Review durch.

  • Pflege der Datei tasks.org
  • Erledigte Aufgaben bzw. Projekte archivieren. Die Archivierung erfolgt in der Datei tasks.org_archive. Der Befehl dazu lautet C-c C-x C-s.
  • Achtsame Durchsicht aller Aufgaben und Termine
  • Durchsicht der mit someday getaggten Aufgaben (C-c a g s)
TODO Review Cycles implementieren   someday

Zukunftsmusik: Die Weekly-Review möchte ich gerne optimieren. Von Omnifocus kenne ich die Möglichkeit, Review Cycles für die verschiedenen Aufgaben vorzusehen. Dann gibt es eine spezielle Ansicht, in der alle Aufgaben angezeigt werden, deren Review „due“ ist. Dies ist im Org-mode noch nicht implementiert. Ich habe es mir als Aufgabe mit dem Tag someday notiert.

3 Konfiguration

Meine gesamte Emacs-Konfiguration kann auf dieser Internetseite eingesehen werden. Daher verzichte ich an dieser Stelle darauf, meine Konfiguration des Org-mode wiederzugeben. Schauen Sie einfach in meine kommentierte Emacs-Konfiguration unter der Überschrift „Org-mode“.