Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Files and environment

Everything n0te reads and writes outside your notes. Paths are shown with their defaults; XDG_CONFIG_HOME, XDG_DATA_HOME and XDG_STATE_HOME move them when set.

What n0te writes

PathWhatWritten by
~/.config/n0te/config.tomlyour settingsthe settings page, ctrl + / ctrl -
~/.config/hypr/n0te.luathe super n binding and the service at loginsetup, the settings page
~/.config/hypr/hyprland.luaone require("hypr.n0te") line, with a commentsetup (removed by --setup remove)
~/.config/omarchy/themed/n0te.css.tplthe theme templatesetup
~/.local/share/applications/n0te.desktopthe app entry, unless a package installed onesetup
~/.local/share/bash-completion/completions/n0te, n0tab completion, unless a package installed itsetup
~/.local/state/n0te/markdown-defaultthe app that opened .md files before n0te, to give them backsetup, the settings page

If you’ve changed the app entry, the theme template or the completion file, setup leaves yours in place, and --setup remove leaves it too. n0te.lua is n0te’s own: setup and the settings page rewrite it, and --setup remove deletes it, so put your own Hyprland lines elsewhere. Files are replaced atomically, so Hyprland never reads half a file, and a symlink (dotfiles managed with stow, say) stays a symlink.

While it runs

These live in $XDG_RUNTIME_DIR (usually /run/user/1000):

PathWhat
n0te.sockthe service’s socket, readable only by you
n0te-service.logwhat the service prints, appended to
n0te-stdin-*.mda copy of stdin or a pipe, deleted once the window has read it

Without XDG_RUNTIME_DIR, they go in a private n0te-UID folder in $TMPDIR (or /tmp), which n0te creates readable only by you. It refuses a folder of that name that isn’t yours or that others can read.

While saving a note, n0te writes .NAME.n0te-PID~ next to it for an instant, then renames it over the note.

What n0te reads

PathFor
~/.config/obsidian/obsidian.json; Flatpak and Snap equivalentsObsidian’s vaults, and which one is open
VAULT/.obsidian/app.json, daily-notes.json, templates.jsonnew notes, daily notes, templates
~/.local/state/omarchy/current/theme/n0te.css, colors.tomlcolors
~/.local/state/omarchy/current/theme.namewatched, to repaint on a theme switch
~/.config/hypr/hyprland.lua, n0te.luawhat the settings page shows for super n and login

Environment

These are read by the service when it starts, not by each n0; see Command line.

VariableWhat it does
N0TE_VAULTthe vault to use, over Settings and Obsidian
XDG_CONFIG_HOME, XDG_DATA_HOME, XDG_STATE_HOMEbase folders, defaulting to ~/.config, ~/.local/share and ~/.local/state
XDG_RUNTIME_DIRwhere the socket, log and stdin copies go
XDG_DATA_DIRSwhere to look for other apps’ entries (to name the markdown app you had)
HYPRLAND_INSTANCE_SIGNATUREwhen set, n0te asks Hyprland to reload after changing n0te.lua
GSK_RENDERERGTK’s renderer; n0te sets gl unless you choose another

For development, N0TE_APP_ID runs a separate instance with its own app id and N0TE_FLOAT makes windows fixed-size; see Contributing.