docs / getting-started
Getting started
Install tnotes with Homebrew, cargo or a prebuilt tarball, open your first notes folder, and learn the layout of the terminal UI.
Install
Homebrew (macOS Apple Silicon/Intel, Linux x86_64/aarch64 — prebuilt, no Rust needed):
brew install 0x1ocean/tnotes/tnotes
brew upgrade tnotes # later
Cargo (any platform, Rust ≥ 1.98):
cargo install tnotes
cargo install tnotes --force # upgrade
Prebuilt tarball from a release — targets aarch64-apple-darwin, x86_64-apple-darwin, x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl (static, any distro), aarch64-unknown-linux-gnu; each has a .sha256 next to it:
V=1.3.0; T=aarch64-apple-darwin
curl -sL https://github.com/0x1ocean/tnotes/releases/download/v$V/tnotes-$V-$T.tar.gz | tar xz
install tnotes-$V-$T/tnotes ~/.local/bin/
From source:
cargo install --git https://github.com/0x1ocean/tnotes
The binaries are not signed. On macOS, Homebrew and curl downloads run as-is; a tarball saved through the browser is quarantined by Gatekeeper (xattr -d com.apple.quarantine tnotes clears it). Windows is untested.
First launch
tnotes # open your configured roots
tnotes ~/path # add the folder to your roots (saved to config) and open it
tnotes --dir ~/path # use only this folder for the session; config roots are left untouched
The first launch asks where your notes live (default ~/Documents/notes). Roots are saved to the config file.
The layout
- Tree (top left):
All notes, then every root with its folders, then atagssection.enterfilters the list by the selected folder or tag;spacefolds. - List (bottom left): notes matching the current filter, newest first by default.
/searches,schanges the sort,j/kmove. - Tabs (top right): selecting a note opens it in a preview tab; editing or pressing
enterpins it.1-9jumps,ctrl+wcloses. - Editor (right): the note itself, with live Markdown highlighting.
- Status bar (bottom): filter, count, sort on the left; save state, word count, backlink count, key mode, help and settings on the right.
On a narrow terminal the sidebar and editor become a single panel; ctrl+b switches between them.
Writing a note
ctrl+t creates a note. The first line is the title (the template is # ), and the file on disk is named after it: # Groceries becomes groceries.md. Change the title and the file is renamed; every [[Groceries]] link in other notes is rewritten.
Type #work anywhere and the note is tagged; #work/project nests. Type [[ and a completion popup lists your notes.
A dirty note is written after autosave_ms (500 ms) of idle time. If a save ever fails, the text is kept under ~/.local/state/tnotes/unsaved/ and the path is shown.
Where things live
| What | Path |
|---|---|
| Notes | the roots you chose, e.g. ~/Documents/notes |
| Trash | <root>/.Trash/, mirroring the folder layout |
| Config | ~/.config/tnotes/config.toml (macOS: ~/Library/Application Support/tnotes/config.toml) |
| Session state | ~/.local/state/tnotes/state.toml |
| Unsaved text after a failed save | ~/.local/state/tnotes/unsaved/ |
Dot-prefixed files and directories inside a root are ignored, and nothing else is written next to your notes.