# Obsidian Menus Create simple, stylable menus from code blocks. Write links inside a menu code block, and the plugin renders a clean set of clickable items. ## Quick Start Create a menu using the menu code block: ```markdown ​```menu layout: default [[Home]] [[Projects|My Projects]] [Google](https://google.com) [Documents](file:///C:/Users/YourName/Documents) ``​` ``` The plugin supports three link types: - Internal: `[[Note]]` or `[[Note|Alias]]` opens notes in Obsidian - Web: `[Text](https://example.com)` opens in your browser - File: `[Text](file:///C:/path/to/file)` opens local files or folders ## Built-in Templates Choose from five pre-styled layouts: - `default` — balanced, general-purpose design - `minimal` — clean and understated - `slate` — darker theme with subtle borders - `horizon` — horizontal emphasis with gradients - `aether` — light and airy aesthetic Add extra classes after the layout name: ```code layout: horizon wide [[Dashboard]] [Resources](https://example.com) ``` ## Custom Styling Use your own CSS class to bypass the built-in templates entirely. The plugin only renders the HTML structure and inline CSS variables—no default styles apply. ```code class: my-menu bg: #111 text: #eee hover-text: #0af [[Home]] [Web](https://example.com) ``` Then create your own CSS snippet: ```css .menu-container.my-menu { display: flex; gap: 0.5rem; flex-wrap: wrap; } .menu-container.my-menu a { padding: 0.5rem 0.8rem; border-radius: 6px; color: var(--text, var(--text-normal)); background: var(--bg, transparent); } .menu-container.my-menu a:hover { color: var(--hover-text, var(--text-accent)); background: var(--hover-bg, transparent); } ``` ## Style Variables Override colors and fonts using YAML-like variables inside the code block. Only these whitelisted properties are supported: **Global variables:** - `bg` — background color for buttons - `text` — text color - `border` — border color - `font` — font family - `hover-text`, `hover-bg`, `hover-border`, `hover-font` — hover state styles **Per-link-type variables:** Prefix any global variable with `internal-`, `external-`, or `file-` to target specific link types: ````markdown ```menu layout: minimal internal-text: #00ff00 external-text: #ff6600 file-text: #0066ff [[Internal Link]] [External Link](https://example.com) [File Link](file:///C:/Documents) ``` ``` **Accepted formats:** - Colors: hex (`#1a1a1a`), rgb, hsl, CSS variables (`var(--text-accent)`), gradients - Fonts: plain names or quoted for spaces (`font: "Work Sans"`) ## Dataview Integration Generate links dynamically from Dataview queries. Prefix your query with `dataview:` or `dv:`: ````markdown ```menu layout: default [[Home]] dataview: LIST FROM "Projects" ``` ``` The plugin unwraps Dataview results so links blend seamlessly into your menu layout. ## Examples Template with gradient background: ````markdown ```menu layout: horizon bg: linear-gradient(45deg, #667eea, #764ba2) text: white hover-text: #ffd700 [[Dashboard]] [Projects](https://github.com) ``` ``` Custom class with theme variables: ````markdown ```menu class: my-toolbar text: var(--text-normal) hover-text: var(--text-accent) [[Inbox]] [Wiki](https://example.com) ``` ```