settle

settle is a CLI tool that helps you manage your digital Zettelkasten.

First, a little bit of history. I learned about the Zettelkasten method back in the summer of 2021. I looked at a few programs for it, and I settled on Obsidian MD. But I didn't like the experience: I was an avid Vim user, and the vim compatibility mode wasn't usable in the least. I had alreay written quite a few notes, and I didn't want to change them to make the links and tags work with other programs.

So there, in early August, I had the idea of writing a CLI program that I could easily use with vim (or any editor, for that matter), and at the same time use Obsidian-style links and tags. In the meantime, I've read Sonke Ahrens's How to take smart notes and have added many features to settle. Personally, I'm content.

There are several core principles in the design:

Getting started

Requirements

Installation

There's a crate on crates.io, so you can simply run:

cargo install settle

Usage

For the commands, options, configuration, and setting up autocompletion, read the manual

The note-taking system

settle just stores and manages a database of Zettel metadata. A simple record of the note's title, the project it's in, what other notes it links to, and what tags it has. That's all.

There are two important things to remember when writing:

settle wasn't designed to work with any editor in particular. Which means that you can use it practically everywhere! I wrote settle.vim since I'm a (neo)vim user myself. Who knows? If I ever switch editors, I may write another.

Although plugins aren't necessary, they make things easier, by automating some functions, such as telling settle to update a note's metadata.

Roadmap

Before 2023

After/During 2023

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT