How rktim/markd works
markd is a terminal document viewer. The workflow parses a file argument, loads Markdown directly or converts other formats through MarkItDown, then either prints the resulting text or opens an interactive viewer. The TUI supports scrolling, resizing, mouse and keyboard theme selection, and themed rendering. Conversion may locate an existing MarkItDown executable or provision one in a private Python environment. The README documents PDF, Word, Excel, and PowerPoint support. TUI internals are only partially sampled, so the graph omits uncertain rendering details.
Main entry points: main.rs Application entry · document.rs Document loader · tui.rs TUI controller · cli.rs Argument parsing
Components 15
Entry and output
- Application entry
src/main.rs - Argument parsing
src/cli.rs - Print output
src/document.rs
Document handling
- Document loader
src/document.rs - Markdown reader
src/document.rs - MarkItDown setup
src/document.rs - Loaded content
src/document.rs
Interactive viewer
- TUI controller
src/tui.rs - Theme definitions
src/theme.rs - Terminal rendering
src/tui.rs
Other components
- User
- Terminal
- Input document
- Python environment
- MarkItDown converter
Connections 19
- User → Argument parsing: provides arguments
- Argument parsing → Application entry: returns options
- Application entry → Document loader: loads file
- Input document → Document loader: reads input
- Document loader → Markdown reader: reads Markdown
- Document loader → MarkItDown setup: ensures converter
- MarkItDown setup → Python environment: provisions if needed
- MarkItDown setup → MarkItDown converter: locates executable
- Markdown reader → Loaded content: returns content
- MarkItDown converter → Loaded content: returns converted text
- Application entry → Print output: prints in print mode
- Application entry → TUI controller: starts viewer
- Loaded content → Print output: supplies content
- Loaded content → TUI controller: supplies content
- TUI controller → Theme definitions: selects theme
- TUI controller → Terminal rendering: renders interface
- Theme definitions → Terminal rendering: provides styles
- Terminal rendering → Terminal: writes display
- User → Terminal: uses controls