Home

Awesome

jot

<a href="LICENSE"><img alt="Release" src="https://img.shields.io/badge/license-MIT-green"></a> <a href="https://github.com/shashwatah/jot/releases/tag/v0.1.2"><img alt="Release" src="https://img.shields.io/badge/release-v0.1.2-red"></a> <a href="https://crates.io/crates/jt"><img alt="Cargo" src="https://img.shields.io/badge/crates.io-jt-blue"></a> <a href="https://github.com/shashwatah/jot/blob/main/CONTRIBUTING.md"><img alt="PRs" src="https://img.shields.io/badge/PRs-welcome-purple"></a>

<p> <a href="#installation">Installation</a> • <a href="#usage">Usage</a> • <a href="#notes">Notes</a> • <a href="#changelog">Changelog</a> • <a href="#build-from-source">Build from Source</a> • <a href="#dependencies">Dependencies</a> • <a href="#contribute">Contribute</a> • <a href="#license">License</a> </p>

Jot is a feature-stripped version of Obsidian focused on rapid note management through the terminal. <br> It uses the same format of storage as Obsidian, i.e. markdown files for notes, and local folders for vaults (and sub-folders). <br> Commands that encompass all basic needs are included. Each command has an alias (two letter abbreviation) to further increase rapidity.

<br> <img alt="Screenshot" src="assets/imgs/jot.png"/>

Installation

Install with cargo:

$ cargo install jt

Use executable (only for windows)

Download jt.exe (v0.1.2) and add it to your path.

Usage

The following example represents a general user flow when first using Jot.

Create a vault using the following command:

$ jt vault newvault ~/vaults 

Here, newvault is the name of the vault, and '~/vaults' is the location where it will be created (this location should be an absolute fs path and exist already or jot will throw an error).

Providing no arguments to vault command will list all vaults.

$ jt vault

Adding the '-l' flag will list all vaults with their locations.

$ jt vault -l

At this moment only newvault will be listed.

Enter into the vault:

$ jt enter newvault

enter command is also used to switch to other vaults.

Create notes and folders:

$ jt note newnote
$ jt folder newfolder

note and folder, both work similarly and create the corresponding items in current folder. When a vault is first created, the current folder is set to its root.

Open a note:

jt open newnote

open command will open the specified note with the editor set in config.

Change folder:

$ jt chdir newfolder

chdir command will switch the current folder to the location mentioned. <br> Relative path to location from current folder has to be provided. Standard fs paths are accepted as valid input, like '../folder1/somefolder/'.

$ jt chdir ..

This will switch back to the root of vault.

Open current folder in explorer:

$ jt opdir

opdir command will open the current folder in the default file explorer.

List items in current folder:

$ jt list

When needed list command will print the dir tree of current folder. All notes will be highlighted in blue #1589F0.

This is what the dir tree will look like with this vault's root as the current folder.

newvault
├── newfolder                      
└── newnote   # highlighted in blue

Adding an item type (note or folder) to the list command like so,

$ jt list note

will only list items of the specified type.

Fs operations:

Command remove works as its name suggests, on all items (vault, note, or folder).

$ jt remove note newnote 

Commands rename and move are used similarly but take one additional argument each.

Command rename takes the new name as its third argument.

$ jt rename note newnote somenewnote

Command move takes the new location as its third argument.

For vaults, path rules are same as vault command and for other items, path rules are same as chdir command.

$ jt move note newnote /newfolder/

These commands take the item type (vault, note, or folder) as their first argument.

Command vmove is similar to move, but it moves an item (note or folder) from the current folder of the current vault to the root of a different vault, and takes the name of this vault as an argument in place of location.

$ jt vmove note newnote somevault 

Every keyword used so far (commands and item names) is interchangeable with its two letter alias, e.g. move command can also be written as:

$ jt mv nt newnote /newfolder/

Handle Jot's config:

$ jt config

config command will open the config file in the set editor. By default this is nvim.

Specifying a config field as an argument will display its value without opening the config file itself.

$ jt config editor

Providing a value as an additional argument will update the field.

$ jt config editor code.cmd

Get Help

Run jt without a command, or with help command or -h flag for main help message.

$ jt

Use help command or -h flag with a command to get corresponding help.

$ jt help vault
$ jt vault -h

Notes

General

Config & Data

Changelog

Build from Source

Clone the repository and cd into the directory:

$ git clone https://github.com/shashwatah/jot.git
$ cd jot

Run the following command to install dependencies and build/compile the program.

$ cargo build 

Then run the executable created in 'target/debug/' (or add it to your path).

Or, run the tool directly:

$ cargo run -- *args*

Pass in commands and arguments after '--'.

Dependencies

Contribute

Contributions are welcome and appreciated! Please review the contributing guidelines for more information on how to get involved.

License

MIT License | Copyright (c) 2024 Kumar Shashwat