A retro-terminal theme for Quarto reveal.js
2026-06-19
// QUARTO REVEALJS THEME
Slides that look like your favorite shell.
This deck is built with the theme itself — every slide you see is a working example you can copy. Press → to begin.
A complete look-and-feel, ready out of the box.
Everything is plain Markdown plus a few helper spans:
[// LABEL]{.kicker} — an uppercase kicker label[subtitle]{.lede} — a larger subtitle line[supporting text]{.desc} — a muted description line[broke]{.neg} is red, [works]{.ok} is greenSo a build that was once broken now works.
Wrap an ordered list in ::: steps for numbered boxes.
quarto add rpodcast/quarto-revealjs-terminalformat: terminal-revealjs in your front matterquarto render and ship itCALLOUTS Turn any bullet list into bordered callout boxes by wrapping it in a ::: callouts div.
Great for key points and takeaways.
CARDS Place several ::: card divs inside ::: cards for a clean two-column layout.
Use [Title]{.card-title} — not a heading — for the card title.
Tip: never put a Markdown heading (
##,###) inside a card — Quarto turns it into a nested slide and breaks navigation.
The chrome is driven by header attributes.
Set these on any ## slide header:
terminal-path — the green > prompt path, top-leftterminal-status — the status label with a dot, top-rightterminal-hint — overrides the footer hint (see the bottom-right of this slide)Document-level defaults live in the YAML front matter, so you only set what changes per slide.
Fenced code blocks render in a bordered terminal panel.
~/.config/terminal-theme/
├── _quarto.yml # project settings
├── custom.scss # your overrides (palette, colors, fonts)
├── slides.qmd # this presentation
└── _extensions/
└── terminal/ # the theme lives here
Inline code is highlighted too — set the accent with $terminal-accent.
Switch the whole deck like a modern terminal — one line.
/*-- scss:defaults --*/
$terminal-palette: "solarized-dark";
DARK SCHEMES amber · solarized-dark · dracula · nord · gruvbox-dark · monokai · one-dark · catppuccin-mocha · tomorrow-night-eighties · green-phosphor · cyan-navy
LIGHT SCHEMES solarized-light · gruvbox-light
Light palettes automatically soften the glow and scanlines so text stays readable.
// FULL SCSS CONTROL
Start from a palette, then override anything.
$terminal-accent, $terminal-bg, $terminal-heading-font, $terminal-glow, $terminal-scanlines — every color, font, and effect is a variable.
Three commands and you’re presenting.
quarto use template rpodcast/quarto-revealjs-terminal.qmd — this file is your referencequarto render → open the HTML → presentQuestions, issues, and contributions are welcome on GitHub.