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
| Path | What | Written by |
|---|---|---|
~/.config/n0te/config.toml | your settings | the settings page, ctrl + / ctrl - |
~/.config/hypr/n0te.lua | the super n binding and the service at login | setup, the settings page |
~/.config/hypr/hyprland.lua | one require("hypr.n0te") line, with a comment | setup (removed by --setup remove) |
~/.config/omarchy/themed/n0te.css.tpl | the theme template | setup |
~/.local/share/applications/n0te.desktop | the app entry, unless a package installed one | setup |
~/.local/share/bash-completion/completions/n0te, n0 | tab completion, unless a package installed it | setup |
~/.local/state/n0te/markdown-default | the app that opened .md files before n0te, to give them back | setup, 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):
| Path | What |
|---|---|
n0te.sock | the service’s socket, readable only by you |
n0te-service.log | what the service prints, appended to |
n0te-stdin-*.md | a 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
| Path | For |
|---|---|
~/.config/obsidian/obsidian.json; Flatpak and Snap equivalents | Obsidian’s vaults, and which one is open |
VAULT/.obsidian/app.json, daily-notes.json, templates.json | new notes, daily notes, templates |
~/.local/state/omarchy/current/theme/n0te.css, colors.toml | colors |
~/.local/state/omarchy/current/theme.name | watched, to repaint on a theme switch |
~/.config/hypr/hyprland.lua, n0te.lua | what 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.
| Variable | What it does |
|---|---|
N0TE_VAULT | the vault to use, over Settings and Obsidian |
XDG_CONFIG_HOME, XDG_DATA_HOME, XDG_STATE_HOME | base folders, defaulting to ~/.config, ~/.local/share and ~/.local/state |
XDG_RUNTIME_DIR | where the socket, log and stdin copies go |
XDG_DATA_DIRS | where to look for other apps’ entries (to name the markdown app you had) |
HYPRLAND_INSTANCE_SIGNATURE | when set, n0te asks Hyprland to reload after changing n0te.lua |
GSK_RENDERER | GTK’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.