org-brain
implements a variant of concept mapping in Emacs, using org-mode. It is heavily inspired by a piece of software called The Brain (but currently with a more limited feature set), you can view an introduction to that program here.
You can think of org-brain
as a combination of a wiki and a mind map, where each wiki page / mind-map node is an org-mode
file which resides in your org-brain-path
(a directory containing all your org-brain
files). These files are called entries. Entries can link to other entries, and you can then view the network of links as a mind map, using M-x org-brain-visualize
.
PINNED: Index / Python Game development / Game design / Programming books | Programming / Emacs | | | *-----------------*-----------------* | V Game programming Game Maker Unity ----------------------------------------------- - https://en.wikipedia.org/wiki/Game_programming /* Gamasutra Articles - Passing Through Ghosts in Pac-Man - In-House Engine Development: Technical Tips /* Brainchildren
Above is a visualization of the game programming entry (as can be seen in the middle). Above the entry title we can see that the entry has two parents (other entries which link to game programming): programming and game development. You can also see the siblings and which parent they come from: python, programming books, emacs, and game design. Below the entry title we can see the children of the entry: Game Maker and Unity. At the very top you’ll find pinned entries (entries which will be shown independent of the visualized entry).
At the bottom the entry’s table of contents (headlines in the buffer) is shown: Gamasutra Articles and Brainchildren. You can also see the resources of the entry: the two Gamasutra articles and the Wikipedia link. Resources can be org-mode
links in the entry file, or org attachments.
The parents, children, siblings, headlines and resources are all links; they can be pressed to visualize other entries, visit resources etc.
The easiest way is to get org-brain
from MELPA. If you do not want to do that, here’s the steps to install it manually:
org-brain
requires Emacs 25, org-mode 9 and dash. These need to be part of your Emacs.- Download
org-brain.el
, add it to your load-path, and put(require 'org-brain)
in your init-file. - Configure
org-brain-path
(defaults to/brain
in yourorg-directory
) to a directory where you want to put yourorg-brain
files.
You can use M-x org-brain-open
to open an entry (or create a new one) in your org-brain
for editing. In order to link to other entries, use an org-mode
link with brain:
type, its easiest to use C-c C-l brain: TAB
or M-x org-brain-insert-link
. If you want to pin an entry, add a line #+BRAIN_PIN:
in the entry file.
M-x org-brain-agenda
can be used to run org-agenda
on your org-brain
files. You might also want to rename one of your entries; use M-x org-brain-rename-entry
to do this. This will only change the filename and entry name, not the #+TITLE
of the entry.
You can use M-x org-brain-visualize
to choose an entry which will be visualized. While in org-brain-visualize-mode
you can easily navigate your org-brain
, add children/parents etc, using the following keybindings:
j / TAB | Goto next link |
k / S-TAB | Goto previous link |
c | Add child |
p | Add parent |
l | Add resource link |
C-y | Paste resource link |
a | Add resource attachment |
o | Open and edit the visualized entry |
f | Find/visit another entry to visualize |
r | Rename this, or another, entry |
When adding children or parents using org-brain-visualize
, you can add multiple entries by using org-brain-batch-separator
, ;
by default, to separate the entries. For instance pressing c
and then guitar; mandolin;banjo
would add guitar
, mandolin
and banjo
as children. Currently it isn’t possible to use completion when batch entering children/parents, so it is best used for adding non-existing entries.
If you add children to a file with org-brain-visualize
, the links to the child entries will be added under the first headline in the file with the brainchildren
tag. If this headline doesn’t exist, a headline named Brainchildren will be created and will be given the tag. If you want another default name for these headlines, you can customize org-brain-children-headline-default-name
.
If you add resources via org-brain-visualize
they will be entered inserted under the current heading in the visualize buffer (link resource will be added as list items at the top of the heading in the entry file). If you’re not under a heading in the visualize buffer, the resources will be added to Brainchildren, as in the case with adding new children.
There’s some missing functionality in org-brain
, which could be useful, especially regarding finding text etc. However, there are many other packages for org-mode
which might implement some of the features you seek. Below are some suggestions (feel free to create an issue or send a pull request if you have more examples).
An Emacs mode for quickly browsing, filtering, and editing directories of plain text notes, inspired by Notational Velocity.
You can add the function below to your init-file.
(defun org-brain-deft ()
"Use `deft' for files in `org-brain-path'."
(interactive)
(let ((deft-directory org-brain-path)
(deft-recursive t)
(deft-extensions '("org")))
(deft)))
It searches both headings and contents of entries in Org buffers, and it displays entries that match all search terms, whether the terms appear in the heading, the contents, or both.
You can add the function below to your init-file.
(defun helm-org-rifle-brain ()
"Rifle files in `org-brain-path'."
(interactive)
(helm-org-rifle-directories (list org-brain-path)))
org-board is a bookmarking and web archival system for Emacs Org mode, building on ideas from Pinboard. It archives your bookmarks so that you can access them even when you’re not online, or when the site hosting them goes down.
org-brain
is a new package, and it may have speed issues if the number of org-mode entries get high (I haven’t tried it with thousands of entries).