nroam icon indicating copy to clipboard operation
nroam copied to clipboard

Org-roam backlinks within org-mode buffers

  • nroam [[https://github.com/NicolasPetton/nroam/actions/workflows/test.yml/badge.svg]]

Update: With the release of [[https://blog.jethro.dev/posts/org_roam_v2/][org-roam v2]] and its new revamped side-buffer, I do not feel the same need for nroam as I did with org-roam v1. The project is now archived, but if someone wants to port nroam to org-roam v2, I'd be willing to hand over maintenance of the project.


nroam is a supplementary package for [[https://github.com/org-roam/org-roam][org-roam]] that replaces the backlink side buffer of Org-roam. Instead, it displays org-roam backlinks at the end of org-roam buffers. The user can also click a button to see unlinked occurrences of the buffer title (as defined by =org-roam-unlinked-references=).

** Screenshots

*** Backlinks [[file:screenshots/backlinks.png][file:screenshots/backlinks.png]]

*** Unlinked references [[file:screenshots/unlinked-references.png][file:screenshots/unlinked-references.png]]

  • Rationale

One of the ideas behind nroam is to remove the friction and effort it takes to consult backlinks. I consider backlinks to be a very central piece of information about a note. Backlinks can even be the most important content of a note, for instance when using page links as tags.

It is easy to miss backlinks when they are not always visible with the main content of a note. 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.

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.

  • Installation

nroam is not yet available in [[https://melpa.org][MELPA]]. Until it is, you can install the Elisp files by hand in your =.emacs.d= or if you use =straight.el= add the following to you init file.

#+begin_src elisp (use-package nroam :straight '(nroam :host github :branch "master" :repo "NicolasPetton/nroam") :after org-roam :config (add-hook 'org-mode-hook #'nroam-setup-maybe)) #+end_src

  • Setup & usage

To setup nroam for all =org-mode= buffer, evaluate the following:

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

The linked references section will be updated after each buffer save. It can also be manually updated by typing =C-c C-c= anywhere in the linked references section.

  • Warning

This package is in its infancy. Be careful when using it as it modifies your =org-mode= buffers—it should not modify your files though. Backup your data often.