A fast, native macOS Markdown viewer with streaming support. Pipe Markdown to it, open a file directly, or launch an empty window for quick previews. Built with cacao and pulldown-cmark.
- Native macOS GUI (AppKit/WebView)
- Live streaming: Pipe Markdown to stdin and see live updates
- Open files directly: Pass a markdown file as an argument to view it instantly
- GitHub-flavored Markdown: Tables, footnotes, strikethrough, task lists
- Mermaid diagram support: Interactive flowcharts, sequence diagrams, and more
- LaTeX/Math rendering: KaTeX support for mathematical expressions
- External link handling: Opens links in your browser
- Customizable appearance: Font family, size, and theme preferences
Download the latest release for your platform from the releases page:
- macOS (Intel):
homo-macos-amd64 - macOS (Apple Silicon):
homo-macos-arm64
Then make it executable and add to your PATH:
chmod +x homo-macos-arm64
sudo mv homo-macos-arm64 /usr/local/bin/homo- Rust (latest stable, install here)
- macOS 11+ (Apple Silicon or Intel)
# Clone the repo
$ git clone https://github.com/CJHwong/homo.git
$ cd homo
# Build the app
$ cargo build --release
# Optionally, install to your Cargo bin directory
$ cargo install --path .echo '# Hello, world!' | homoOr stream a file:
tail -f README.md | homohomo README.mdsrc/main.rs— Entry point, handles GUI/streaming mode detectionsrc/gui/— Complete GUI implementation using AppKit bindingsdelegate.rs— App delegate handling window lifecycle and content updatesview.rs— WebView wrapper for rendering HTML with Mermaid supportwindow.rs— Window creation and managementtypes.rs— Style preferences and theme management
src/markdown/— Markdown parsing with syntax highlightingsrc/streaming.rs— Intelligent streaming with boundary detectionsrc/content.rs— DocumentContent struct for thread communicationsrc/menu.rs— Menu system with preferences and actionssrc/plugins/— Plugin system for extensible content processingmanager.rs— Plugin registration and execution managementmermaid.rs— Mermaid diagram rendering pluginkatex.rs— LaTeX/math rendering plugin
src/error.rs— Custom error types and handling
cargo runTo test streaming mode:
echo '## Streaming test' | cargo run --HOMO stores user preferences (font size, font family, theme) in macOS UserDefaults. These preferences persist across app launches.
View current preferences:
defaults read homo StylePreferencesReset preferences to defaults:
defaults delete homo StylePreferences- Font Family: System, Menlo, Monaco, Helvetica
- Font Size: Adjustable via keyboard shortcuts or menu
- Theme: Light, Dark, System (follows macOS appearance)
- ⌘ + = (or ⌘ + +): Increase font size
- ⌘ + -: Decrease font size
- ⌘ + 0: Reset font size to default
- ⌘ + 1: System font
- ⌘ + 2: Menlo font
- ⌘ + 3: Monaco font
- ⌘ + 4: Helvetica font
- ⌘ + L: Light theme
- ⌘ + D: Dark theme
- ⌘ + S: System theme (follows macOS appearance)
- ⌘ + T: Toggle mode (for displaying the raw Markdown)
- ⌘ + C: Copy selected text
- ⌘ + A: Select all text
- ⌘ + W: Close window
MIT