settle 0.36.2

CLI tool for managing a digital Zettelkasten
settle-0.36.2 is not a library.

settle

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

Getting started

Requirements

  • cargo/rust toolchain
  • SQLite

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

If you prefer, there's also a groff document inside the doc/ dirctory which can be read with man. On the command line, of course.

The note-taking system

settle just stores and manages a database of Zettel metadata. That's it.

There are two important things to remember when writing:

  • wiki-style links are used to denote the actual links between Zettel. For example, a link such as [[Neurons]] would be considered as linking to a note called precisely 'Neurons'. These can appear anywhere in the file
  • every word with a hashtag prefix is treated as a tag. For example, #psychology. Subtags (hierarchical tags), such as #biology/anatomy/humans are supported, if you want to stay more organised.

Besides, how do you actually do writing, if there are no explicit commands to invoke an editor? You can use a plugin or your favourite editor. Or even make one yourself! I think this was the right approach, considering integration. It'd have been hard to try making settle work with vim or emacs and their many quirks. Instead, a plugin for vim or emacs would certainly be able to use it in amazing ways.

I wrote settle.vim since I'm a (neo)vim user myself. If you write a wrapper around settle, contact me at xylous.e@gmail.com and I'll make a list or something.

Roadmap

  • generate database from existing files
  • create Zettel
  • list Zettel
  • tags
    • recognize hashtag-tags (e.g. #interesting-tag)
    • search for tags
    • list all tags
  • configuration
    • custom Zettelkasten directory
    • custom database file path
    • be able to use templates
  • list mentioned but non-existent Zettel
  • use an inbox
  • search for text inside notes
  • support matching titles with wildcards
  • update Zettel metadata individually
  • print links
    • forward links (from a Zettel to other Zettel)
    • backlinks (to a Zettel from other Zettel)
  • projects (subdirectories within the main Zettelkasten folder)
    • add notes to projects
    • generate the database with projects included
    • start with an 'inbox' project by default
Meta
  • configure Cargo.toml properties
  • shell autocompletion
    • zsh
    • bash
    • fish
  • write a proper man page
  • logo (pixel art?)
  • publish to crates.io

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