summary:
- Renders JSON Canvas (
.canvas) files, including Obsidian canvases, as interactive zoomable/pannable pages. - Preserves:
- text nodes
- file references
- links
- groups
- edges
Note
Plugin installation, removal, and configuration: Configuration.
plugin:
- provider: CanvasPage
- configuration/features: CanvasPage
Demo
Canvas
Link to original Node TypesConfigurationPreset ColorsEdges & ConnectionsCanvasPage Plugin
This plugin renders JSON Canvas (
.canvas) files as interactive, pannable and zoomable canvas pages. It supports the full JSON Canvas 1.0 spec.Install:
npx quartz plugin add github:quartz-community/canvas-pageText Nodes
Text nodes render Markdown content with GFM support:
- Bold and italic text
Strikethroughtext- External links
Inline codeblocks- Lists (like this one)
Headings Work Too
All standard Markdown syntax is rendered at build time.
File Nodes
File nodes reference other pages in your vault. They appear as clickable links and support popover previews on hover.
The node below links to the CanvasPage documentation:
summary:
- Renders JSON Canvas (
.canvas) files through custom"canvas"page frame- Supports JSON Canvas 1.0 spec
Note
Plugin add/remove/configure: Configuration.
Configuration
configuration: enableInteraction: effect: pan/zoom default:
trueinitialZoom: effect: initial zoom level default:1minZoom: effect: minimum zoom level default:0.1maxZoom: effect: maximum zoom level default:5Canvas Frame
canvas_frame: frame:
"canvas"features: fullscreen:100vw×100vhleft_sidebar: - togglable - slides in - overlays on mobile - containsleftslot components - toggles: - top-left button -Escapecontrols: position: right actions: - zoom in - zoom out - reset override_layout:quartz.config.yamlquartz.config.yaml layout: byPageType: canvas: template: default # Use standard three-column layout insteadFeatures
features: text_nodes: rendering: Markdown/GFM supports: - headings - lists - links - code blocks file_nodes: - local vault page links - hover popover previews link_nodes: - external URL references group_nodes: - containers - optional labels - background colors edges: - SVG paths - optional labels - arrows - colors: - presets:
1–6- custom hex:#RRGGBB- connections: any side colors: presets: - red - orange - yellow - green - cyan - purple custom_hex:#RRGGBBapplies_to: - nodes - edgesAPI
api: category: Page Type function:
ExternalPlugin.CanvasPage()source:quartz-community/canvas-pageinstall:npx quartz plugin add github:quartz-community/canvas-pageLink Nodes
Link nodes reference external URLs. The node below links to the JSON Canvas specification:
Color 1 — Red
Color 2 — Orange
Color 3 — Yellow
Color 4 — Green
Color 5 — Cyan
Color 6 — Purple
Custom hex color —
#ff6600Configuration Options
enableInteraction— Enable pan and zoom. Default:trueinitialZoom— Initial zoom level. Default:1minZoom— Minimum zoom level. Default:0.1maxZoom— Maximum zoom level. Default:5defaultFullscreen— Start in fullscreen mode. Default:falseConfigure in
quartz.config.yaml:CanvasPage({ defaultFullscreen: false, initialZoom: 1 })Fullscreen Mode
Click the expand button (top-right corner) to toggle fullscreen mode. The canvas fills the entire viewport.
- Press Escape to exit fullscreen
- Set
defaultFullscreen: trueto start in fullscreen- The toggle button switches between expand and collapse icons
Quartz Integration
- Popover previews: Hover over file nodes to see a preview
- Internal links: File nodes link to pages in your vault
- Dark mode: Canvas adapts to your theme settings
Edges
Edges connect nodes with SVG paths. They support labels, arrows, and colors.
This edge has a label and an arrow marker.
This edge has a custom color (
#ff6600).Edges can use the same preset colors (1–6) as nodes, or custom hex colors like
#ff6600.API
- Category: Page Type
- Function name:
ExternalPlugin.CanvasPage()- Source: quartz-community/canvas-page
- Install:
npx quartz plugin add github:quartz-community/canvas-pageJSON Canvas Spec
This plugin implements the JSON Canvas 1.0 specification — an open file format for infinite canvas data.
Canvas files use the
.canvasextension and are standard JSON. They are natively supported by Obsidian.
Customization
install:
npx quartz plugin add github:quartz-community/canvas-pagesource:quartz-community/canvas-page