spinss

MDeX v2.4.0 (macOS · Windows · Linux · Tauri v2)

MDeX · 「エム・デックス」と発音します(/ˌemˈdɛks/)— アルファベットの M に続けて「dex」、2音節です。

プライバシーと AI 支援に重点を置いた多言語 Markdown リーダー&エディタ。すべてのファイルはローカルで処理され、デフォルトでネットワーク不要・アップロード不要・クラウド同期なし・広告なし・テレメトリなし。アトミック(クラッシュ耐性)保存により、クラッシュや停電時にもデータは失われません。v2.0 以降、オプションで AI アシスト編集も提供します — しかも完全にオフラインのまま利用できます: ローカルモデル(例: Ollama)はインターネット不要で、オンラインの AI サービス(OpenAI / DeepSeek / Anthropic / GLM / Gemini / Kimi など)だけが、設定して実行したときに限りリクエストを送信します。


🌐 言語

インターフェースは 17 言語 で提供されます: English, 简体中文, Français, Deutsch, Español, Português, Italiano, Русский, 日本語, 한국어, العربية, हिन्दी, ਪੰਜਾਬੀ, Tiếng Việt, Bahasa Indonesia, اردو, Монгол (Кирилл).


✨ 特徴


📦 インストール

Prebuilt downloads

Download the installer for your platform from either source:

Platforms: macOS (.dmg, arm64), Windows (.exe, NSIS installer), Linux (.deb / .rpm / .AppImage).


macOS

  1. Open the .dmg file, drag MDeX.app into /Applications.

  2. The app is unsigned (not notarized). On macOS 12+ - especially macOS 26 (Tahoe) - launching it fails with "MDeX.app is damaged and can't be opened." This is Gatekeeper, not real damage. Fix (choose one):

    Option A - Terminal (recommended):

    xattr -cr /Applications/MDeX.app
    codesign --force --deep --sign - /Applications/MDeX.app

    com.apple.provenance (new in macOS 26) is SIP-protected and can't be permanently removed; re-signing resets the signature so Gatekeeper lets it run.

    Option B - Finder right-click: In Finder, right-click (or Control-click) MDeX.app -> Open -> confirm "Open" in the dialog. This bypasses the double-click Gatekeeper check.

    Option C - System Settings: Double-click the app (let it be blocked), then go to System Settings -> Privacy & Security, scroll down, click "Open Anyway" next to the "MDeX.app was blocked" message.

  3. Launch with open /Applications/MDeX.app or double-click. The first launch may still prompt once - confirm via System Settings -> Privacy & Security -> Open Anyway, or right-click -> Open.

Note: Every time you update MDeX (reinstall a new version), repeat step 2. The only permanent fix is Apple Notarization ($99/year Developer certificate).


Windows

  1. Download MDeX_x.x.x_win.exe and double-click to run.
  2. SmartScreen may show "Windows protected your PC" (because the app is unsigned). Click "More info" -> "Run anyway".
  3. Follow the NSIS installer wizard to complete installation.
  4. Launch from the Start Menu or desktop shortcut.

If Windows Defender quarantines the file, restore it: Windows Security -> Virus & threat protection -> Protection history -> Allow on device.


Linux

Debian / Ubuntu (.deb):

sudo dpkg -i MDeX_x.x.x_amd64.deb
# If missing dependencies:
sudo apt-get install -f

Then launch from the application menu or run mdex in terminal.

Fedora / RHEL (.rpm):

sudo rpm -i MDeX_x.x.x_x86_64.rpm

AppImage (all distros):

chmod +x MDeX_x.x.x_amd64.AppImage
./MDeX_x.x.x_amd64.AppImage

If AppImage won't launch, install FUSE: sudo apt install libfuse2 (Debian/Ubuntu) or sudo dnf install fuse (Fedora).


⌨️ ショートカット

macOS では 、Windows / Linux では Ctrl を使います。

ショートカット アクション
⌘/Ctrl + N 新規作成
⌘/Ctrl + O ファイルを開く
⌘/Ctrl + S 保存
⌘/Ctrl + Shift + S 名前を付けて保存
⌘/Ctrl + W タブを閉じる
⌘/Ctrl + Shift + W ウィンドウを閉じる
⌘/Ctrl + F 検索
⌘/Ctrl + H 置換
⌘/Ctrl + B / I / E 太字 / 斜体 / インラインコード
⌘/Ctrl + K リンクを挿入
Tab 2スペースインデント
Alt/Option + ドラッグ 矩形(列)選択
Alt/Option + Shift + ←↑↓→ 列選択を拡張
Esc 列選択をキャンセル
⌘/Ctrl + =/−/0 最後にクリックしたペイン(エディタまたはプレビュー)をズーム:拡大 / 縮小 / リセット
⌘/Ctrl + J AI アシスト編集

