# InkSlash · 墨令 **Start with a slash. Give your ideas structure.** [简体中文](README.zh-CN.md) · [Community directory](https://community.obsidian.md/plugins/inkslash) · [Download](https://github.com/JeffShanCha/inkslash/releases/latest) · [Report an issue](https://github.com/JeffShanCha/inkslash/issues) InkSlash is a bilingual, Chinese-first insertion menu for [Obsidian](https://obsidian.md). Write `/` to insert text, choose a callout icon, create a diagram, work with note properties, or open a note action. Search reaches items inside submenus, too. **墨令** combines ink and a command: a small action that gives a thought its next shape. Its interface supports English and Simplified Chinese, while inserted examples retain their established text and structure for compatibility. ![InkSlash in a clean Obsidian demo vault](docs/images/slash-menu.png) ## Quick start 1. In an editable Markdown note, type `/`, `/`, `、`, or `\` at line start or after whitespace. 2. Browse or type a keyword in either language: `/heading`, `/callout`, `/流程图`, or `/属性`. 3. Use arrow keys and Enter to insert content or run a command. Complete its picker or form when offered. Escape or Space dismisses the inline slash menu. 4. To format existing text, select it first, then run **InkSlash: Open insert menu (supports selected text)** from the command palette. You can assign this command a hotkey. Command names follow the selected interface language. New installations support line start and whitespace triggers. Upgrades preserve your existing line-start-only preference; change it in **Settings → InkSlash**. Use Live Preview or Reading view to see rendered diagrams and embeds. ## Selected text: color and size Select a single line of plain text in an editable note to show the floating **Text color / Font size** toolbar. Choose a preset color or enter a `#RRGGBB` value, then select a size or enter an integer from **8 to 72 px**. Review the preview and click **Apply**; cancelling leaves the note unchanged. You can also use the editor's right-click menu or **InkSlash: Text color and size** in the command palette. Disable the automatic toolbar in **Settings → InkSlash → Selection toolbar**. Keyboard users can select text, press Tab to focus the toolbar, use Left/Right to switch buttons, and press Enter; Escape dismisses it. Formatting is saved as an inline HTML `span` and remains readable without InkSlash. Source mode shows the tags; rendering in Live Preview follows Obsidian's HTML support. Select the complete styled text again to edit it without nesting spans, or use **Reset color and size → Apply** to remove InkSlash's styling. Code, properties, links, multiline selections and selections containing Markdown formatting syntax are rejected rather than rewritten. Existing slash insertions and their output are unchanged. See [Obsidian's HTML limitations](https://obsidian.md/help/html). Available in **1.3.0+**. Verified in Obsidian 1.13.7 on macOS, including Live Preview, reading view, cancellation, undo, reset, keyboard controls, language switching and the toolbar setting. ## Interface language Choose a language in **Settings → InkSlash → Language**: | Setting | Behavior | | --- | --- | | **Follow Obsidian** (default) | Uses Simplified Chinese when Obsidian is set to a Chinese locale; otherwise uses English | | **简体中文** | Always displays the InkSlash interface in Simplified Chinese | | **English** | Always displays the InkSlash interface in English | The settings page updates immediately after a language change, and newly opened slash menus and dialogs use the new language. Search accepts both Chinese and English command names and keywords in either interface language, so `/标题`, `/heading`, and `/h1` all find heading commands. Known Obsidian command names also follow this setting in **All commands**, **Pinned commands**, **Recent commands**, and the pinned-command settings list. Their original names remain searchable. Community plugins and unrecognized commands keep their provider's names. Language selection changes interface text only. Existing settings, `/` / `/` / `、` / `\` triggers, command behavior, icon IDs, stored data, and generated Markdown remain compatible. Inserted examples and default property names keep their established Chinese content. See the [i18n implementation and verification notes](docs/i18n.md) for technical details. ## Features | Area | What you can insert | | --- | --- | | All commands | Currently available Obsidian and enabled community-plugin commands, fuzzy search, pins, recent commands and hotkey hints | | Writing | Headings 1–6, lists, tasks, Markdown tables, quotes, dividers, links, code, math, bold, italic, strikethrough, highlights, comments and tags | | Callouts | Preset Lucide icons, icon IDs with preview, pasted SVG icons and collapsible callouts | | Content and references | Core templates, date/time, footnotes, embedded search, heading links, block links, section and block embeds | | Data | Bases table, cards and list views; existing `.base` embeds; version-aware kanban; spreadsheet integrations | | Visual thinking | Canvas; Mermaid flowchart, mind map, Gantt, class, sequence, state, pie, bar, line, timeline and entity relationship diagrams | | Media and properties | Attachments, images, audio, video, PDF pages; text, list, number, checkbox, date, datetime and tag properties | | Note actions | Daily notes, recording commands, slides, extract text into a note, outline, local graph and bookmarks | | Optional integrations | Tasks, Dataview, Meta Bind, Maps, Templater, Tracker, Excalidraw, Kanban, Workbooks and Sheet Plus | ### Keep useful commands close Try `/保存`, `/settings`, or `/scf` to find an available command. Choose **All commands** (or **全部命令** in Chinese) to open a dedicated picker that also accepts queries containing spaces. Results show the command source and assigned hotkey. Pin commands with the pin button. Up to six pinned or recent commands appear above the complete insertion menu. On first upgrade, InkSlash inherits the core command palette's pins and recent history; subsequent changes stay in InkSlash. Manage pins and recent-command visibility in its settings. ![All commands with pins and hotkey hints](docs/images/all-commands.png) For commands that operate on selected text, use **InkSlash: Search all commands (keep selected text)** from the command palette. Cancelling a picker preserves the original text; unavailable commands preserve the query. The core Slash commands plugin may remain enabled. Its menu resumes when InkSlash is disabled. ### Give callouts a familiar icon Choose a preset or enter a Lucide icon ID. The picker adapts to window width and scrolls vertically when needed. ![Responsive callout icon picker](docs/images/callout-icons.png) Custom icon mappings live in local plugin settings. Pasted SVG supports static shapes, gradients and internal references; scripts, events, external resources and animation are removed. Icons render in Reading view, Live Preview and popout windows. The `fscn-` callout IDs remain compatible with early local versions. Notes remain readable without InkSlash, but custom icons may fall back to Obsidian's default. ### Turn notes into a project view Bases displays note properties; Mermaid renders a text-defined workflow. The notes in this screenshot are included in the repository. ![A Bases project table and a Mermaid workflow](docs/images/project-dashboard.png) A Bases row represents a file, rather than an arbitrary spreadsheet cell. New views include Markdown notes in the current note's folder and its subfolders; a root-level note includes the whole vault. Edit filters and displayed properties in Bases. Gantt diagrams use independent Mermaid data and do not automatically synchronize with tasks or Bases. ![Searching for data views with dependency information](docs/images/data-views.png) ## Requirements **Obsidian 1.13.7+.** Desktop screenshots and UI checks use macOS and Obsidian 1.13.7. The runtime uses Obsidian and Web APIs and permits mobile installation; physical-device testing is still pending. Media codec support and third-party features vary by platform. | Feature | Dependency | | --- | --- | | Text, callouts, Markdown tables, Mermaid | No additional community plugin. Obsidian may ask you to allow Mermaid for the vault | | Bases table, cards, list and embeds | Enable the **Bases** core plugin | | Native kanban / colored highlights | **Obsidian 1.14.0+**; native kanban also needs Bases | | Kanban on earlier versions | [Kanban](https://github.com/mgmeyers/obsidian-kanban); creates a linked Markdown board | | Canvas / templates / daily notes / recording / slides / outline / graph / bookmarks | Enable the corresponding core plugin. Templates also need a configured template folder | | Hand drawing | [Excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) | | Spreadsheets | [Workbooks](https://github.com/Canna71/obsidian-sheets) or [Sheet Plus](https://github.com/ljcoder2015/obsidian-sheet-plus), or a configured command ID from an installed plugin | | Due dates, priorities, recurring tasks and task queries | [Tasks](https://github.com/obsidian-tasks-group/obsidian-tasks) | | Lists, tables, tasks, calendars and note counts | [Dataview](https://github.com/blacksmithgu/obsidian-dataview) | | Property-bound inputs and command buttons | [Meta Bind](https://github.com/mProjectsCode/obsidian-meta-bind-plugin) | | Map view | [Maps](https://github.com/obsidianmd/obsidian-maps) and Bases. Adding coordinates alone requires neither | | Advanced template picker | [Templater](https://github.com/SilentVoid13/Templater) | | Habit calendars and tracking charts | [Tracker](https://github.com/pyrochlore/obsidian-tracker) | Missing dependencies and version requirements appear in the menu. InkSlash does not install plugins or upgrade Obsidian. The compact Tasks form uses Tasks Emoji format and its configured global filter; use the full Tasks editor for other formats. Dialogs opened by third-party commands follow that plugin's behavior. ## Installation Open [InkSlash in the Community directory](https://community.obsidian.md/plugins/inkslash), choose **Add to Obsidian**, then install and enable the plugin. The directory displays the version currently available after review; a newly published GitHub release may still be processing. For manual installation: 1. Download `main.js`, `manifest.json`, and `styles.css` from the [latest release](https://github.com/JeffShanCha/inkslash/releases/latest). 2. Create `/.obsidian/plugins/inkslash/` and put those three files directly inside it. 3. Reload Obsidian. In **Settings → Community plugins**, enable community plugins if needed, then enable **InkSlash**. Update those three files while keeping `data.json` to preserve settings and icons. The core Slash commands plugin can stay enabled; compatibility with other community slash menus depends on those plugins. Coming from the local `feishu-slash-cn` version? Follow the [migration guide](docs/development.md#migrating-from-the-local-feishu-slash-cn-version). ## Data and privacy - InkSlash makes no network requests, collects no telemetry, and requires no account, API key or payment. This release has no AI writing service. - Content stays in your vault. Language preference, other settings, custom icons, pins and up to twelve recent command IDs are stored in the plugin's local `data.json`. Initial history import does not change core-plugin settings. - Note, media and Bases pickers enumerate vault file paths to offer existing files for selection. These lists stay local and are not transmitted. - The attachment/image picker reads the file you explicitly choose, which may be outside the vault, and copies it into the vault. It does not scan outside folders. - Remote image URLs and third-party plugins may access the network under Obsidian's or that plugin's settings. Their accounts and terms are separate. - Templates add missing properties and retain existing values. New typed properties do not overwrite existing properties. Multi-step content forms check for edits to the source note while open. - Extracting a note creates a separate file and replaces selected text with a link. Undoing the source edit does not delete the created file. ## Examples and development Try [examples/demo-vault](examples/demo-vault) in a test vault with Bases and InkSlash enabled. All screenshot names and projects are fictional demo data. ```sh npm ci --ignore-scripts npm run lint npm test npm run check:release ``` Requires Node.js 22.13+ for tooling. `main.js` is generated from `plugin.js`, `features.js`, `command-menu.js`, `text-style.js`, `callout-icons.js` and the locale files in `i18n/`; no additional runtime packages are bundled. Official Obsidian ESLint rules run in CI and before releases. See [development](docs/development.md), [i18n notes](docs/i18n.md), [release instructions](docs/releasing.md) and the [changelog](CHANGELOG.md). ## Author and license Created by **jeff niu** · [GitHub](https://github.com/JeffShanCha) · [MIT License](LICENSE) Obsidian and the optional integrations are independent projects; InkSlash is not affiliated with them.