mdfried 0.20.3

A markdown viewer for the terminal that renders images and big headers
mdfried-0.20.3 is not a library.

mdfried

mdfried is a markdown viewer for the terminal that renders headers as Bigger Text than the rest.

Screenshots

Screenshot

Latest test screenshot array from master

Video

https://github.com/user-attachments/assets/924d29a9-053c-44b0-8c09-39dac8c90329

Why?

You can cook a terminal. But can you deep fry a terminal?
YES! You can cook and fry your tty! Run before it's too late!

The terminal is usually in "cooked" mode, or canonical mode. With ratatui🐁, it's in raw mode, but it "cooks" for you.

Markdown can obviously be rendered pretty well in terminals, but one key aspect is missing: Big Headersā„¢ make text more readable, and rendering images inline is very convenient.

How?

By rendering the headers as images with ratatui, and using one of several terminal graphics protocols: Sixels, Kitty, or iTerm2. The Kitty terminal also implements a Text Sizing Protocol to directly scale text without needing to render as images!

See ratatui-image to see if your terminal does even have graphics support, and for further details.

In general, Kitty, WezTerm, iTerm2, Ghostty, Foot, xterm -ti vt340, Rio, should work.
On terminals without graphics whatsoever, like Alactritty, images are rendered with Chafa.

Installation

Packaged in distros:

  • Rust cargo: cargo install mdfried
    • From source : cargo install --path .
    • Needs a chafa package with development headers, usually called something like libchafa-dev, libchafa-devel, or just libchafa, or even just chafa.
    • If chafa is not available at all, or you don't care about it because your terminal supports some graphic protocol, then use --no-default-features.
    • If cargo install ... fails, try it with --locked, and/or report an issue.
  • Nix flake: github:benjajaja/mdfried
  • Nixpkgs: mdfried
  • Arch, Manjaro, Parabola: pacman -S mdfried (extra repository)
  • FreeBSD: pkg install mdfried
  • Ubuntu: Download release .deb
  • Mac: brew install mdfried or port install mdfried or realease binaries
  • Windows: Download release .exe

Packaging status

Usage

Running

mdfried ./path/to.md

Unless you're using Kitty version 0.40 or greater, or a terminal that does not support any graphics protocol, the first time you run mdfried you may have to pick a font, if your terminal's font could not be automatically detected.
You should pick the same font that your terminal is using, but you could pick any. The font is rendered directly as a preview. Once confirmed, the choice is written into the configuration file.

Use --setup to force the font-setup again if the font is not right.

See --help for all options.

Key bindings

The keybindings should follow the basics of general CLI pagers. Vi-style keybindings are prioritized, but "normal" keys should be usable as well.

Type :help in the program to see the exact list, or see assets/help.md.

Mouse scroll only works if enabled in settings as enable_mouse_capture = true, but then you can't select text (in most terminals).

Configuration

~/.config/mdfried/config.toml is automatically created on first run.

mdfried --print-config prints out a full example config with a full theme.

Changelog

See CHANGELOG.md.