xminder

unlisted

by shouyu2008

supports functions such as creating, viewing, editing XMind files, and embedding them into Markdown.

4 starsUpdated 2mo agoMIT
View on GitHub

XMinder

An Obsidian plugin for reading, writing, and embedding XMind mind maps directly inside your vault.

English · 中文


Introduction

XMinder brings full mind map support to Obsidian. Create or open .xmind files as interactive, editable mind maps without leaving your note-taking workflow. All changes are auto-saved back to the original .xmind format, keeping your files compatible with the XMind desktop application.


Key Features

FeatureDescription
File Explorer integration.xmind files appear in Obsidian's file tree — click to open
Interactive editorAdd, edit, delete, and drag-and-drop nodes with full undo/redo support
Multi-sheet supportSwitch between multiple canvases within a single .xmind file
Canvas panningToggle drag mode from the left toolbar to pan with left-click
Auto-saveChanges are written back to the .xmind file after a configurable debounce (default 500ms)
Manual saveCtrl/Cmd + S saves immediately
Markdown embedUse ![[diagram.xmind]] to render a read-only interactive preview inline (Reading & Live Preview modes)
Markdown linkUse [[diagram.xmind]] to create a clickable link that opens the XMind view
Export to MermaidExport mind map as Mermaid format to clipboard (paste directly into notes for rendering)
Open with XMind appRight-click menu option to open .xmind files with external XMind application
Theme followingAutomatically switches between light and dark themes with Obsidian
Responsive layoutAuto re-fits the view when splitting or resizing panes
InternationalizationFull support for English and Chinese (auto-detected from Obsidian settings)
Format compatibilitySupports both content.json (XMind 8+ / ZEN) and legacy content.xml formats
Cross-platformWorks on macOS, Windows, Linux, and Obsidian Mobile

Create & Open

Opening an XMind File

MethodHow
ClickClick any .xmind file in the file explorer
Context menuRight-click a .xmind file → Open with XMind App (opens in external app)
Context menuRight-click a folder → Create New XMind Mindmap
CommandRun XMinder: Create new XMind file

Embedding in a Markdown Note

# Inline read-only preview (click to open full editor)
![[my-diagram.xmind]]

# Clickable link that opens the XMind view
[[my-diagram.xmind]]

Exporting to Mermaid Mindmap

The exported Mermaid format can be pasted directly into notes where the Mermaid plugin renders it as a visual mind map:

mindmap
  root(("Central Topic"))
    Main Topic 1
      Subtopic 1
      Subtopic 2
    Main Topic 2
      Subtopic 3

Features & Shortcuts

Toolbar

Left toolbar (top-left corner):

ButtonDescription
Hand / PointerToggle canvas drag mode
CrosshairCenter and focus on root node
Question markShow keyboard shortcuts

Right-bottom toolbar:

ButtonDescription
Zoom outDecrease zoom level
Zoom inIncrease zoom level
ResetFit diagram to view and center
FullscreenToggle fullscreen mode

Keyboard Shortcuts

ShortcutAction
TabAdd child node
EnterAdd sibling node
Ctrl/Cmd + CCopy
Ctrl/Cmd + VPaste
Ctrl/Cmd + ZUndo
Ctrl/Cmd + SSave immediately

Command Palette

CommandDescription
XMinder: Create New XMind FileCreates a new blank .xmind file and opens it
XMinder: Export XMind as Mermaid MindmapExports as Mermaid mindmap to clipboard
XMinder: Fit XMind ViewResets zoom and centers the diagram
XMinder: Save XMind FileSaves immediately

Settings

Open Settings → Community Plugins → XMinder:

SettingDefaultDescription
Auto-save Delay500 msTime to wait after the last edit before auto-saving. Set to 0 to disable.
Embed Preview Height320 pxHeight of embedded mind map previews when using ![[file.xmind]].
Show "Open with XMind App" menuOnShow "Open with XMind App" in file context menu.
Enable Clipboard ExportOnEnable copying mind map as Mermaid format to clipboard. Disable to remove clipboard access.

Project Info

Project Structure

obsidian-xminder/
├── src/
│   ├── main.ts                        # Plugin entry point & lifecycle
│   ├── settings.ts                    # Settings definition and UI tab
│   ├── i18n.ts                        # Internationalization (en/zh)
│   ├── xmind/
│   │   ├── types.ts                   # Internal type definitions
│   │   ├── parser.ts                  # .xmind → XMindData (ZIP + JSON/XML)
│   │   ├── serializer.ts              # XMindData → .xmind (ZIP)
│   │   └── canvas.ts                  # Export to Obsidian Canvas format
│   ├── views/
│   │   ├── XMindView.ts               # FileView with mind-elixir renderer
│   │   └── LayoutEngine.ts            # Custom layout engine for node positioning
│   └── markdown/
│       ├── EmbedProcessor.ts          # ![[]] / [[]] post-processor (Reading mode)
│       └── LivePreviewProcessor.ts    # CodeMirror extension (Live Preview mode)
├── .github/
│   └── workflows/
│       └── release.yml                # CI/CD workflow with artifact attestation
├── styles.css                         # Source stylesheet
├── manifest.json                      # Obsidian plugin manifest
├── package.json
├── tsconfig.json
└── esbuild.config.mjs                 # Build configuration with dependency bundling

Environment Requirements

ToolMinimum Version
Node.js16.x
npm7.x

Install Dependencies

npm install

Development Build (watch mode)

npm run dev

To test with Obsidian, symlink the plugin folder into your vault:

ln -s /path/to/obsidian-xminder \
  "/path/to/your/vault/.obsidian/plugins/obsidian-xminder"

Then enable the plugin in Settings → Community Plugins and reload Obsidian after each change (Cmd+R / Ctrl+R).

Production Build

npm run build

Output in dist/:

dist/
├── main.js        # Bundled plugin (all dependencies inlined)
├── manifest.json
└── styles.css

Clean build (removes dist/ first):

npm run build:clean

Manual Deployment

  1. Build the plugin:

    npm install && npm run build
    
  2. Copy to your vault:

    mkdir -p "<your-vault>/.obsidian/plugins/obsidian-xminder"
    cp dist/{main.js,manifest.json,styles.css} \
      "<your-vault>/.obsidian/plugins/obsidian-xminder/"
    
  3. Enable the plugin in Settings → Community Plugins

GitHub Actions CI/CD

The repository includes a release workflow that:

  • Triggers on any git tag push
  • Builds the plugin with npm run build
  • Generates GitHub artifact attestations for build provenance
  • Creates a GitHub Release with main.js, styles.css, and manifest.json

To publish a release:

git tag -a v1.0.8 -m "Release v1.0.8"
git push origin v1.0.8

Key Dependencies

PackagePurpose
mind-elixirInteractive mind map renderer
jszipRead/write .xmind ZIP archives
obsidianObsidian plugin API
esbuildBundler
typescriptType checking

Platform Support

PlatformStatus
macOS✅ Fully supported
Windows✅ Fully supported
Linux✅ Fully supported
Obsidian Mobile (iOS / Android)✅ Supported

XMind File Format

.xmind files are ZIP archives. This plugin reads and writes:

EntryFormatVersion
content.jsonJSON array of sheetsXMind 8+ / ZEN (preferred)
content.xmlXML documentLegacy (read-only)
metadata.jsonJSONWritten on save

Files in content.xml format are upgraded to content.json on first save.


License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.