+

Introduction & rationale

+ +

I’ve been absolutely loving org-roam since I started +experimenting with it. It’s a brilliant implementation of the concept of +bidirectional linking for org-mode—replacing hierarchies of notes—, however +the way it displays backlinks never really clicked for me.

+ +

Because backlinks in org-roam are only displayed in a side buffer, they are +easy to miss. The side buffer will not always be open, and even if it is, the +information it contains is visually far away from the note you’re looking at.

+ +

I was reluctant to use the daily notes as much as I would have in applications +such as Roam Research or +Logseq, in fear of content getting buried in notes that I +would not come back to.

+ +

Another issue with the side buffer implementation of backlinks in org-roam is +that it does not display the entire outline subtree of a backlink. This is I +think an essential part of the bidirectional linking feature of Roam for +surfacing content from other notes.

+ +

Enter nroam

+ +

nroam is a supplementary package for +org-roam that replaces its backlink side buffer. Instead, it displays +org-roam backlinks at the end of org-roam buffers. The user can also click a +button to see unlinked references, all in the original org-mode source buffer.

+ +

One of the ideas behind nroam is to remove the friction and effort it takes to +consult backlinks. By making them an integral part of the org buffer, backlinks +also become more powerful. You could for instance make a sparse tree—see +org-sparse-tree—to filter the contents of a note and its backlinks at the +same time.

+ +

Below is a screenshot of what nroam looks like.

+ +

Backlinks in nroam

+ +

For a comparison, here’s how backlinks are rendered in vanilla org-roam:

+ +

Backlinks in org-roam

+ +

And here are the same backlinks displayed with nroam:

+ +

Same backlinks in nroam

+ +

As you can see, the purpose is not only to display references within the notes +buffer, but also to display the entire org-mode subtree for each reference, +giving much more context to the reader.

+ +

Why extend org-roam?

+ +

Alternative Emacs packages exist, such as +gkroam, which I could have simply used, +but I decided instead to build nroam as a companion package for org-roam as I +believe we should build upon and extend the existing ecosystem of org-roam +instead of competing with it. Org-roam has gained a lot of traction recently and +does much of the heavy lifting already, so there is no need to compete with it.

+ +

Installing nroam

+ +

nroam is still quite young and is not yet available in MELPA. A recipe is +waiting for review, but in the meantime you will have to manually install the +Elisp files in your .emacs.d from the git +repository.

+ +

Once installed, simply add the following hook and you should be ready to go.

+ +
(add-hook 'org-mode-hook #'nroam-setup-maybe)
+
+ + +