MDeX v2.4.0 (macOS · Windows · Linux · Tauri v2)
MDeX · произносится «эм-декс» (/ˌemˈdɛks/) — буква M, за которой следует «dex», два слога.
Многоязычное приложение для чтения и редактирования Markdown с акцентом на конфиденциальность и поддержку ИИ. Каждый файл обрабатывается локально — по умолчанию без сети, без загрузок на сервер, без облачной синхронизации, без рекламы, без телеметрии; атомарное (устойчивое к сбоям) сохранение исключает потерю данных при сбое или отключении питания. Начиная с v2.0, MDeX также предлагает опциональное редактирование текста с помощью ИИ — и при этом может оставаться полностью автономным: локальной модели (например, Ollama) интернет не требуется; сетевой запрос выполняет только онлайн-сервис ИИ (OpenAI / DeepSeek / Anthropic / GLM / Gemini / Kimi и т. д.), и только когда вы его настроите и запустите.
- Единый автономный HTML-фронтенд (без Vue / React); Tauri v2 предоставляет только нативную оболочку (окна, меню, диалоги выбора файлов).
- Нулевые сетевые запросы во время выполнения:
marked/KaTeX/highlight.js/DOMPurify/mermaid/jsPDF/html2canvas-pro/turndown/@retorquere/bibtex-parserи все шрифты KaTeX woff2 встроены / закодированы в base64 в единыйindex.html. - Поддерживаются
.md/.markdown/.html; приложение можно назначить обработчиком.mdпо умолчанию — открывайте двойным щелчком.
🌐 Языки
Интерфейс доступен на 17 языках: English, 简体中文, Français, Deutsch, Español, Português, Italiano, Русский, 日本語, 한국어, العربية, हिन्दी, ਪੰਜਾਬੀ, Tiếng Việt, Bahasa Indonesia, اردو, Монгол (Кирилл).
- Переключайтесь в любой момент через меню языка на панели инструментов; ваш выбор сохраняется между сессиями.
- Арабский отображается письмом справа налево (RTL) автоматически — основной текст, заголовки, маркеры списков и вся панель инструментов зеркально переносятся вправо; встроенные блоки кода, формулы LaTeX, английские термины и номера версий остаются слева направо и никогда не зеркалируются.
- Сам этот README переведён на все 17 языков — воспользуйтесь переключателем в самом верху страницы.
✨ Возможности
- Многовкладочность + многооконность: открывайте
несколько файлов одновременно; несохранённые изменения помечаются
точкой, при закрытии запрашивается подтверждение; закройте вкладку
средним щелчком. Двойной щелчок по
.mdоткрывает собственное окно (по одному файлу на окно); двойной щелчок по уже открытому файлу переводит фокус на это окно, а не открывает его заново. - Живое разделённое предпросмотр: перетаскивайте разделитель для изменения размера; кнопка на панели инструментов циклически переключает режимы «Разделённый / Редактор / Предпросмотр».
- Переход по щелчку: щёлкните в редакторе, чтобы прокрутить предпросмотр; щёлкните в предпросмотре, чтобы перевести курсор в редакторе.
- Поиск и замена: найти, заменить одно или все совпадения, с подсчётом количества.
- Математика: строчные
$…$и блочные$$…$$(а также\(...\),\[...\]), отображаются через KaTeX; длинные формулы переносятся по операторам или автоматически уменьшаются. - Подсветка кода: язык определяется автоматически; подсветка в больших документах лениво выполняется по видимой области для плавности.
- Диаграммы Mermaid: блок
```mermaidотображается как блок-схема / последовательность / классы / состояния / диаграмма Ганта / круговая и т. д.; щёлкните по диаграмме, чтобы открыть отдельное окно просмотра (масштаб / панорама / полноэкранный режим), которое обновляется в реальном времени при редактировании. - Изображения: вставить / перетащить / выбрать —
сохраняются в папку
<имяфайла>_images/рядом с документом с чистой относительной ссылкой (без встроенного base64); черновики используют временную папку, мигрирующую при сохранении; «Сохранить как» переносит изображения в цель; по умолчанию центрируются. - Масштаб шрифта: масштабируйте шрифты редактора и
предпросмотра независимо (элементы управления −/процент/+, или
⌘/Ctrl + =/−/0); сохраняется между перезапусками. - Таблицы: таблицы GFM; узкие таблицы центрируются по содержимому, широкие прокручиваются по горизонтали без обрезки.
- Цитирование (BibTeX): синтаксис
[@key]/\cite{key}, числовой стиль; в конце формируется список ссылок с двусторонними переходами между в текстовой[n]и записью; поддерживается встроенный блок```bibtexили отдельно загружаемый.bib. - Поддержка HTML: открывайте файлы
.htmlдля отображения; конвертируйте между HTML и Markdown. - Тема / язык: тёмная / светлая, 17 языков интерфейса (中文, English, Français, Deutsch, Русский, Italiano, 日本語, 한국어, Español, Português, العربية, हिन्दी, ਪੰਜਾਬੀ, Tiếng Việt, Bahasa Indonesia, اردو, Монгол (Кирилл) — арабский и урду автоматически справа налево).
- Автосохранение черновика: содержимое периодически сохраняется и восстанавливается после непредвиденного закрытия / сбоя.
- Подсчёт слов: в строке состояния отображаются символы / строки / слова в реальном времени, а также текущие строка и столбец.
- Перетаскивание: перетащите файл
.mdна окно, чтобы открыть его; перетащите изображение, чтобы вставить его. - Экспорт: сохранение как Markdown / HTML / PDF (векторный) / LaTeX.
- Цвет текста: палитра на панели обёртывает выделение
в
<span style="color:…">. - Редактирование с помощью ИИ: выделите текст и
нажмите
⌘/Ctrl + J(или кнопку на панели инструментов), чтобы ИИ доработал, расширил или изменил его тон; работает с онлайн-сервисами (OpenAI / DeepSeek / Anthropic / GLM / Gemini / Kimi и т. д.) и с локальной моделью, такой как Ollama, для полностью автономного использования; результат показывается в предпросмотре перед заменой оригинала, а API-ключ хранится только локально. - Назад / Вперёд: единая история по документам и
позициям курсора; кнопки ◀ ▶,
Alt+←/→. - Переход по ссылкам: клик по ссылке в предпросмотре открывает цель в новой вкладке (http — в системном браузере); текущий документ не заменяется.
📦 Установка
Prebuilt downloads
Download the installer for your platform from either source:
- GitHub Releases: https://github.com/fwzheng/mdex/releases
- Mirror site: https://www.spinss.cn/
Platforms: macOS (.dmg, arm64), Windows
(.exe, NSIS installer), Linux (.deb /
.rpm / .AppImage).
macOS
Open the
.dmgfile, dragMDeX.appinto/Applications.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.appcom.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.
Launch with
open /Applications/MDeX.appor 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
- Download
MDeX_x.x.x_win.exeand double-click to run. - SmartScreen may show "Windows protected your PC" (because the app is unsigned). Click "More info" -> "Run anyway".
- Follow the NSIS installer wizard to complete installation.
- 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) orsudo dnf install fuse(Fedora).
⌨️ Горячие клавиши
Используйте ⌘ на macOS, Ctrl на Windows /
Linux.
| Горячая клавиша | Действие |
|---|---|
⌘/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 |
Редактирование с помощью ИИ |
При нескольких открытых окнах горячие клавиши действуют только на окно в фокусе. Когда открыто окно просмотра изображений,
⌘/Ctrl + =/−/0масштабирует изображение.
📝 Краткая шпаргалка
Markdown: заголовки # / ## / ###,
полужирный **текст**, курсив *текст*,
зачёркивание ~~текст~~, строчный код `код`,
блоки кода (тройные обратные кавычки с указанием языка по желанию),
цитата > текст, списки - / 1., список задач
- [ ] / - [x], ссылка [текст](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 или загрузите
.bib кнопкой «Ссылки». В конце формируется список ссылок;
[n] в тексте кликабельны.
📤 Экспорт (Сохранить как)
Нажмите «Сохранить как» и выберите формат:
- Markdown (.md): сохранить исходник и обновить имя / путь текущей вкладки.
- HTML (.html): автономный HTML со встроенным CSS +
подсветкой кода; формулы сохранены как литерал
$…$и автоматически отображаются встроенным KaTeX. - PDF векторный: системный диалог печати, векторный вывод, чёткий при любом масштабе. Выберите «Сохранить как PDF».
- LaTeX (.tex): преобразуется в компилируемый
исходник
.tex(с documentclass и пакетами; формулы сохраняются как есть). Экспортируется копия.
🔒 Автономность и безопасность
- Нулевые сетевые запросы во время выполнения.
Артефакт сборки
dist/index.htmlсамопроверяется: отсутствуют внешние ссылкиsrc=/href=/url()/@import. - Строгий CSP (только локальный IPC, без WAN); все файлы читаются и пишутся локально, ничего не передаётся.
- Проверка: отключите Wi-Fi / отсоедините кабель и запустите — формулы, изображения, подсветка кода и Mermaid продолжают работать.
- В
dist/index.htmlвсё ещё присутствует около десятка строкhttps://github.com/…; все они находятся внутри лицензионных / исходных комментариев библиотекmarked/highlight.jsи т. п. — это простой текст, который никогда не инициирует запрос; оставлены без изменений из уважения к лицензиям open-source.
🛠️ Сборка из исходников
Исходный код: 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.json → productName /
identifier |
| Размер окна | tauri.conf.json → app.windows[0] (по
умолчанию 1200×750) |
| Иконки | замените исходное изображение, затем npm run icon |
| Цвета темы / шрифты | CSS-переменные :root в начале
app-shell.html |
| Пункты меню | build_menu() в src-tauri/src/lib.rs |
| Текст интерфейса / документ справки | I18N / HELP_STRINGS в
src/app.js |
| Версии зависимостей | VERSIONS в начале tools/fetch-vendor.mjs
(затем 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