8 releases
| 0.1.0 | Nov 6, 2025 |
|---|---|
| 0.0.7 | Oct 25, 2025 |
#2937 in Command line utilities
120KB
1.5K
SLoC
md-echo
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.

Features
- 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.
Installation
You’ll need the latest stable Rust toolchain and GTK development headers:
Fedora / RHEL:
sudo dnf install gtk3-devel
Debian / Ubuntu:
sudo apt install libgtk-3-dev
Then install the crate:
cargo install md-echo
Update existing install:
cargo install md-echo --force
Or build locally:
git clone https://github.com/fibnas/md-echo
cd md-echo
cargo run --release
Usage
Run the app:
md-echo
Then:
- 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.
Opening a File from the Command Line
md-echo can open a file directly when you pass it as an argument:
md-echo notes.md
or with a full path:
md-echo ~/projects/todo.md
If the file exists, it loads into the editor immediately. If it doesn’t, a new blank editor opens with that path ready for saving.
Configuration & Customization
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 = falseTrigger 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.
Tech Stack
eframe— Native app framework for eguiegui_commonmark— CommonMark rendereregui_extras— Layout helpersrfd— Native file dialogs- Standard library I/O for fast read/write
License
Licensed under the MIT License.
Contributing
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."
Dependencies
~13–54MB
~853K SLoC