Quidest?

appunti

Description

CLI note manager for Zettelkasten-like note-taking.

This tool allows you to keep track of your notes and of the links between them. You can easily create, delete, list and filter and browse your notes. You can also set up a git repository to keep track of changes and setup a remote repository.

You’ll need an editor of your choice to edit the notes. You can set this by modifying the EDITOR or VISUAL environment variable, or by setting the ---editor flag.

Future versions will support a configuration TOML file.

This is also a library that you can import with import appunti. The main packages are appunti.zettelkasten.notes and appunti.zettelkasten.zettelkasten

Commands

You can see all the flags and commands available by typing

1appunti --help
usage: appunti [-h] [--vault VAULT] [--author AUTHOR] [--autocommit]
              [--autosync] [--editor EDITOR] [--version]
              {initialize,new,edit,open,delete,print,list,reindex,next,sync,commit,info,browse}
            ...

Zettelkasten manager

positional arguments:
  {initialize,new,edit,open,delete,print,list,reindex,next,sync,commit,info,browse}
    initialize          Initialize the vault.
    new                 Create a new note.
    edit                Open an existing note by ID to edit.
    open                Open the selected notes without affecting index and
                      .last
    delete              Delete a note by ID.
    print               Print the note by ID.
    list                List all the notes.
    reindex             Reindex the vault.
    next                Create new note continuing from last one.
    sync                Commit and sync with remote repository if available.
    commit              Commit current changes to repo.
    info                Show metadata for a note.
    browse              Browse the Zettelkasten.

options:
  -h, --help            show this help message and exit
  --vault VAULT         Location of the vault.
  --author AUTHOR       Author name.
  --autocommit          Whether to commit the git repo at every action.
  --autosync            Whether to push to remote origin at every action.
  --editor EDITOR       Editor to use.
  --version             show program's version number and exit

To drill down and see the flags and use of a single command, you can call for help directly on that command:

1appunti browse --help
usage: appunti browse [-h] [zk_id ...]

positional arguments:
  zk_id       ID of the note to show.

options:
  -h, --help  show this help message and exit

Each note is attributed with a hash which represents it uniquely. This means that notes don’t need to have unique titles (but that helps).

A newly created note will look like this:

 1---
 2title: Hello World
 3author: Lorenzo Drumond
 4date: 2023-11-29T01:16:21
 5last: 2023-11-29T01:16:21
 6zk_id: 56681eea01d3435a3349cf3ee659c20a
 7tags:
 8---
 9
10
11# Hello World
12
13# References

Links are surrounded by double square brackets. They are parsed independently on where they are inserted inside the note (as long as it’s after the frontmatter)

Tags are identified by a leading # and can only contain _ as special character.

Notes are indexed in a sqlite database. If you make changes to notes without using appunti, you’ll have to reindex the database in order to make sure it reflects the most recent changes.

Interactive selection

This selection is supported by almost all commands if you don’t provide them with their argument.

You can select multiple notes by pressing *. You can select/deselect all notes by pressing CTRL-A.

Pressing ENTER will select the note under the cursor if multi-selection is activated, or the notes marked with *, and trigger the command with the notes selected.

Pager

The pager is activated with the command appunti browse. This is an easy way to scroll through your notes and follow links as you read.

Keybindings

KeyActionDescription
sLaunch interactive selectionSelect notes and append them to the current note stack
rReload noteReload current note, showing any pending change
dDelete noteDelete note from current stack (not from zettelkasten)
DDelete stackDelete everything except current note
1 - 9Follow linkFollow link denoted by number, replacing the stack ahead with new note
#Select linkPrompts you to select link by number higher than 9
nNext noteCreate a new note using same links and tags as current note, and edit it
NNew noteCreate a new note and edit it
jScroll Down
JScroll links list down
kScroll up
KScroll links list up
gTop of note
GEnd of note
CTRL-DHalf-page down
CTRL_UHalf-page up
hmove to left of note stack
lmove to right of note stack
Hmove to start of stack
Lmove to end of stack

N.B. Links supported for now are only sluggified versions of link title. Future versions will support full title and file name as well.

Roadmap

Core

Plugins