Git Product home page Git Product logo

zettl's Introduction

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

$ 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
# Listing all notes.
$ zettl list
# Listing all fleeting notes.
$ zettl list -f

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
  • Fuzzy finding notes with fzf
# for notes
$ zettl note $(zettl list | fzf)

zettl's People

Contributors

hardliner66 avatar hedonhermdev avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.