Drawing mindmaps from you File System with scsh and xattrs.
I like the idea of visualising concepts, while computers are notoriously non-visual by default. For my own purposes, I wanted to find a tool to visualise at least the data on my own hard drive.
Mind-mapping is one of the most famous methods of doing that, along with the tag cloud. I tried various tools for mind mapping, including xmind, and others, but found them to be too heavy.
filesystem-mindmap-scheme.chibi.scm root-dir 1> dirmap.dot circo -Tjpg dirmap.dot > dirmap-dirco.jpg feh dirmap.jpg
feh
is the viewer I use, because it works well with gigantic images.
The default size is 4A0, which is 90 by 64 inches — 5760 squared inches.
It is unlikely that you can display more than that with file names.
File name colours are taken from 8-color dircolors. man dircolors
256-color dircolors not implemented (patches welcome).
Below is the demo: a directory of a Slarm64 repository ~2020. Not every feature is shown, but you get the idea. The full png is 44Mb (the link is below the image). That is 1x2.5 meters. The original plan was to print a poster and put it on the wall.
- Chibi-scheme
- graphviz (built with -O3)
- gnu coreutils (for dircolors)
- attr
- ~snow-chibi install ‘(independentresearch xattr)’
- More heuristics (pull requests welcome).
- Formatting in xattrs.
- uuid-associations in xattrs
- Recursing into projects/maildirs in a customisable way.
- Recursing into files semantically.
- Tags and such.
- xmind
Do not use this version. It is for reference only.
Building:
All these tools are not maintained for many years, so be very wary.
Also, their installation machinery is broken.
I recommend the following work-around:
Build and package scheme48 and scsh as usual, with --prefix=/usr/local
.
This usually involves installing into DESTDIR=/tmp/package-name or something.
This way your package manager will know where the files are, and you can do
make install
right from the source directories, without littering, because badly
installed files only replace those tracked by the package manager.
I had to run make
three times, because the build system is broken.
Then patch scheme48 to use 4G of words adjust the line in c/init.c:
c/init.c:19:#define DEFAULT_HEAP_SIZE 4000000000 // 4000000L
make && make & make && sudo make install
Due to hardlinks, we need to keep all the file system structure in memory, and that is a lot of memory. (Or maybe I am just a bad programmer.)
Maybe you also need to replace ‘-h 0’ in the scsh Makefile.in with ‘-h 4000000000’? IDK.