Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

zk

release crates.io CI dependency status

A note-taking tool based on the famous Zettelkasten method with support for fuzzy searching, tags & link exploration, in Rust!

What is a Zettelkasten?

A zettelkasten, or 'slip box' is a method of note-taking famously used by the sociologist Niklas Luhmann. Notes essentially contain metadata such as tags that describe key aspects of the note or links to other notes. The goal is to enhance creativity by exploring the relationships between notes and making new connections between seemingly unrelated ideas.

Features

  • Fast fuzzy search and link exploration powered by skim
  • Works with a flat directory of markdown files
  • Minimal configuration with sensible defaults

Here is a quick demo showcasing the new, search, tag, link and explore features.

asciicast

Installation

zk should run on most systems, including Linux, MacOS, and the BSDs. Windows support is being worked on!

The easiest way to install it is by using cargo, the Rust package manager:

cargo install zk-cli

Pre-built binaries

Pre-built binaries for Linux and MacOS can be found on the releases page.

Usage

The primary way to use zk is via the provided command-line interface, for which help output is provided below:

zk-cli 0.1.0
Liam <liam@scalzulli.com>
A note-taking tool based on the famous Zettelkasten method
Usage: zk <COMMAND>
Commands:
 dir Output the Zettelkasten directory path
 explore Explore note links
 find Find notes by tag
 link Link two notes
 new Create a new note
 open Open a note
 rm Remove a note
 rmtag Remove a tag from a note
 rmlink Remove a link between two notes
 search Fuzzy search notes
 tag Add a tag to a note
 help Print this message or the help of the given subcommand(s)
Options:
 -h, --help Print help
 -V, --version Print version

Configuration

zk currently looks for a configuration file called .zk.toml using the rust-xdg crate.

If a configuration file is found it must have the following key-value pairs set (default values are shown below if no configuration file is present):

# .zk.toml
# The Zettelkasten directory path.
path = '~/.zk'
# The preferred editor of choice when opening
# and editing notes.
editor = 'vim'

Keybindings

The fuzzy finder skim supports the implementation of custom keybindings, this section documents the custom keybindings that are implemented when using various commands.

Command Keybindings
explore <C-e> - Edit the selected note
Enter - Explore the selected notes links

Prior Art

  • srid/neuron - Future-proof note-taking and publishing based on Zettelkasten
  • AndrewCopeland/zettelkasten - Creating notes with the zettelkasten note taking method and storing all notes on github
  • sirupsen/zk - Zettelkasten on the command-line πŸ“š πŸ”

About

A note-taking tool based on the famous Zettelkasten method

Topics

Resources

Contributing

Stars

104 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /