Quickstart

Installation

From a local clone:

git clone https://github.com/stormlightlabs/lantern.git
cd lantern
cargo install --path .

You can also run it without installing:

cargo run -- present presentation.md

The installed binary is named lantern.

Create a deck

Create presentation.md:

---
theme: nord
author: Your Name
---

# Welcome to lantern

A terminal presentation tool built with Rust.

---

## Features

- Markdown slides split with `---`
- Base16 themes
- Syntax-highlighted code blocks
- Tables, lists, blockquotes, and horizontal rules
- Image rendering in terminals supported by `ratatui-image`
- GitHub and Obsidian-style admonitions

---

## Code

```rust
fn main() {
    println!("Hello, lantern!");
}
```

---

## Images

![A local image](./image.png)

---

## Done

Press `q` to quit.

Present

lantern present presentation.md

Use a theme from the command line:

lantern present presentation.md --theme catppuccin-mocha

Print

Print a deck to stdout:

lantern print presentation.md

Set the output width:

lantern print presentation.md --width 100

Check a deck

Validate a slide deck:

lantern check presentation.md

Run stricter checks:

lantern check presentation.md --strict

Validate a Base16 theme file:

lantern check --theme theme.yml
KeyAction
, j, Space, nNext slide
, k, pPrevious slide
?Toggle help line
Shift+NToggle notes panel if a slide contains notes
q, Ctrl+C, EscQuit

Slide separators

Put three dashes on a line by themselves between slides:

# Slide 1

Content here.

---

# Slide 2

More content.

Separators inside fenced code blocks are ignored.

Front matter

Lantern accepts YAML front matter:

---
theme: oxocarbon-dark
author: Jane Doe
date: 2026-06-24
paging: "Slide %d / %d"
---

It also accepts TOML front matter:

+++
theme = "nord"
author = "Jane Doe"
+++

Current metadata fields are theme, author, date, and paging.

Theme selection is implemented.

Supported markdown

  • Headings # through ######
  • Paragraphs
  • Bold, italic, strikethrough, and inline code
  • Fenced and indented code blocks
  • Ordered and unordered lists with nesting
  • Horizontal rules
  • Blockquotes
  • Tables
  • Images
  • GitHub and Obsidian-style admonitions
  • Speaker notes with ::: notes blocks

Environment variables

Set the default theme with SLIDES_THEME:

export SLIDES_THEME=nord

Render with a Base16 YAML theme file:

lantern present presentation.md --theme-file ./theme.yml

Named custom themes can also be placed in $XDG_CONFIG_HOME/lantern/themes, $LANTERN_CONFIG_HOME/themes, or ~/.config/lantern/themes.

If no author appears in front matter, lantern uses USER or USERNAME.

Current limitations

  • Search keys are reserved, but the search UI is not implemented yet.
  • author, date, and paging are parsed from front matter but not displayed in the presenter.

More reference