You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
⚡ Supercharge your canvas experience to help build your second brain! Graph view integration and unlimited node and edge styling options empower flowcharts, dynamic presentations, and interconnected knowledge.
Please consider supporting the plugin. There are many hours of work and effort behind it. The two easiest ways to support the plugin are either by starring ⭐ the repository or by donating any amount on Ko-fi ❤️. Thank you!
Full Metadata Cache Support
Advanced Canvas enables .canvas files to be indexed by the metadata cache. This means that there is now full compatibility with the graph view, outgoing links and backlinks. You can even enable (optional) the creation of an outgoing link if two embeds in a canvas are connected by an edge. This feature brings the full power of Obsidian's linking system to the canvas file format.
Metadata Cache Support ExampleOutgoing Link Using An Edge Example
Technical Details
The file cache of a .canvas file now contains a value for the hash key (Generated from the filepath) instead of an empty string
Check the app.metadataCache.fileCache[<filepath>] object to see the changes
The metadata cache is located in the app.metadataCache object - the same object that is used by Obsidian for markdown files
e.g. app.metadataCache.getCache/app.metadataCache.getFileCache now works with .canvas files
The position object which is found inside metadata cache entries now contains a new key nodeId for .canvas files
The metadata cache entry for a .canvas file now contains a new key nodes which is an object of type { [nodeId: string]: MetadataCacheEntry } - this allows for other plugins to access the full metadata cache for single nodes. The MetadataCacheEntry object is the same as for markdown files (even created with the same function - 1:1 compatibility)
The resolved links object now has entries for .canvas files
The app.metadataCache.resolvedLinks object values for .canvas files are implemented in the exact same way as for markdown files
Better Default Settings
Enforce all new nodes to be aligned to the grid
Customize default text node size
Customize default file node size
Modify the minimum node size
Disable the font scaling relative to the zoom level
Canvas Commands
Advanced Canvas: Open Quicksettings
Open the quicksettings menu
Advanced Canvas: Create text node
Create a new text node
Advanced Canvas: Create file node
Create a new file node
Advanced Canvas: Select all edges
Select all edges
Advanced Canvas: Zoom to selection
Zoom to the bounding box of the selected nodes
Advanced Canvas: Zoom to fit
Zoom to fit all nodes
Advanced Canvas: Clone node up/down/left/right
Clone the selected node in the direction of the arrow keys
The cloned node will have the same dimensions and color as the original node
Advanced Canvas: Expand node up/down/left/right
Expand the selected node in the direction of the arrow keys
Set the style of the border to dotted, dashed or invisible.
Border Styles Example
Edge Styles
You can customize the default edge styles using the settings.
Path Styles
Set the style of the edge paths to dotted, short-dashed or long-dashed.
Edge Styles Example
Arrow Styles
Set the style of the arrows to triangle outline, halved triangle, thin triangle, diamond, diamond outline, circle or circle outline.
Arrow Styles Example
Pathfinding Methods
Set the pathfinding method of the edges (arrows) to default, straight, squared or A*.
Path Styles Example
Custom Styles
Custom style attributes for nodes and edges can easily be added.
Create a new CSS snippet in your vault
To do this, navigate to Settings > Appearance > *scroll down* > CSS snippets and click on the folder icon to open the snippets folder
Create a new CSS file (e.g. my-fancy-node-style.css)
Add the custom style attribute
Open the CSS file and add the following code and replace the values how you like. The format needs to be YAML and needs to contain the same keys as in this example. The amount of options can be adjusted as needed (minimum of one option is required). The icon key should contain the id of the icon you want to use. You can find the icons on lucide.dev
Change the @advanced-canvas-node-style to @advanced-canvas-edge-style if you want to add a custom style attribute for edges
Add breakpoints to nodes to change at which zoom factor the node's content gets unrendered.
Create a new CSS snippet in your vault (And enable it in the settings)
/* Any CSS selector can be used (As long as the .canvas-node element has the CSS variable defined) */
.canvas-node[data-shape="pill"] {
/* The zoom factor at which the node's content gets unrendered (Zoom level can reach from 1 to -4) */--variable-breakpoint:0.5;
}
Z-Ordering Control
Change z-ordering of nodes using the context menu.
Z-Ordering Control Example
Custom Colors
Add custom colors to the color picker. You can add them using the following css snippet:
body {
/* Where X is the index of the color in the palette *//* The colors 1-6 are already used by Obsidian */--canvas-color-X:0,255,0; /* RGB */
}
Custom Colors In Palette
Presentation Mode
In presentation mode, you can navigate through the nodes using the arrow keys or the PageUp/PageDown keys (Compatible with most presentation remotes). The different slides/nodes are connected using arrows. If you want to have multiple arrows pointing from the same node, you can number them in the order you want to navigate through them. While in presentation mode, the canvas is in readonly mode (So better readonly effects the presentation mode as well!). You can exit the presentation mode using the ESC key or the corresponding command. If you want to continue the presentation from the last slide you were on, you can use the Advanced Canvas: Continue presentation command.
Canvas File
More Complex Example
Canvas File
Usage
Create the first slide
Create the first slide of the presentation using the updated popup menu
OR create a node and mark it as the first slide using the updated card menu
Add more slides
Link the slides using arrows
If you want to loop back to a previous slide, you can number the arrows in the order you want to navigate through them
TIP: Create slides with consistent dimensions by using the updated card menu
Control the presentation
Start the presentation using the command palette (Advanced Canvas: Start presentation)
Change slides using the arrow keys
Exit the presentation using the ESC key
Portals
Embed other canvases inside your canvas and create edges (arrows) to the embedded canvas.
Usage
Embed a canvas file and click on the door icon of the popup menu to open a portal
Collapsible Groups
Collapse and expand groups to organize your canvas.
Collapsible Groups Example
Image Export
Export the whole canvas/your selection as an png/svg image with transparency. Export options from the core plugin are also available - this includes "Privacy Mode" and "Show Logo" (Logo got extended to include Advanced Canvas).
Image Export Example
Auto Node Resizing
Resize nodes automatically when the text content changes. Toggle this feature on a per-node basis using the updated popup menu.
Auto Node Resizing Example
Focus Mode
Focus on a single node and blur all other nodes.
Focus Mode Example
Better Readonly
Disable node popup menus
Lock the canvas' position
Lock the canvas' zoom
BUT to retain some interactivity, it allows zooming to a bounding box (e.g. zoom to selection, zoom to fit all)
Usage
Use the updated control menu to toggle the new features (Only shown if the canvas is in readonly mode)
Encapsulate Selection
Move the current selection to a new canvas and create a link in the current canvas.
Usage
Select the nodes you want to encapsulate
Use the context menu (right click) to encapsulate the selection
OR use the command palette (Advanced Canvas: Encapsulate selection)
Floating Edges (Automatic Edge Side)
Change the side of the edge automatically to the most suitable side.
Drag the edge to the indicated drop zone inside the node to make the edge float.
Floating Edges Example
Flip Edge
Flip the direction of an edge with one click.
Flip Edge Example
Canvas Events
All custom events are prefixed with advanced-canvas: and can be listened to using app.workspace.on (Just like the default events).
Check out the list of events here.
Settings
Every feature can be enabled/disabled in the settings. All features were made to be as customizable as possible.
Contributing
All code contributions are welcome! (PRs that only update the documentation won't get merged. Please open an issue instead.)
You may want to check out issues with the PRs appreciated label to find issues you can start with.
But feel free to work on any issue or non-issue you want to work on!
Star History
About
⚡ Supercharge your canvas experience to help build your second brain! Graph view integration and unlimited node and edge styling options empower flowcharts, dynamic presentations, and interconnected knowledge.