Skip to main content

Fast Markdown previewer for macOS with GitHub-dark theme, sidebar TOC, and multi-file tabs

Project description

openmd

A fast, minimal Markdown previewer for macOS with a GitHub-dark theme, collapsible sidebar TOC, live reload, Mermaid diagrams, KaTeX math, and multi-file tab support. Built this for myself because who needs to fire up VS Code or Cursor just to quickly view a pretty printed Markdown file, right?🤣

Python 3.8+ License: MIT Platform: macOS PyPI version

GitHub: RufusLin/openmd Warning - Lazy Maintainer: Really bad at reading PRs, but will pay attention to issues to fix bugs. Feel free to fork, remember to give credit, please.


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:

# Local preview — opens in background
localmd() {
    openmd "$@" >/dev/null 2>&1 &
}

# 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 &
}

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


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 .

Live reload

Openmd watches the opened file for changes using Qt's QFileSystemWatcher. Save the file in any editor (vim, neovim, VS Code, etc.) and the preview — including the sidebar TOC — updates instantly with no manual refresh.

Mermaid & KaTeX

Mermaid and KaTeX are loaded automatically from CDN on every render. No configuration required.

Mermaid example:

```mermaid
graph TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Do it]
    B -->|No| D[Skip]
```

KaTeX example:

Inline: $E = mc^2$

Display:
$$\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}$$

Note: Mermaid and KaTeX require an internet connection to load from CDN. Offline rendering is not currently supported (maybe never, come to think of it😉).


Keyboard shortcuts

Key Action
Esc Close the preview window
/ Navigate the sidebar TOC
Click heading Jump to that 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.3.1.tar.gz (9.9 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.3.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for openmd-1.3.1.tar.gz
Algorithm Hash digest
SHA256 0c552e351ad0d559beb39735d47599392af5b1995b28f1e6e7a33fd69279813f
MD5 619c3c7e2c7d72d74616f84c52e25d6b
BLAKE2b-256 472286aa5a2b0bf78fec05c29ea0d1ab577819a46bfdcf12bd132c0969c076b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: openmd-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 10.2 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.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2493de80c6aba11c54959273c982fc38e07262335e3a5728e155cd09c89be5f9
MD5 796055abcaf0be78347f7ee6c6338a3e
BLAKE2b-256 00173d781edff4cf769e2f8060b8fbcc11f1d575ef8a8a6bb72564215a2195ae

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