Arranging notes on a canvas

I would like to lay out and (re)arrange my notes on an infinite canvas, similar to laying out a bunch of index cards on a table. Physically arranging and re-arranging ideas/notes is a good way to develop a sense of associations between ideas.

I imagine assigning an org-entry to a canvas in the PROPERTY drawer. Once assigned, this entry shows up on a graphical view of the canvas (e.g., similar to how org-protocol and org-roam-server currently show a directed graph). The graphical interface would allow notes to be moved around. The xy-position of each node is recorded back into the PROPERTY drawer of the org-entry, preserving the graphical layout of notes for further editing and ideation.

An entry could be assigned to different canvases. In each canvas, an entry would have a X,Y positional value. If/when two notes are assigned to the same canvas and happen to have org-ID links between them, those links could be drawn with a connector on the canvas (with a toggle to turn on/off display of links).

It feels to me like org-roam-server and org-roam-protocol could be reshaped toward this type of graphical interaction with notes.

I understand this is non-trivial, but I wanted to express the idea and see how people feel about it. I am curious to see if others have found an urge to lay out notes in this way. Also, are there packages out there that could address this idea?

EDIT: Scapple is a rudimentary example of a canvas. A far more advanced version is Tinderbox. In the initial version of org-roam-canvas, we might imagine each entry/header is represented by a circular node, with a hover-to-preview feature (as in org-roam-server). In later versions, one could get to a point where each node could have a shape that is resizable, shows a small snippet of body text, and so on. Even more advanced features (as in Tinderbox) could include drawing links from one note to another on the canvas and have that recorded back into the entry in the org file.


Is this going in the same direction?

:wink: and the next version of freeplane will support markdown… a way to edit in mindmappind with an addon :star_struck:

Thanks. I hadn’t seen this before. Is freeplane integrated with org-roam or org-mode? It seems to be a stand-alone application for writing and working with notes. Of course, that’s great. But I was thinking of a graphical canvas layer that works directly with org-roam notes.

No, there is no particular interaction between these two applications. Not with the ones you mentioned before either. I think they are two different principles:

  1. Freeplane allows mindmapping, i.e. a way to organize your ideas in a hierarchical way. A node always has a parent. It’s a bit like a plan but in a graphic version (which is very useful).
  2. Org-roam or Scapple would have closer characteristics because it is about making non-hierarchical connections between autonomous elements (“atomic” those who come from physics would say). The problem in this case is anyway that Scapple is a proprietary software and does not run on Linux. I don’t think there will ever be an integration between those softwares.

If you want to play with the notes as a graph without changing the links between them I think org-roam-server does (a bit) that.
If you want to play with the notes to nest them and make them take a hierarchical form, Freeplane can be useful.

Thanks. An essential feature of the ‘canvas’ is its non-hierarchical nature. Tinderbox, in my opinion, does a masterful job of this. But for many reasons, I prefer org.

This would be a really cool thing: as you say “Physically arranging and re-arranging ideas/notes is a good way to develop a sense of associations between ideas.” (In my case, when reviewing the graph from org-roam-server, I often edit some of the notes to add links that I realize are missing, or notice as possible connections).

Many years ago I tried several concept mapping programs, including Cmap ( and VUE ( I ended up using VUE for a while.
VUE is open source, and it allows users to attach files to the nodes (01 Linking to Content - VUE User Guide - Confluence) —I used it to attach text and pdfs. It also has several additional sophisticated capabilities, some of which seem to be not unlike some of those of Tinderbox. As with Freeplane (or Tinderbox), though, there is no particular interaction between VUE and org.

Interestingly, however, VUE has been integrated with Zotero (21 Zotero Integration - VUE User Guide - Confluence) where it allows to display Zotero’s collections and notes (I did not use this functionality). No idea if any of it could be of use for what you suggest.

1 Like

This comment from @rdiaz02 reminds me of something I would like to be able to do but don’t know how to do in org-roam yet. I would like to be able to go to a node, generate a graph going out n links (where n would typically be 1, 2, or 3), and then display the complement of the graph that’s generated. I would like to be able to do this to easily notice nodes that I would have thought were much closer to the origin node than they apparently are based on their being in the complement graph.

Anyone have any idea how I might rig that up?

Thanks for all these discussion, i found a lot of tool that permit canvas + zettelkasten (like canvas for obsidian but nothing already implemented in org/org-roam.

Recently (see this post on mastodon SReyCoyrehourcq : « Discovering that re… » - Mastodon -- Sciences.Re ) i found that the OpenSource Decker (hypercard alternative) could be a good candidate :

Perhaps we could add spatial attribute to org-roam nodes then generate/dump an org-roam to Decker using CLI in a first approach ?

Love the retro look of Decker. Thanks for the link. I will try it.

1 Like

This weekend I published my org-roam to obsidian canvas Frankenstein, see GitHub - cpbotha/org-roam-canvas: render org-roam nodes as part of the obsidian canvas

It’s a FastAPI server that talks to org-roam via emacsclient and serves up your org-roam nodes so that they can be embedded on the Obsidian Canvas.