⚡️ A blazing fast way of maintaining powerful notes with connections between them.

Related tags

Command-line zettl
Overview

Zettl

⚡️ A blazing fast way of maintaining powerful notes with connections between them.

asciicast

Installing Zettl

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

Initializing 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 .zshrc).

> .bashrc ">
$ mkdir ~/kasten
$ echo "export ZETTL_DIRECTORY=~/kasten" >> .bashrc

Initializing zettl creates a .zettl directory in your base directory.

$ zettl init

Configuring Zettl

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

Using Zettl

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

Zettl creates _index.md files in each directory to index your notes. You can turn this off by setting the following in the config directory.

indexes: false

The 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:

graph: false

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

Integrations

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"
  • Publish your notes as a static site with Hugo. This theme handles mediawiki links as well.
$ ln -s $ZETTL_DIRECTORY path/to/hugo/content
$ hugo serve
Comments
  • Add list command to show all notes

    Add list command to show all notes

    I added a list command to show all notes with a flag to show all fleeting notes as well.

    This can be used in conjunction with fzf to get fuzzy finding on notes.

    opened by hardliner66 1
  • Publish on crates.io

    Publish on crates.io

    I really like this tool. It would be great if you could publish it on crates.io. Installation would go from memorizing or searching the github url, to cargo install zettl.

    opened by hardliner66 0
  • Add flag to tell zettl to open a fleeting note

    Add flag to tell zettl to open a fleeting note

    This allows reopening fleeting notes directly with zettl, but will fail if desired fleeting note is not present. If the parameter is not given, the behavior stays the same as before.

    Together with #4 this can be used with fzf as well. So you can fuzzy search for dates and open them with zettl.

    opened by hardliner66 0
  • Create ZETTEL_DIRECTORY if it doesn't exist

    Create ZETTEL_DIRECTORY if it doesn't exist

    Currently you have to create the directory ~/zettel yourself before calling zettl init. I would be nice if the tool could create this dir if it doesn't exist (e.g.: https://doc.rust-lang.org/std/fs/fn.create_dir_all.html).

    opened by hardliner66 0
  • Ability to set Templates

    Ability to set Templates

    A user must be able to configure a template for fleets or notes. This would be especially helpful with fleets as they would make making things like day planners much more convenient.

    Something like

    $ zettl note -t template1 note1
    
    opened by hedonhermdev 0
  • Ability to Add Optional Tags To Notes

    Ability to Add Optional Tags To Notes

    Tags should be saved in the frontmatter something like this:

    ---
    ...
    tags: ["tag1", "tag2", "tag3"]
    ---
    

    The CLI should accept tags using a flag.

    $ zettl note note1 -t tag1 -t tag2 -t tag3
    

    While we're at it, the zettl list command should also be able to filter with a specific tag.

    $ zettl list -t tag1
    
    enhancement help wanted good first issue 
    opened by hedonhermdev 0
  • Fish shell plugin to integrate fzf with zettl

    Fish shell plugin to integrate fzf with zettl

    With #4 and #5 merged, one can now use something like fzf to fuzzy find on the notes.

    To simplify this, I made a fish shell plugin that does just that: https://github.com/hardliner66/zettl-fzf

    If you want, you can link it in your readme.

    opened by hardliner66 0
Owner
Tirth Jain
Doing what I love. CS undergrad @ BITS Pilani, India
Tirth Jain
zkPoEX enables white hat hackers to report live vulnerabilities in smart contracts while maintaining the confidentiality of the exploit

zkPoEX enables white hat hackers to report live vulnerabilities in smart contracts while maintaining the confidentiality of the exploit, facilitating efficient communication and collaboration between hackers and project owners for a more secure DeFi ecosystem.

zkoranges 135 Apr 16, 2023
Navigate in the world of ESP32 with easy. Tool for maintaining development environment.

ESP Helm Get all important information for Embedded Development with ESP32 and mainitain the development environment. Check out releases for binary ve

Juraj Michálek 4 Aug 7, 2023
An easy, fast and lightweight tool to create notes in terminal.

