Skip to content

benjajaja/mdfried

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mdfried

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

Screenshots

Screenshot

Video

mdfried_backdrop.webm

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, should work.

Installation

If cargo install ... fails, try it with --locked.

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 will have to pick a font. You should pick the same font that your terminal is using, but you could pick any. The font-setup screen lets you search the system fonts - you will want to pick the same font that your terminal is using. 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.

You can also pipe markdown into it:

readable https://lobste.rs | markdownify | mdfried

Key bindings

Key Description
q or Ctrl-c Quit and leave contents on terminal
r Reload the file (unless piped stdin)
j Scroll down one line
k Scroll up one line
d or Ctrl-d Scroll down half page
u or Ctrl-u Scroll up half page
f or PageDown or Space Scroll down a page
b or PageUp Scroll up a page
g Go to start of file
G Go to end of file
n Jump to next link
N Jump to previous link
Enter Open selected link with xdg-open

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

Configuration

~/.config/mdfried/config.toml is automatically created on first run. The [skin] section can be configured to set various colors and styles. See termimad skin format for more information.