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

---
## 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 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
Navigation
| Key | Action |
|---|---|
→, j, Space, n | Next slide |
←, k, p | Previous slide |
? | Toggle help line |
Shift+N | Toggle notes panel if a slide contains notes |
q, Ctrl+C, Esc | Quit |
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
::: notesblocks
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, andpagingare parsed from front matter but not displayed in the presenter.