Skip to content
forked from Trevoke/org-gtd.el

A package for using GTD with org-mode

License

Notifications You must be signed in to change notification settings

jun0/org-gtd.el

Repository files navigation

org-gtd

Summary

This package tries to replicate as closely as possible the GTD workflow (see diagram below).

This package, and this readme, assume familiarity with GTD. There are many resources out there to learn how to use the framework. If you are new to GTD, this package may be unpleasant to use.

This package provides a system that allows you to capture incoming things into an inbox, then process the inbox and categorize each item based on the GTD categories. It leverages org-agenda to show today’s items as well as the NEXT items. It also has a simple project management system, which currently assumes all tasks in a project are sequential.

                                    ┌───────┐
                                    │"STUFF"│
                                    └──┬────┘
                                       │
                                    ┌──▼────┐
                                    │IN BOX │
                                    └──┬────┘
                                       │                Eliminate    ┌─────────┐
                                       │              ┌─────────────►│  Trash  │
                                   ┌───▼────────┐     │              └─────────┘
                                   │ What is it?│     │
                                   └───┬────────┘     │ Incubate     ┌─────────┐
                                       │              │              │ Someday/│
                                       │              ├─────────────►│ Maybe   │
┌──────────┐  YES (Multi-Step)    ┌────▼────────┐ NO  │              └─────────┘
│ Projects │◄─────────────────────┤   Is it     ├─────┤ File
└─┬────▲───┤                      │ Actionable? │     │              ┌─────────┐
  │    │   └────────────────────┐ └──────┬──────┘     └─────────────►│Reference│
  │    │      Review for Actions│        │                           └─────────┘
┌─▼────┴───┐                    │        │YES
│ Planning │                    └───────►│
└──────────┘                             │
                                  ┌──────▼─────┐     Less than
                  Delegate        │ What's the │     2 minutes     ┌────────┐
                     ┌────────────┤Next Action?├──────────────────►│ DO IT  │
                     │            └───────┬────┘                   └────────┘
                     │                    │
                     │                    │  FOR ME
                     │                    │           Specific Date or Time
                     │                    ├────────────────────────────┐
                     │              ASAP  │                            │
                ┌────▼─────┐           ┌──▼───────┐              ┌─────▼────┐
                │          │           │          │              │          │
                │          │           │          │              │          │
                │          │           │          │              │          │
                │          │           │          │              │          │
                │          │           │          │              │          │
                └──────────┘           └──────────┘              └──────────┘
                 Waiting For           Next Actions                 Calendar

Updating org-gtd

Please read the CHANGELOG.

2.0.0 <- 1.1.x

  • rename CANCELED to CNCL

Installing

This package requires emacs 27.1 or higher.

MELPA, MELPA stable

This package is on MELPA and MELPA stable under the name org-gtd.

use-package

Just make sure this is loaded after org-mode like so.

(use-package org-gtd
  :after org
  :demand t)

Manually

Check out the source code for dependencies and install them. Then, clone this repo to ~/.emacs.d/packages Finally, add this to your config:

