Skip to content
HN On Hacker News ↗

GitHub - RivoLink/leaf: Terminal Markdown previewer — GUI-like experience.

▲ 46 points 25 comments by RivoLink 4w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this document is fully human-written

21 %

AI likelihood · overall

Human
100% human-written 0% AI-generated
SEGMENTS · HUMAN 3 of 3
SEGMENTS · AI 0 of 3
WORD COUNT 685
PEAK AI % 23% · §2
Analyzed
Apr 24
backend: pangram/v3.3
Segments scanned
3 windows
avg 228 words each
Distribution
100 / 0%
human / AI fraction
Verdict
Human
Pangram v3.3

Article text · 685 words · 3 segments analyzed

Human AI-generated
§1 Human · 19%

Terminal Markdown Previewer — GUI-like experience.

Install Install the latest published binary. macOS / Linux / Android / Termux: curl -fsSL https://raw.githubusercontent.com/RivoLink/leaf/main/scripts/install.sh | sh Windows: irm https://raw.githubusercontent.com/RivoLink/leaf/main/scripts/install.ps1 | iex npm: npm install -g @rivolink/leaf Verify the installation: leaf --version Update Update an existing installation to the latest published release. Self: leaf --update leaf --update downloads the matching published asset, verifies it against the published checksums.txt SHA256, and then installs it. On Windows, if replacing the running .exe is blocked by the OS, rerun the PowerShell installer from the install section. npm: npm update -g @rivolink/leaf Build Clone the repository: git clone https://github.com/RivoLink/leaf.git cd leaf Build the release binary locally: cargo build --release Create a local bin directory if needed and symlink leaf into it: mkdir -p ~/.local/bin ln -sf "$(pwd)/target/release/leaf" ~/.local/bin/leaf If ~/.local/bin is not already on your PATH, add it to ~/.bashrc or ~/.zshrc: export PATH="$HOME/.local/bin:$PATH" Usage # Open a Markdown file leaf TESTING.md

# Watch mode — reloads automatically on save leaf --watch TESTING.md leaf -w TESTING.md

# Open the fuzzy Markdown picker leaf

# Open the classic directory browser picker leaf --picker

# Open the fuzzy Markdown picker, then watch the selected file leaf -w

# Open the classic directory browser picker, then watch the selected file leaf -w --picker

# Open a dash-prefixed filename leaf -- -notes.md

# Stream Markdown from another CLI tool claude "explain Rust lifetimes" | leaf

# Preview a local file through stdin cat TESTING.md | leaf

Keybindings

Key Action

j / ↓

§2 Human · 23%

Scroll down

k / ↑ Scroll up

d / PgDn Page down (20 lines)

u / PgUp Page up (20 lines)

g / Home Top

G / End Bottom

t Toggle TOC sidebar

Shift+Sel Select text

Shift+T Open theme picker

Shift+E Open editor picker

Shift+P Open file browser

Ctrl+E Open in editor

Ctrl+P Open fuzzy picker

Ctrl+F / / Find

n / N Next / prev match

? Show help popup

r Force reload (watch mode)

q Quit

Features

✅ Watch mode --watch / -w — reloads every 250ms, with ⟳ reloaded flash feedback ✅ leaf --watch can start from the picker and begin watching after file selection ✅ Syntax highlighting with common language aliases like py, cpp, json, toml, ps1, and dockerfile ✅ Unicode box-drawing tables with left / center / right alignment ✅ TOC sidebar with active section tracking and two-level navigation ✅ Search with match highlighting, /, Ctrl+F, and n / N ✅ Code blocks ┌─ lang ───┐ ✅ LaTeX math rendering — inline $...$ and display $$...$$ with Unicode conversion via unicodeit ✅ LaTeX code blocks ```latex / ```tex rendered as formula blocks ✅ Bold, italic, strikethrough, blockquotes, lists, and horizontal rules ✅ YAML frontmatter is ignored in both preview and TOC ✅ Native stdin input with bounded size ✅ leaf --update to fetch, verify via published SHA256, and install the latest release on supported platforms ✅ Fuzzy Markdown

§3 Human · 22%

picker when launched without a file, or anytime with Ctrl+P ✅ Classic directory browser picker with leaf --picker, or anytime with Shift+P ✅ Theme picker with runtime preview ✅ Help popup with in-app shortcuts

Typical AI Workflow # Terminal 1: generate the file aichat "..." > notes.md

# Terminal 2: live watch leaf --watch notes.md Roadmap

Themes (light / custom) Copy code block y Code block horizontal scroll Improve search performance on large files

Troubleshooting Windows: missing Visual C++ runtime If leaf.exe does not start on Windows and reports a missing MSVC runtime, install the latest supported Microsoft Visual C++ Redistributable from Microsoft Learn:

https://learn.microsoft.com/fr-fr/cpp/windows/latest-supported-vc-redist?view=msvc-170

Direct download for the latest supported X64 Microsoft Visual C++ Redistributable:

https://aka.ms/vc14/vc_redist.x64.exe

For leaf-windows-x86_64.exe, the relevant package is the latest supported X64 Visual C++ v14 Redistributable. Windows: update or file replacement error If leaf --update fails on Windows with an error about replacing, renaming, or writing leaf.exe, the running executable was likely locked by the OS. Close any terminal session still running leaf, then rerun the PowerShell installer from the install section: irm https://raw.githubusercontent.com/RivoLink/leaf/main/scripts/install.ps1 | iex Uninstall macOS / Linux / Android / Termux: rm -f ~/.local/bin/leaf Windows: Remove-Item "$env:LOCALAPPDATA\Programs\leaf\leaf.exe" -Force npm: npm uninstall -g @rivolink/leaf