Simple Zettelkasten in C
0b789823 — Harley Swick 2 years ago
Add new lines to error prints
fd489690 — Harley Swick 2 years ago
Update README w/ shortcuts and link to blog post
3706cef7 — Harley Swick 2 years ago
Add shortcut arguments


browse  log 



You can also use your local clone with git send-email.


Simple Zettelkasten in C

This was mostly inspired by neuron and the Structured Zettel approach.

The reason I decided to make something different from neuron was that I felt this was simpler and more portable.

I wrote a blog post going into more detail here.


For Debian:

sudo apt install libuuid-dev

For Alpine:

apk add util-linux-dev


cd szc
meson build
ninja -C build
sudo ninja -C build install # To install on system


Make sure the $EDITOR environment variable is set. To save it between sessions add it to your .bashrc.


This will present a prompt with instructions to follow along with.

There are currently 3 types of actions:

  1. new - Create a new hub or zettel. If zettel, opens with $EDITOR.

  2. query - Query for a zettel and open it with $EDITOR.

  3. link - Query for 2 different zettels and append a LINK tag to both files. This creates a bidirectional link between both zettels.



Hubs are simply folders for zettels to be contained in. Their purpose is to form a shallow organization system for the zettels. This makes it easier to search. Hubs functionally replace the idea of tags.


A zettel is a short note saved as a markdown file with an 8 digit UUID filename. The 4 digit ID for the zettel is derived from the filename.

A newly created zettel will look something like this:

TITLE: Foobar

DATE: 2020-07-04



After a while the desired options are memorized so it is helpful to have shortcuts when the szc command is initially run.


szc query
szc link

#New Hub

szc new hub

#New Zettel

szc new zettel