seymores/mdr

TUI Markdown Reader

5

stars

26

commits

Rust

primary language

Sep 12, 2026

updated

README

mdr - Markdown Beeline Reader

A small, fast TUI markdown reader for the terminal. Clean pastel theme with BeeLine gradients for line tracking, mouse scroll + hover URL previews, keyboard-first navigation, and solid markdown coverage including tables and code blocks.

Screenshot

Screenshot

Features

  • Terminal UI with a pastel color theme.
  • BeeLine-style gradient for easier line tracking (disable with --no-beeline, toggle with b).
  • Plain mode toggle (m) for minimal styling.
  • Multi-document queue with visual current-file indicator ([current/total] path in the title).
  • Startup markdown discovery from mixed file and directory inputs.
  • In-app markdown filesystem browser (o) starting from current working directory.
  • Picker traversal support: enter directories, go to parent, and open markdown files directly.
  • Keyboard navigation: Up/Down, Space or Tab for page down, h for commands.
  • Mouse wheel scrolling and hover to show link URLs.
  • Mouse drag selection with highlighting; press y or Ctrl+C to copy selected text.
  • Paste clipboard text as a new document with Ctrl+V or your terminal's paste command.
  • Basic markdown styling for headings, lists, emphasis, inline code, blockquotes, and rules.
  • Tables with column fitting and multi-line cell wrapping (headers preserved).
  • Scrollbar that hides when all content fits on screen.
  • Search with /, next/prev via n/N, and match highlighting (current match emphasized).
  • Links are underlined and colored; press Enter to open the nearest link.

Help Screenshot

Usage

cargo run -- path/to/file.md

Queue startup from mixed file + directory inputs:

cargo run -- path/to/file.md docs/

Screenshot

Disable BeeLine styling:

cargo run -- --no-beeline path/to/file.md

Install a local release build:

cargo install --path . --locked

