Go to file
vilmibm 2503fba46f implement viewport 2023-06-14 15:13:58 -07:00
.gitignore sundry 2023-06-11 18:57:50 -04:00
README.md line 2023-06-12 08:37:25 -07:00
go.mod sundry 2023-06-11 18:57:50 -04:00
go.sum sundry 2023-06-11 18:57:50 -04:00
main.go implement viewport 2023-06-14 15:13:58 -07:00


mind mapping has been useful to me for years now but i've been displeased with all the virtual tooling for it. i don't entirely mind doing them on pen and paper but routinely reach for them when at the computer and it feels like a phantom limb to not have software for it.

i don't like how tablet/mouse oriented what i've found is...or how expensive. i also prefer text mode stuff in general bc i can focus on it better.

but i have mostly been unable to imagine a good interface design for text mode mind mapping.

what about a modal approach with a tiny command line?

the verbs in mind mapping are:

  • new node
  • find node
  • new edge
  • edit node
  • pan around

from normal mode:

  • i to create top level note in the current field
  • / to search for a node in current field
    • select from fzf style list
  • ? to search for nodes in all fields
  • hjkl to pan around
  • HJKL to big pan around
  • c to connect to existing node (fzf search again)
  • + to zoom in, bigger boxes + less truncation
  • - to zoom out. zooming out is smaller boxes + truncated text
  • N to create a new field
  • pgdn to cycle fields L->R
  • pgup to cycle fields R->L

from focused node mode:

  • escape to go to normal mode
  • i to create new node edged from this node
  • e to edit node (subwindow with $EDITOR embedded)
  • m to maximize node contents
  • hjkl to navigate the edges
  • d to delete node
  • enter to activate highlighted edge and go to connected node

the big open question to me is placement. i want to auto suggest a place for new nodes (top level or not) but then leter user move around. i think it's best to just allow overlapping? i could program finding a place but it seems like too much effort.

as for storage, i think anything short of sqlite would lead to a lot more complexity and work.

future directions:

  • extracting hierchical lists from a root node
  • convert to set of markdown file
  • auto sorting of nodes to fill space