(add-to-list 'load-path "~/.emacs.d/packages")
(require 'org-gtd)

Configuring

configuration options for org-gtd

The best way to find out about the configuration options for org-gtd is to see the customize group: M-x customize-group RET org-gtd.

required configuration of sub-packages

org-edna

package: https://www.nongnu.org/org-edna-el/

REQUIRED: automatically change next TODO to NEXT in a project when you’ve finished the current task.

(setq org-edna-use-inheritance t)
(org-edna-mode 1)

Commands

Here are the commands org-gtd provides for you.

namedescription
org-gtd-captureadd an item to the inbox
org-gtd-process-inboxprocess all items in inbox
org-gtd-clarify-finalizefinish processing an item
org-gtd-show-all-nextshow all actions marked NEXT
org-gtd-show-stuck-projectsshow projects without a NEXT action
org-gtd-cancel-projectcancel project from project headline
org-gtd-agenda-cancel-projectcancel project from agenda view
org-gtd-archive-completed-itemsmove complete/canceled items to archive file
org-gtd-inbox-pathfull path to org-gtd inbox file (not interactive)

Here’s what Ι have bound, for instance. (this is using the use-package API).

(("C-c d c" . org-gtd-capture)
 ("C-c d a" . org-agenda-list)
 ("C-c d p" . org-gtd-process-inbox)
 ("C-c d n" . org-gtd-show-all-next)
 ("C-c d s" . org-gtd-show-stuck-projects))

;; this is used in a very specific minor mode, so you can have a pretty common keybinding.
:bind (:map org-gtd-command-map
              ("C-c c" . org-gtd-clarify-finalize))

Using

Regular use

I will assume you have used the suggested keybindings above.

GTD uses one basic axiom: everything that comes your way goes into the inbox. You do this with C-c d c. You also have to regularly process the inbox, which you do with C-c d p.

You have a number of possible choices for each item you process, which I will quickly go over. When you process the inbox, you will see each inbox item, one at a time, with an interface letting you decide what to do with the item (shown below with C-h for extra information):

doc/processing-menu.png

Quick Action
You’ve taken care of this action just now. Choose this to mark the item as DONΕ and archive it.
Throw out
This is not actionable and it’s not knowledge for later. Choose this to mark the item as CNCL and archive it.
Project
This is a multi-step action. I’ll describe how to handle these below.
Calendar
This is a single item to be done at a given date or time. You’ll be presented with org-mode’s date picker, then it’ll refile the item. You’ll find this in the agenda later.
Delegate
Let someone else do this. Write the name of the person doing it, and choose a time to check up on that item.
Single action
This is a one-off to be done when possible. You can add tags to help you.
Reference
This is knowledge to be stored away. I’ll describe how to handle these below.
Incubate
no action now, review later

When processing each item, the following will happen:

  1. You’ll enter an editing mode where you can refine the wording, create additional sub-headlines, add your own tags and other such metadata
  2. You’ll hit a keybinding of your choice (recommended: C-c c, see config below) to confirm your work and move on to the next item
  3. when you move on to the next item, org-gtd will add keywords (NEXT, TODO, DONE, etc.) in order to handle the bookkeeping and get you set up with org-agenda and the other provided org-gtd functions.

Projects

A “project” is defined as a top-level org heading with a set of second-level org headings. When you choose “project” and enter the editing mode, create such a headline structure, like in the following example.

doc/project-processing.png

As indicated above, when you are finished creating your headline structure, hit your chosen keybinding to exit the edit mode (in the above screenshot, C-c c) and move on to processing the next item.

A project is defined as “completed” when all its tasks are marked as DONE. A project is defined as “canceled” when its last task is marked as CNCL.

You can cancel a project by calling org-gtd-agenda-cancel-project from the agenda view, when the point is on the next task of the project.

DO NOTE: it is surprisingly difficult to add a custom note when canceling, so if you want to add a note explaining why you canceled the project, you will have to do so manually.

You can archive (move to the archive file, using the org-mode feature) completed and canceled projects by using org-gtd-archive-completed-items.

Multiple files / refile targets

If you would like to add a new refile targets, it’s simple. Add a top-level heading and make sure it has the following properties drawer:

:PROPERTIES:
:TRIGGER: next-sibling todo!(NEXT)
:ORG_GTD: Projects
:END:

Agenda

Here’s what the agenda may look like when you’ve processed the inbox a bit.

doc/agenda.png

Show next actions

One of the ways to see what’s next for you to do is to see all the next actions ( C-c d n ).

doc/show-all-next.png

Troubleshooting

Projects without a NEXT item

Sometimes things break. Use C-c d s to find all projects that don’t have a NEXT item, which is to say, all projects that the package will not surface and help you finish.

About

A package for using GTD with org-mode

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Emacs Lisp 99.7%
  • Dockerfile 0.3%