複数のウィンドウを開いている場合、ショートカットはフォーカスのあるウィンドウにのみ作用します。画像ビューアウィンドウが開いているとき、⌘/Ctrl + =/−/0は画像をズームします。


📝 チートシート

Markdown: 見出し # / ## / ###、太字 **text**、斜体 *text*、取り消し線 ~~text~~、インラインコード `code`、コードブロック(三連バッククォート、言語指定も可)、引用 > text、リスト - / 1.、タスクリスト - [ ] / - [x]、リンク [text](url)、画像 ![alt](url)、区切り線 ---、テーブル | A | B |

数式: インライン $E = mc^2$、ブロック $$\int_0^1 x\,dx$$(複数行にまたがっても可)。LaTeX 構文を使用し、KaTeX でレンダリング。コードブロック内の $ は数式の区切りとして扱われません。align / aligned、行列、cases などの一般的な環境に対応します。

引用: 本文中に [@key][@a; @b] と書き(LaTeX 互換の \cite{key})、```bibtex ブロックで文献ライブラリを埋め込むか、「Refs」ボタンで .bib を読み込みます。末尾に参考文献リストが生成され、本文中の [n] はクリックできます。


📤 エクスポート(名前を付けて保存)

「名前を付けて保存」をクリックして形式を選択します:


🔒 オフラインとセキュリティ


🛠️ ソースからビルド

ソースコード: https://github.com/fwzheng/mdex. ビルド手順はリポジトリ内の説明に従ってください(セットアップ・依存関係・ビルドコマンドはそちらに記載)。


📁 プロジェクト構成

markdown/
├── app-shell.html          # frontend shell (HTML+CSS); app logic lives in src/app.js
├── src/
│   ├── app.js              # application logic (// @ts-check; inlined into dist by build-html.mjs)
│   ├── i18n.js            # 17-language UI strings (pure data; window.I18N, split from app.js)
│   ├── help.js            # help-document data (HELP_STRINGS + SK/sc/CITE_HELP_*, window.HELP_DATA)
│   └── globals.d.ts        # vendor / Window type declarations for type-checking
├── tsconfig.json           # type-check config (tsc --noEmit; no bundler)
├── tools/
│   ├── fetch-vendor.mjs    # one-time: download deps into vendor/ + integrity lock (online only here)
│   ├── build-html.mjs      # inline vendor + src/app.js + i18n.js + help.js into dist/index.html (KaTeX fonts → base64)
│   └── test-pure.mjs       # frontend pure-function tests (npm test)
├── dist/index.html         # build output: self-contained single file (Tauri frontendDist)
├── vendor/                 # download cache + integrity.json (.gitignore)
├── package.json            # @tauri-apps/cli + typescript(dev) + scripts
└── src-tauri/
    ├── Cargo.toml          # tauri 2 + dialog / single-instance + encoding_rs
    ├── build.rs            # tauri_build::build()
    ├── tauri.conf.json     # 1200×750 window, strict CSP, icons, .md association, menu hooks
    ├── capabilities/default.json
    ├── icons/              # full icon set from `cargo tauri icon`
    └── src/{main.rs, lib.rs}   # menus + file IO + multi-window routing + atomic write / file ownership

🎨 カスタマイズ

変更内容 場所
アプリ名 / Bundle ID src-tauri/tauri.conf.jsonproductName / identifier
ウィンドウサイズ tauri.conf.jsonapp.windows[0](既定 1200×750)
アイコン ソース画像を差し替えて npm run icon
テーマカラー / フォント app-shell.html 先頭の :root CSS 変数
メニュー項目 src-tauri/src/lib.rsbuild_menu()
UI 文字列 / ヘルプ src/app.jsI18N / HELP_STRINGS
依存関係のバージョン tools/fetch-vendor.mjs 先頭の VERSIONS(その後 npm run fetch -- --force

📄 ライセンス

本プロジェクト自身のコードは Apache License 2.0 でオープンソースです。

サードパーティコンポーネント:本プロジェクトは一部のサードパーティコンポーネント(marked、KaTeX、highlight.js、DOMPurify、jsPDF、html2canvas-pro、turndown、mermaid、@retorquere/bibtex-parser、Tauri など)を使用しています。それぞれの著作権およびライセンス表記は該当ソースファイルを参照してください。これらのコンポーネントはそれぞれ MIT、BSD-3-Clause、Apache-2.0、MPL-2.0 などのオープンソースライセンスに従います。

配布要件:Apache-2.0 ライセンスに基づき、本プロジェクトを再配布する場合は LICENSE および NOTICE ファイルを保持してください。ソースファイルを改変した場合は、該当ファイルに明確にその旨を記載してください。


📬 連絡先

問題やご提案はこちらまで: fw@spinss.cn