Zettelkasten Github TUI - ZKVR Project
zkvr project
I developed the zkvr project in 2022 after learning about zettelkasten. I developed it using bash and awk scripts and other open source TUI (Text User Interface) tools available. I watched rwxrob’s youtube for inspiration for the structure of the project. I took the ideas and ran with them, creating an fzf menu-driven workflow script for maintaining a graph database of markdown files. I even created a simple but powerful graph query language for it that can be used to find a path of document nodes connected to other nodes, filtering by tags.
design
Every card in the zettelkasten is a directory containing a README.md
file.
Links between the markdown pages connect the directories together.
The idea is that you can browse around the markdown within the terminal in a text-user-interface interface somewhat like a browser (back button, can spawn new tabs if tmux is running, etc.)
You can copy text from snippets or inline code segments within the document directly to the tmux buffer because copying and pasting is probably the most important part of the workflow of taking notes.
It is constructed of simple linux scripts because I don’t want to depend on a platform or technology forever because platforms and especially libraries don’t last forever.
The main skeleton of the script was constructed using bash and awk scripts and by running the fzf
fuzzy finder program in new and interesting ways.
The component text user interface programs that combine to form the zkvr workflow are:
fzf
Fzf is a go program that is intended as fuzzy searching file finder, but can be used for scripting many workflow optimizations. It is very useful for scripting things that require user interaction.
- fzf is useful for menus or hotkeys to select things from a list
- it can choose files from within scripts
- the preview menu can turn scripts into TUI command processors
assorted findings about implementing zettelkasten
- zkvr is a low-overhead graph database written in Bash and Awk.
- Copying a subset of zet directories mirrors copying a vertex-induced subgraph.
- Git tracks file changes, useful for monitoring changes from enrichment processes.
- Zettelkasten allows creating new spaces for new ideas.
- Issue tracking is possible through links within cards.
- Links add context to content, some should be one-way.
- Lines of text move organically across links during project development.
- Creating a zettelkasten from existing markdown documents needs more links.
- Sequential numbering based on timestamps provides order.
- Structure allows quick navigation between notes with a couple links.
- Tags and concept hubs are similar but serve different purposes.
- Graph query language included.