Minimalist dual-pane Markdown editor & previewer built with egui and eframe
md-echo is a fast, native Markdown editor written in Rust using eframe and egui.
It displays side-by-side editing and live preview of Markdown with CommonMark compliance — perfect for quick note editing, technical docs, or journaling.
- Dual-Pane Interface: Edit on the left, preview on the right.
- Live Markdown Rendering: Powered by
egui_commonmark. - File Management: New, Open, Save, Save As, and Exit.
- Unsaved Changes Protection: Confirms before discarding or exiting unsaved work.
- Hotkeys:
- Ctrl+N — New file
- Ctrl+O — Open file
- Ctrl+S — Save
- Ctrl+Shift+S — Save As
- Ctrl+Q — Quit
- Configurable Theme & Workspace: Customize colors, accent, and default working directory via
config.toml. - Markdown Tooling: Run linter (Ctrl+Shift+L) and formatter (Ctrl+Shift+F) commands with in-app output.
- Status Bar: Shows file name, save state, and character count.
You’ll need the latest stable Rust toolchain and GTK development headers:
Fedora / RHEL:
sudo dnf install gtk3-develDebian / Ubuntu:
sudo apt install libgtk-3-devThen install the crate:
cargo install md-echoUpdate existing install:
cargo install md-echo --forceOr build locally:
git clone https://github.com/fibnas/md-echo
cd md-echo
cargo run --releaseRun the app:
md-echoThen:
- Type Markdown in the left pane.
- Watch the formatted output update instantly in the right pane.
- Use the File menu or shortcuts to open/save documents.
- Use the Tools menu or
Ctrl+Shift+L / Ctrl+Shift+Fto lint or format with your configured commands.
md-echo can open a file directly when you pass it as an argument:
md-echo notes.mdor with a full path:
md-echo ~/projects/todo.mdIf the file exists, it loads into the editor immediately. If it doesn’t, a new blank editor opens with that path ready for saving.
md-echo looks for an optional config file at ~/.config/md-echo/config.toml. Copy docs/config.example.toml to that location as a starting point:
mkdir -p ~/.config/md-echo
cp docs/config.example.toml ~/.config/md-echo/config.toml-
Working Directory: Set
working_dirto choose the initial folder for the file tree. -
Colors & Theme: Adjust the
[theme]table to switch betweendark/lightpresets and override hex colors:[theme] base = "dark" background = "#1E1E2E" text = "#CDD6F4" accent = "#89B4FA"
-
Markdown Lint & Format: Configure
[tools]entries with the command arrays to run. Defaults userumdlif available:[tools] lint = ["rumdl", "check"] lint_use_open_file = false format = ["rumdl", "fmt"] format_use_open_file = false
Trigger these commands from the Tools menu or with
Ctrl+Shift+L/Ctrl+Shift+F. Results (and formatter output) appear in the Tool Output window. -
Use the current file: Set
lint_use_open_fileorformat_use_open_filetotrueto execute the command against the file open in md-echo instead of a temporary buffer. The file must be saved (no pending edits) before running these modes.
eframe— Native app framework for eguiegui_commonmark— CommonMark rendereregui_extras— Layout helpersrfd— Native file dialogs- Standard library I/O for fast read/write
Licensed under the MIT License.
Pull requests are welcome. Feel free to fork, tinker, and open an issue or PR if you have improvements.
"Write, preview, and echo your thoughts — all in one window."
