Lightweight, Org-mode flavored zettelkasten links.
org-z is an Emacs global minor mode that enables a lightweight, Org mode style zettelkasten. Unlike a traditional zettelkasten, org-z focuses on headings rather than pages, allowing you to make hyperlinks within a single Org mode document.
By treating headings, rather than pages, as first-class, we can use standard functions that ship with org like org-store-link to maximum effect.
org-z has the following features:
- Insert links to org headings with interactive search (
C-c-.
by default). Helm and Selectrum are supported. - Links are managed automatically using org-store-link and org-ids
- Links to new / missing targets auto-create targets in a configurable file location (
new.org
by default). Creation of the new heading is customizable using a capture template. - Backlinks
Install with straight.el:
(use-package org-z
:straight (org-z :type git :host github :repo "landakram/org-z")
:config
(org-z-mode 1))
org-z requires a completion backend. Helm and Selectrum are currently supported. You’ll need to load one of the completion backend packages, in addition to org-z itself:
(use-package org-z-selectrum
:straight (org-z-selectrum :type git :host github :repo "landakram/org-z"))
Loading the package sets the completion backend by appending to org-z-completion-backends
and setting org-z-completion-backend
.
I combine org-z with a daily journal, implemented as a file+datetree
capture template, and org-z’s support for backlinks.
(setq org-capture-templates
'(;; ...
("j" "Journal entry" entry (file+datetree "~/org/journal.org")
"* %?\n" :unnarrowed t)))
(use-package org
:straight org-plus-contrib
:config
(require 'org-eldoc))
(use-package org-z
:straight (org-z :type git :host github :repo "landakram/org-z")
:general
(leader-def :infix "o"
"b" 'org-z-backlinks-at-point)
:config
(org-z-mode 1))
As I go about my day, I make journal entries that link to various headings in my collection of org files. I make these links by invoking org-z-insert-link
as I write my journal entry. I periodically inspect backlinks using org-z-backlinks-at-point
to investigate connections. By enabling org-eldoc
, I get to see the # of backlinks for a given heading when I hover over it.
Every once in a while, I review my journal entries and org-refile
headings or simply re-organize journal entry knowledge into “longer-term storage” (reference.org
or projects.org
).
I was inspired by org-roam, but wanted something that fit my existing org workflow, which is a handful of files with deep headings rather than a file per topic.