A modern, fast terminal presentation tool built with Rust.
From a local clone:
cargo install --path .From GitHub:
cargo install --git https://github.com/stormlightlabs/lantern.git lantern-cliFrom Tangled:
cargo install --git https://tangled.sh/desertthunder.dev/lantern lantern-cliCreate a markdown file presentation.md:
---
theme: nord
---
# Welcome to lantern
A terminal presentation tool built with Rust
---
## Features
- Base16 theming system
- Syntax highlighting
- Tables, images, and admonitions
- Speaker notes with `::: notes`
- Print to stdout
::: notes
These notes stay out of the main slide and appear in the presenter notes panel.
Press Shift+N while presenting to toggle the panel.
:::
---
## Code Example
```rust
fn main() {
println!("Hello, lantern!");
}
```
---
## That's it
Press `q` to quit, `←/→` to navigate# Interactive TUI mode
lantern present presentation.md
# Print to stdout
lantern print presentation.md
# With a built-in theme
lantern present presentation.md --theme catppuccin-mocha| Key | Action |
|---|---|
→, j, Space, n |
Next slide |
←, k, p |
Previous slide |
Shift+N |
Toggle notes panel |
? |
Toggle help line |
q, Ctrl+C, Esc |
Quit |
Color as Data:
All color use flows through typed wrappers using owo-colors. No ad-hoc ANSI escapes.
Themeable: Built on the Base16 theming system with 15 prebuilt themes (Catppuccin, Nord, Gruvbox Material, Solarized, Oxocarbon, Rose Pine).
Each theme defines 16 semantic colors mapped to content and UI elements.
Themes can be selected via frontmatter, CLI flags, --theme-file, config-directory theme files, or
environment variables.
Reproducible:
Everything is reproducible in plain text — decks can render without TUI (using lantern print).
Composable: Parser → Model → Renderer are independent modules with tests and traits.
Portable: Runs on any terminal supporting UTF-8; dependencies limited to core crates.
This project uses cargo-llvm-cov for coverage
Installation:
# MacOS
brew install cargo-llvm-cov
# Linux
cargo +stable install cargo-llvm-cov --lockedRun tests:
cargo llvm-cov
# Open the browser
cargo llvm-cov --open
