Skip to main content

Flint: A premium terminal-based Markdown viewer with interactive tables, high-res images, and Obsidian-style callouts.

Project description

🔥 Flint: The Premium Markdown Viewer

Flint is a premium, terminal-based Markdown viewer built with Textual. Designed for speed, aesthetics, and a seamless Obsidian-like experience in your terminal.

✨ Features

  • 📊 Interactive Tables: Markdown tables are rendered as interactive DataTable widgets with row selection, hover effects, and smooth scrolling.
  • 🖼️ High-Res Images: Crystal clear image rendering using the Terminal Graphics Protocol (TGP).
  • 🧜 Mermaid Diagrams: Full support for Mermaid diagrams (flowcharts, sequence diagrams, etc.) rendered directly in the terminal.
  • 📝 Obsidian-Style Callouts: Support for > [!INFO] and > **Type** callouts with automatic icons and distinct styling.
  • 🎨 Visual Styles & Themes: Multiple built-in styles (Obsidian, Cyberpunk, Retro, Blueprint, Minimal) and color themes (Gruvbox, Nord, Dracula, etc.).
  • ⌨️ Vim-like Navigation: Navigate with j/k, gg/G, Ctrl+U/D for smooth scrolling.

🚀 Installation

Using pip

pip install flint-markdown-viewer

Using pipx (Recommended for CLI tools)

pipx install flint-markdown-viewer

Using uv (Fastest)

uv tool install flint-markdown-viewer

📖 Usage

Simply run flint followed by the path to your Markdown file:

flint your-file.md

Key Bindings

Key Action
q Quit
j / k Scroll Down / Up
g / G Scroll to Top / Bottom
Ctrl+U / Ctrl+D Scroll Half Page Up / Down
Ctrl+P Open Command Palette (Switch Styles/Themes)

🛠️ Configuration

The app follows XDG standards:

  • Config Directory: ~/.config/textual-md-viewer/
  • Cache Directory: ~/.cache/textual-md-viewer/ (images and Mermaid diagrams)

Styles vs Themes

Flint has a two-layer visual customization system:

Themes (Color Schemes): Control the color palette of the app. Examples: gruvbox, nord, dracula, catppuccin. These are built into Textual and affect the overall color scheme across the entire interface.

Styles (Layout & Formatting): Control the visual layout, spacing, borders, typography, and overall aesthetic. Examples: Obsidian, Minimal, Blueprint, Retro, Cyberpunk. These are custom TCSS files in flint/styles/ that define how Markdown elements are displayed.

You can mix and match any theme with any style. Access both via the Command Palette (Ctrl+P).

⚠️ Known Issues

  • Initial Render: On first launch, you may need to trigger a mouse move or key press for the content to render properly. This is a known Textual framework issue with async rendering.
  • Style Switching: Switching between styles may occasionally require reloading the document to fully apply changes.

📝 Changelog

See CHANGELOG.md for version history and release notes.

🤝 Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

📄 License

MIT License. See LICENSE for details.

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

flint_markdown_viewer-0.1.0.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

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

flint_markdown_viewer-0.1.0-py3-none-any.whl (23.7 kB view details)

Uploaded Python 3

File details

Details for the file flint_markdown_viewer-0.1.0.tar.gz.

File metadata

  • Download URL: flint_markdown_viewer-0.1.0.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for flint_markdown_viewer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 46bdce073044f9c45f2b7591fe17402a6a4608a68ac3b3ccbbb8b0ec550d8e07
MD5 cb243e98745413dc7e979fa3c3ea4608
BLAKE2b-256 ef943202ed46763912e2d93a6f5ceca2b59c83c1a01ce7d098bb140f9c1b3f78

See more details on using hashes here.

File details

Details for the file flint_markdown_viewer-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for flint_markdown_viewer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2dd9815da9ace846765e6c9cc915716fc08bda2ae89df9c9f880e361380979be
MD5 da3b1fd9eddef9f4bc52bcc56731c442
BLAKE2b-256 5f2e3e30c6e4157d8f973dd00f57967c89e7a2515969c07a669fde41196c3e7c

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