XMind Open

by Nory
5
4
3
2
1
Score: 50/100

Description

Reviews

No reviews yet.

Stats

0
stars
34
downloads
0
forks
6
days
6
days
6
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
4
commits

Latest Version

7 days ago

Changelog

Show .xmind files in Obsidian's file explorer, preview them inline, and open them in the system default application — without ever parsing the mindmap.

Previously Obsidian hid .xmind files entirely: the file explorer only lists files whose extension is registered in viewRegistry. This plugin registers the extension, so these files now also show up in the quick switcher and in search.

Features

  • .xmind files appear in the file explorer, quick switcher and search
  • Inline preview of the map image XMind itself stores inside the archive — a single ZIP entry (Thumbnails/thumbnail.png) is read; the mindmap data (content.json) is never parsed
  • Clicking a file opens it in the system default app; an explicit XMind executable path with registry auto-detection covers machines where the .xmind association is missing or has been taken over by another program
  • Chinese / English interface, following Obsidian's own language setting

Assets

File Required
main.js yes
manifest.json yes
styles.css yes

Download all three into <vault>/.obsidian/plugins/xmind-open/, restart Obsidian, then enable XMind Open in Settings → Community plugins.

Notes

  • Desktop only (isDesktopOnly: true) — it launches an external application.
  • No network requests, ever. Nothing is written to your vault.
  • See README, Chinese README and CHANGELOG.

README file from

Github

XMind Open

English | 中文

Show .xmind files in Obsidian's file explorer, preview them inline, and open them in the system default application — without ever parsing the mindmap.


The problem

Obsidian only lists a file in the file explorer when its extension is registered in the view registry:

isSupportedFile(file) =
  vault.getConfig('showUnsupportedFiles') || viewRegistry.isExtensionRegistered(file.extension);

.xmind is not one of the built-in extensions, so your mindmaps are invisible in the vault — in the file explorer, the quick switcher and search alike.

Installing a mindmap plugin does not necessarily fix this. A plugin may register a view for a file type without registering the extension, and those are two different things.

What this plugin does

Shows .xmind files appear in the file explorer with an xmind tag
Previews Renders the map preview XMind stores inside the archive
Opens Hands the file to your operating system, so XMind starts as usual
Never Parses, reads, or modifies the mindmap data

Installation

Manual

  1. Download or clone this repository.
  2. Copy the folder into <your vault>/.obsidian/plugins/xmind-open/.
  3. In Obsidian, reload the plugins list (Settings → Community plugins), then enable XMind Open.

Desktop only (Windows, macOS, Linux). Opening a file in an external application is not available on mobile.

Usage

Click any .xmind file. A tab opens with the map preview and an Open with system default app button.

You can also right-click the file in the explorer and pick Open with system default app from the context menu.

Settings

Setting Default Description
Open with the system app automatically off Off, the tab shows the preview and waits for a click. On, opening a file launches the system application immediately.
Show preview image on Renders the preview image stored inside the archive.
XMind executable path (empty) Leave empty to use the OS file association. Set a path only if that association is missing or has been taken over by another program.

About the executable path

By default the plugin never looks for XMind. It hands the file to the operating system, which resolves .xmind through its own file association — so the plugin works regardless of where XMind is installed, and needs no configuration.

That design has one failure mode: if nothing is associated with .xmind, or another program has claimed it, opening does nothing useful. For those cases the settings accept an explicit path, and the Auto-detect button will look for it by:

  1. reading the current .xmind association from the registry (HKCR\.xmind → shell\open\command), then
  2. checking the usual install locations (%ProgramFiles%, %ProgramFiles(x86)%, %LOCALAPPDATA%, …).

A detected path is only accepted if the file actually exists, so a stale registry entry is never adopted.

When a path is configured it takes priority, and a failure to launch reports the reason instead of silently falling back — otherwise a broken configuration would look like it worked.

How the preview works

An .xmind file is a plain ZIP archive, and XMind stores a pre-rendered image of the map at Thumbnails/thumbnail.png. Showing it therefore requires reading one entry out of a ZIP — not understanding the XMind document format. The mindmap data (content.json) is never opened.

The plugin ships a small ZIP reader (locate the End Of Central Directory, walk the central directory, inflate the single deflate entry) rather than bundling a library, since the plugin is a single file with no build step.

Everything degrades quietly. A missing preview entry, a corrupted archive, or an oversized image simply means no picture this time — the file still opens normally.

Permissions and system access

To do its job the plugin touches a few things outside your vault. They are listed here rather than buried in the settings.

What Why
Reads Thumbnails/thumbnail.png from the .xmind file you open That is the preview image XMind itself stores. Nothing else inside the archive is read.
Resolves the absolute path of that file The operating system needs a real path before it can open anything.
Launches the application associated with .xmind This is the plugin's main action — opening your mindmap in XMind.
Optionally launches one specific executable that you configure Only if you fill in XMind executable path. Leave it empty and the plugin never runs anything you did not ask for.

It does not walk directories, does not read other files inside or outside your vault, and does not upload anything anywhere.

Privacy

  • No network requests, ever.
  • Nothing is written to your vault.
  • From each .xmind file you open, exactly one entry (Thumbnails/thumbnail.png) is read, and the decoded result is cached in memory only, keyed by path and modification time.

Language

The interface follows Obsidian's own language setting: Chinese for a Chinese UI, English for everything else.

Development

The plugin is a single CommonJS file with no build step. main.js is the only entry point Obsidian loads.

An offline test suite lives in tests/. It runs the real plugin code against a stubbed obsidian module and a jsdom document, so no Obsidian installation is needed:

# 88 assertions: extension registration, the view, the opening chain,
# thumbnail extraction, custom-path handling and localisation
node tests/run-tests.js

# 20 mutants: each one deliberately breaks a behaviour, and the suite
# must fail — otherwise the corresponding test proves nothing
node tests/mutate.js

# cross-check the ZIP reader against a real .xmind file, comparing the
# extracted bytes with Python's zipfile
node tests/verify-thumbnail.js /path/to/file.xmind

npm install pulls in jsdom, the only development dependency — the plugin itself ships with none.

License

MIT — see LICENSE.