spinss

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

MDeX · "em-dex"(/ˌ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로 오픈소스입니다.

제3자 구성 요소: 이 프로젝트는 일부 제3자 구성 요소(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