Canvas documentation

Canvas configuration

Canvas's behavior and theme live in one JSON file

Updated Edit on GitHub →

Canvas's behavior and theme live in one JSON file:

~/Library/Application Support/Blink/config.json

Canvas watches this file and applies valid changes to open panels without a restart. The default path is unchanged from Blink.

Current source builds use the first nonempty CANVAS_HOME, then BLINK_HOME, to override the file-backed root. Empty values are ignored. The selected root contains config.json, Notes, and attachments; use the same root for app and CLI. These overrides do not redirect UserDefaults, and either disables mobile sharing. Existing releases recognize BLINK_HOME only.

Examples use the current canvas command. The compatible blink command and published package name @arach/blink remain supported. The rename does not change config keys, blink.* frontmatter, attachment URLs, or settings keys; hotkeys.blink still controls showing and hiding all notes.

Rules:

  • Every field is optional. Missing fields use the defaults below. {} is a valid config.
  • Invalid JSON never breaks the app: Canvas keeps the last good config and logs [BLINK] config invalid — keeping last good. An invalid file found at startup stays untouched; the app uses defaults with mobile access off.
  • Write atomically (write temp + rename, or your editor's normal save) — Canvas watches the directory, so atomic replaces are picked up fine.
  • The settings window is a view over this file; edits there round-trip through it.