# Canvas configuration

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.

Continue with free email access at /canvas/docs/config.