Key Bindings

  • Up/Down: Scroll line by line
  • Space or Tab: Page down
  • Backtab: Page up
  • ]: Next document in queue
  • [: Previous document in queue
  • g: Go-to-document dialog for queue navigation
  • o: Open markdown filesystem browser (from current working directory)
  • /: Search
  • n / N: Next / previous match
  • b: Toggle BeeLine
  • m: Toggle plain mode
  • h: Help
  • q: Quit
  • Enter: Open nearest link
  • Left drag: Select document text; dragging across a link selects without opening it
  • y / Ctrl+C: Copy selected text to the system clipboard
  • Esc: Clear selection
  • Ctrl+V: Paste clipboard text as a new document

Copy and paste

Drag over text, then press y or Ctrl+C. Selection works in either direction and across wrapped lines. Copied text preserves logical line breaks and code indentation without adding line breaks for screen wrapping. In plain mode (m), it copies the displayed markdown source. A short footer message reports copy success or clipboard errors.

A simple click opens a link when the mouse button is released. Scrolling keeps a completed selection; scrolling during a drag extends it. Opening an overlay, switching documents or display modes, or resizing the terminal clears selection.

Use Ctrl+V to read the system clipboard, or use your terminal's paste command (commonly Cmd+V on macOS). Bracketed paste opens the text as a new [clipboard] document, including when a picker is open. Whitespace-only pastes are ignored. The reader does not edit existing files.

The highlight is an application selection, so your terminal's Copy menu may not see it. Use y or Ctrl+C; the footer shows the copy controls while text is selected and confirms a successful write. Cmd+C is also supported when the terminal forwards it to the application. System clipboard access requires an available clipboard service; on Linux the app retains clipboard ownership while running, and persistence after exit depends on the desktop's clipboard manager.

Cmd+C in iTerm2

To copy an mdr selection with Cmd+C:

  1. Open Settings → Profiles → your profile → Keys → Key Mappings.
  2. Add a mapping with Cmd+C as the keyboard shortcut.
  3. Choose Copy or send ^C as the action and save.

iTerm2 will copy its own selection when one exists; otherwise, it sends Ctrl+C to mdr to copy the application's selection. This mapping applies throughout the profile: outside mdr, Cmd+C with no terminal selection acts as Ctrl+C and may interrupt the running command. See the iTerm2 key mapping documentation.

Install

cargo install --path . --locked

Build

cargo build --release

Notes

  • The UI is intentionally lightweight; rendering is plain-text with styling rather than full layout.
  • Tables wrap long cells vertically to fit the current viewport width.

Changelog

0.6.0 — 2026-09-12

  • Added mouse drag selection across wrapped lines, with Unicode-aware highlighting and copying that preserves logical line breaks and code indentation.
  • Added y and Ctrl+C to copy selected text to the system clipboard, with a visible copy hint and success or error feedback. Cmd+C works when forwarded by the terminal; see the iTerm2 setup above.
  • Changed mouse links to open on release, so dragging across a link selects text without opening it.
  • Unified clipboard and bracketed paste handling to open pasted text as a new document, including from overlays.
  • Fixed wrapped-row counts, scrolling and mouse coordinates, combining-character selection, overlapping search highlights, and typing q or / in search.
  • Split UI input, layout, selection, overlays, clipboard, and terminal lifecycle into focused modules; shared markdown file filtering and cached document preparation reduce duplication and repeated rendering work.
  • Added terminal cleanup on error and unwind paths, plus regression coverage for selection, clipboard behavior, search, and layout.

0.5.0

  • Added clipboard paste as a new [clipboard] document, including bracketed paste and pasting from overlays.

Contributors

seymores

26 commits

seymores/mdr

TUI Markdown Reader

5

stars

26

commits

Rust

primary language

Sep 12, 2026

updated

README

mdr - Markdown Beeline Reader

A small, fast TUI markdown reader for the terminal. Clean pastel theme with BeeLine gradients for line tracking, mouse scroll + hover URL previews, keyboard-first navigation, and solid markdown coverage including tables and code blocks.

Screenshot

Screenshot

Features

  • Terminal UI with a pastel color theme.
  • BeeLine-style gradient for easier line tracking (disable with --no-beeline, toggle with b).
  • Plain mode toggle (m) for minimal styling.
  • Multi-document queue with visual current-file indicator ([current/total] path in the title).
  • Startup markdown discovery from mixed file and directory inputs.
  • In-app markdown filesystem browser (o) starting from current working directory.
  • Picker traversal support: enter directories, go to parent, and open markdown files directly.
  • Keyboard navigation: Up/Down, Space or Tab for page down, h for commands.
  • Mouse wheel scrolling and hover to show link URLs.
  • Mouse drag selection with highlighting; press y or Ctrl+C to copy selected text.
  • Paste clipboard text as a new document with Ctrl+V or your terminal's paste command.
  • Basic markdown styling for headings, lists, emphasis, inline code, blockquotes, and rules.
  • Tables with column fitting and multi-line cell wrapping (headers preserved).
  • Scrollbar that hides when all content fits on screen.
  • Search with /, next/prev via n/N, and match highlighting (current match emphasized).
  • Links are underlined and colored; press Enter to open the nearest link.

Help Screenshot

Usage

cargo run -- path/to/file.md

Queue startup from mixed file + directory inputs:

cargo run -- path/to/file.md docs/

Screenshot

Disable BeeLine styling:

cargo run -- --no-beeline path/to/file.md

Install a local release build:

cargo install --path . --locked

Key Bindings

  • Up/Down: Scroll line by line
  • Space or Tab: Page down
  • Backtab: Page up
  • ]: Next document in queue
  • [: Previous document in queue
  • g: Go-to-document dialog for queue navigation
  • o: Open markdown filesystem browser (from current working directory)
  • /: Search
  • n / N: Next / previous match
  • b: Toggle BeeLine
  • m: Toggle plain mode
  • h: Help
  • q: Quit
  • Enter: Open nearest link
  • Left drag: Select document text; dragging across a link selects without opening it
  • y / Ctrl+C: Copy selected text to the system clipboard
  • Esc: Clear selection
  • Ctrl+V: Paste clipboard text as a new document

Copy and paste

Drag over text, then press y or Ctrl+C. Selection works in either direction and across wrapped lines. Copied text preserves logical line breaks and code indentation without adding line breaks for screen wrapping. In plain mode (m), it copies the displayed markdown source. A short footer message reports copy success or clipboard errors.

A simple click opens a link when the mouse button is released. Scrolling keeps a completed selection; scrolling during a drag extends it. Opening an overlay, switching documents or display modes, or resizing the terminal clears selection.

Use Ctrl+V to read the system clipboard, or use your terminal's paste command (commonly Cmd+V on macOS). Bracketed paste opens the text as a new [clipboard] document, including when a picker is open. Whitespace-only pastes are ignored. The reader does not edit existing files.

The highlight is an application selection, so your terminal's Copy menu may not see it. Use y or Ctrl+C; the footer shows the copy controls while text is selected and confirms a successful write. Cmd+C is also supported when the terminal forwards it to the application. System clipboard access requires an available clipboard service; on Linux the app retains clipboard ownership while running, and persistence after exit depends on the desktop's clipboard manager.

Cmd+C in iTerm2

To copy an mdr selection with Cmd+C:

  1. Open Settings → Profiles → your profile → Keys → Key Mappings.
  2. Add a mapping with Cmd+C as the keyboard shortcut.
  3. Choose Copy or send ^C as the action and save.

iTerm2 will copy its own selection when one exists; otherwise, it sends Ctrl+C to mdr to copy the application's selection. This mapping applies throughout the profile: outside mdr, Cmd+C with no terminal selection acts as Ctrl+C and may interrupt the running command. See the iTerm2 key mapping documentation.

Install

cargo install --path . --locked

Build

cargo build --release

Notes

  • The UI is intentionally lightweight; rendering is plain-text with styling rather than full layout.
  • Tables wrap long cells vertically to fit the current viewport width.

Changelog

0.6.0 — 2026-09-12

  • Added mouse drag selection across wrapped lines, with Unicode-aware highlighting and copying that preserves logical line breaks and code indentation.
  • Added y and Ctrl+C to copy selected text to the system clipboard, with a visible copy hint and success or error feedback. Cmd+C works when forwarded by the terminal; see the iTerm2 setup above.
  • Changed mouse links to open on release, so dragging across a link selects text without opening it.
  • Unified clipboard and bracketed paste handling to open pasted text as a new document, including from overlays.
  • Fixed wrapped-row counts, scrolling and mouse coordinates, combining-character selection, overlapping search highlights, and typing q or / in search.
  • Split UI input, layout, selection, overlays, clipboard, and terminal lifecycle into focused modules; shared markdown file filtering and cached document preparation reduce duplication and repeated rendering work.
  • Added terminal cleanup on error and unwind paths, plus regression coverage for selection, clipboard behavior, search, and layout.

0.5.0

  • Added clipboard paste as a new [clipboard] document, including bracketed paste and pasting from overlays.

Contributors

seymores

26 commits

Languages

Rust

100.0%