An easy and lightweight tool to create notes in terminal. Features Make notes faster. Manage your notes directly in terminal. Lightweight and fast. Ea

Konstantin Zhigaylo 5 May 24, 2023
Automatically dim windows in Hyprland when switching between them.

hyprdim hyprdim is a daemon that automatically dims windows in Hyprland when switching between them. Features Easily see which window has focus, even

Donovan Glover 3 Aug 13, 2023
CLI to query for public transport connections in switzerland

Swiss Public Transport CLI This is a simple tool to search public transport connections from one station to another, possible with a via. It uses the

Sandro Covo 4 Apr 2, 2022
Show active TCP connections on a TUI world map.

Maperick Show active TCP connections on a TUI world map. Still WIP, but it's gonna be good. Setup git clone [email protected]:schlunsen/maperick.git cd m

Rasmus Schlünsen 5 Jul 8, 2022
Notes on learning the Rust programming language syntax.

notes-on-rust Notes on learning the Rust programming language syntax. Resources https://www.rust-lang.org/learn/get-started https://doc.rust-lang.org/

Fred Snyder 1 Jan 2, 2022
Create tasks and save notes offline from your terminal

Create tasks and save notes offline from your terminal

null 9 Dec 18, 2022
Python/Rust implementations and notes from Proofs Arguments and Zero Knowledge study group

What is this? This is where I'll be collecting resources related to the Study Group on Dr. Justin Thaler's Proofs Arguments And Zero Knowledge Book. T

Thor 65 Dec 16, 2022
Simple, lightweight, markdown-based notes app I might actually finish eventually

Jupiter A simple markdown & git-based notes app for Linux. Features Lightweight with minimal dependencies Git integration for syncing & versioning Sea

Maxim 6 Jan 31, 2023
Core Lightning plugin for sending zap (NIP-57) notes

Core Lightning plugin for sending zap events You can add the plugin by copying it to CLN's plugin directory or by adding the following line to your co

null 8 Mar 13, 2023
Bolik Timeline is local-first software for keeping notes and files.

Bolik monorepo Bolik Timeline is local-first software for keeping notes and files. This repo contains alpha-quality software. This means that we are e

Bolik Oy 18 Apr 11, 2023
zoxide is a blazing fast replacement for your cd command

zoxide A smarter cd command for your terminal zoxide is a blazing fast replacement for your cd command, inspired by z and z.lua. It keeps track of the

Ajeet D'Souza 8.7k Dec 31, 2022
☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell

☄??️ The minimal, blazing-fast, and infinitely customizable prompt for any shell

Starship Command 31.6k Dec 30, 2022
A blazing fast command line license generator for your open source projects written in Rust🚀

Overview This is a blazing fast ⚡ , command line license generator for your open source projects written in Rust. I know that GitHub

Shoubhit Dash 43 Dec 30, 2022
⚡ A Blazing fast alternative to the stock windows folder delete function!

Turbo Delete A blazing fast alternative to the default Windows delete. Turbodelete is a blazing fast alternative to the default Windows delete functio

Tejas Ravishankar 165 Dec 4, 2022
A blazing fast and easy to use TRPC-like server for Rust.

rspc ?? Work in progress ?? A blazing fast and easy to use TRPC-like server for Rust. Website Example You define a trpc router and attach resolvers to

Oscar Beaumont 344 Dec 31, 2022
Minimal and blazing-fast file server. For real, this time.

Zy Minimal and blazing-fast file server. For real, this time. Features Single Page Application support Partial responses (Range support) Cross-Origin

Miraculous Owonubi 17 Dec 18, 2022
Starkli (/ˈstɑːrklaɪ/), a ⚡ blazing ⚡ fast ⚡ CLI tool for StarkNet powered by 🦀 starknet-rs 🦀

starkli Starkli (/ˈstɑːrklaɪ/), a ⚡ blazing ⚡ fast ⚡ CLI tool for StarkNet powered by ?? starknet-rs ?? Installation The package will be published to

Jonathan LEI 26 Dec 5, 2022