To install Zettl, you will need the Rust toolchain installed. You can install Rust using rustup. Once you have Rust installed, clone the repository and install the binary using cargo.
$ git clone https://github.com/hedonhermdev/zettl $ cargo install --path zettl
You will need to create a directory to store your notes. You can tell zettl to use this directory by setting the
$ZETTL_DIRECTORY variable. Note that zettl will use this directory for all operations so you will probably have to set this variable in your
.bashrc (or your
$ mkdir ~/kasten $ echo "ZETTL_DIRECTORY=~/kasten" >> .bashrc
Initializing zettl creates a
.zettl directory in your base directory.
$ zettl init
You can change config options by setting values in the config file.
$ vim $ZETTL_DIRECTORY/.zettl/config.yml
Currently, zettl supports the following options:
--- name: My Zettelkasten author: Me editor_cmd: vim editor_args:  indexes: true graph: true
An example, customised config will look like this:
--- name: My Zettelkasten author: Tirth Jain editor_cmd: nvim editor_args: - "+Goyo" - "+Limelight" indexes: true graph: true
Once Zettl is initialized, you can use it to write notes from anywhere.
# Create a new fleeting note. These are like daily notes. $ zettl fleet # Create a new note. This will be created in notes/some-idea.md. $ zettl note some-idea # Create a new note in a category. This will be created in notes/project1/some-idea.md. $ zettl note project1/some-idea
These commands will open a markdown file in the editor you specified.
Graphs and Indexes
_index.md files in each directory to index your notes. You can turn this off by setting the following in the config directory.
fleets/_index.md file will look kind of like this:
--- title: Fleets Index author: Tirth Jain created: "2021-04-29 11:16:25" --- # Fleets Index - [[fleets/2021-04-28]] - [[fleets/2021-04-29]]
Similarly, Zettl creates a
.graph.json file to track connections between your notes. You can visualize this graph with a visualizer of your choice. I prefer 3d-force-graph. Note that connections are made using the [[mediawiki]] link format.
To turn off this graph generation:
To manually create the graph and the indexes, you can run:
$ zettl graph $ zettl index
How Your Notes are Saved
Zettl saves your notes as markdown files. After a few days of using zettl, your zettl directory will look something like this:
/Users/hedonhermdev/kasten ├── _index.md ├── fleets │ ├── 2021-04-28.md │ ├── 2021-04-29.md │ └── _index.md └── notes ├── SDNs │ ├── _index.md │ └── p4-notes.md ├── _index.md ├── devops │ ├── _index.md │ ├── git-server-setup.md │ └── homegrown-autodeployment.md ├── git │ ├── _index.md │ ├── cli.md │ ├── error-handling.md │ ├── git-in-rust.md │ ├── implementation.md │ └── internal-objects.md ├── how-to-zettel.md ├── vim │ ├── _index.md │ ├── autocmds.md │ └── vimrc-for-servers.md ├── workflow.md ├── zettl │ ├── _index.md │ ├── philosophy.md │ └── roadmap.md
While zettl doesnt have a programmatic way to support integrations (yet!) but here are some integrations I can think of:
- Version control with git
$ cd $ZETTL_DIRECTORY $ git init $ git add . $ git commit -m "Saving notes"
$ ln -s $ZETTL_DIRECTORY path/to/hugo/content $ hugo serve