spinss

MDeX v2.2.1 (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, اردو, Монгол (Кирилл).


✨ 特徴


⌨️ ショートカット

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] はクリックできます。


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

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


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


📦 インストール

ビルド済みダウンロード

いずれかのソースからお使いのプラットフォームのインストーラをダウンロード:

macOS (.dmg, universal arm64 + x86_64), Windows (.exe, NSIS installer), Linux (.deb / .rpm / .AppImage).

macOS で署名なしアプリを開く(Gatekeeper をバイパス)

このアプリはデベロッパ署名 / 公証を受けていません(オフライン環境では通常、オンライン公証ができません)。macOS 12+、とくに macOS 26 (Tahoe) では、.dmg から直接起動したり、コピー直後のビルドを起動すると "MDeX.app is damaged and can't be opened." で失敗します。これは Gatekeeper の動作であり、実際の破損ではありません。Terminal で修正してください:

  1. まず MDeX.app.dmg から /Applications へドラッグしてください — dmg から直接実行してはいけません(App Translocation と com.apple.provenance 属性の原因になり、これが macOS 26 で「破損」と表示される本当の原因です)。
  2. 属性を消去して再署名します:
    xattr -cr /Applications/MDeX.app
    codesign --force --deep --sign - /Applications/MDeX.app

    com.apple.provenance は SIP で保護されており、sudo を使っても削除できません。再署名すると署名がリセットされ、Gatekeeper が起動を許可します。spctl はアドホック署名に対して rejected を報告し続けますが、これは想定通りで、openブロックされません

  3. open /Applications/MDeX.app で起動してください(またはダブルクリック)。初回起動で一度だけプロンプトが出る場合があります — システム設定 → プライバシーとセキュリティ → このまま開く で確認するか、アプリを右クリック → 開く で進めてください。

🛠️ ソースからビルド

ソースコード: 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 ファイルを保持してください。ソースファイルを改変した場合は、該当ファイルに明確にその旨を記載してください。


📬 連絡先

問題やご提案はこちらまで: 郑法伟 (Fawei Zheng) fwzheng@bit.edu.cn