Skip to main content

Fast Markdown previewer with GitHub-dark theme, sidebar TOC, multi-file tabs, and .openmd.css theming

Project description

openmd

Markdown for humans — not AI models.

I got tired of reading raw Markdown with less or opening VS Code/Cursor just to see it nicely rendered. So I built openmd.

Run openmd *.md (or any Markdown files) from the shell and a window pops up with:

  • Tabs for multiple files (up to 6)
  • Live reload when you save in your editor
  • Mermaid diagrams and KaTeX math
  • Collapsible navigation sidebar (TOC)
  • Full customization via .openmd.css

No browser, no TUI — just proper rendering with nice fonts and styles. It runs in the background so the window stays completely independent.

Built this for myself and I use it every day - because nice-looking text matters! 🤣

Python 3.8+ License: MIT Platform: macOS PyPI version

GitHub: RufusLin/openmd

Warning - Lazy Maintainer: Yeah, not a fan of reading PRs, but will pay attention to issues to fix bugs. Feel free to fork, but remember to give credit, please.🙏🏻

X: @rufuslinjapan


Usage

# Open a single file
openmd README.md

# Open multiple files (each in its own tab)
openmd doc1.md doc2.md doc3.md

# No arguments — interactive picker (choose from .md files in current directory)
openmd

# Glob expansion
openmd docs/*.md

Shell aliases (optional)

Add to your ~/.zshrc or ~/.bashrc for quick access to remote files:

# Remote preview via SSH (requires a 'home' SSH alias in ~/.ssh/config)
remotemd() {
    local remote_path="$1"
    local filename=$(basename "$remote_path")
    local tmp_file="/tmp/remote_preview_${filename}.md"
    scp "home:$remote_path" "$tmp_file" && \
    openmd "$tmp_file" >/dev/null 2>&1 &
}

What it looks like

openmd with multiple tabs and TOC sidebar Mermaid diagram and KaTeX math rendered

(Click any image to enlarge)

Features

  • GitHub-dark theme — comfortable reading in low-light environments. BUT! Change it to whatever you like in .openmd.css
  • Live reload — the preview updates instantly when the file is saved; no manual refresh needed
  • Mermaid diagrams — fenced ```mermaid blocks render automatically via CDN
  • KaTeX math — Formulae? inline $…$ and display $$…$$ expressions render out of the box
  • Collapsible sidebar TOC — hierarchical, of course; click any heading to jump to it
  • Multi-file tabs — pass multiple .md files (even *.md globs) and each opens in its own tab, max 6
  • Interactive file picker — run with no arguments and choose from .md files in the current directory via a curses-based picker — no need to copy and paste file names
  • Remote preview — optional remotemd shell alias pulls a file from a remote host via scp and opens it instantly
  • Keyboard shortcutsEsc closes the window; arrow keys navigate the sidebar

Requirements

Note: Mermaid and KaTeX require an internet connection to load from CDN.


Installation

pip (recommended)

pip install openmd

After installing, the openmd command is available in your shell.

From source

git clone https://github.com/RufusLin/openmd.git
cd openmd
pip install -e .

Keyboard shortcuts in sidebar

Key Action
Esc Close the preview window
/ Navigate the sidebar TOC
Return Jump to selected section

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openmd-1.4.3.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openmd-1.4.3-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file openmd-1.4.3.tar.gz.

File metadata

  • Download URL: openmd-1.4.3.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for openmd-1.4.3.tar.gz
Algorithm Hash digest
SHA256 f07ede549f5baea1dfee9efc592e3531ed24ed8e1ee5b6f0e2d1ede46517601d
MD5 6020862c7cf34472f58edd74ccb4b7ad
BLAKE2b-256 ba84fe30e8d095ee1c1a295937afcbcfea1e67bc97e8ea2633e195737b881b09

See more details on using hashes here.

File details

Details for the file openmd-1.4.3-py3-none-any.whl.

File metadata

  • Download URL: openmd-1.4.3-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for openmd-1.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e3c5ece4b0f2191d2ba7785adea2214ae33602bb589a628d424d0cdf5c9e72d5
MD5 1e4f7245de7df6e8a71270cb7622d78b
BLAKE2b-256 4a13d39015972acc02f98843cd170e8d2f998bb8e430892688e10a072c415d31

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page