Skip to content

jakehildreth/Deck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Deck logo displays the word "Deck" in a chunky pixel/bitmap font with a tan and beige color on a black background, evoking a retro video game version of a deck.

Deck

Terminal-based presentations from Markdown files using PowerShell.

PowerShell 7.4+ Platform PSGallery License

Quick Start

Install-Module Deck -Scope CurrentUser

Or clone from GitHub:

git clone https://github.com/jakehildreth/Deck.git
Import-Module ./Deck/Deck.psd1

Create a Markdown file:

---
background: Black
foreground: Cyan1
border: Blue
---

# My Presentation

---

## Section Title

---

### Slide Content

Your content here with **bold** and *italic* text.

* Progressive bullets
* Reveal one at a time

Run the presentation:

Show-Deck -Path ./presentation.md

Or load directly from a web URL:

Show-Deck -Path https://exampledeck.jakehildreth.com

Validate content before presenting:

Show-Deck -Path ./presentation.md -Strict

The -Strict parameter validates:

  • Content height doesn't exceed viewport
  • Image files exist
  • Reports all errors before starting

Features

Slide Types

  • Title Slides - Single # heading with large figlet text
  • Section Slides - Single ## heading with medium figlet text
  • Content Slides - ### heading with body content
  • Image Slides - Two-panel layout with content left (60%), image right (40%)
  • Multi-Column Slides - Split content with ||| delimiter
  • Table Slides - Markdown tables rendered as Spectre.Console tables
  • Syntax Highlighting - Fenced code blocks with language-aware highlighting via TextMate

Image Slides

Create side-by-side layouts with text and images:

### Slide Title

Text content on the left.

* Progressive bullets supported
* Auto-sized images

![Alt Text](image.png){width=80}

Images are auto-detected. Use relative or absolute paths. Optional {width=N} sets max width.

Web images are supported:

![Logo](https://example.com/logo.png)
### About Our Brand
Content appears here

Tables

Markdown tables render as rounded Spectre.Console tables:

### Slide Title

| Name   | Role       | Status |
|-------|----------|-------|
| Alice  | Engineer   | Active |
| Bob    | Designer   | Active |

Tables work on content slides, image slides, and multi-column slides.

Syntax Highlighting

Fenced code blocks with a language identifier get automatic syntax highlighting powered by TextMate:

```powershell
Get-Process | Where-Object CPU -gt 100
```

Renders in a rounded panel with language header and full color tokenization. Supports 60+ languages including PowerShell, Python, C#, JavaScript, Rust, Go, SQL, YAML, and more. Falls back to plain monochrome when a language grammar isn't available.

Bullet Points

  • Progressive bullets using * (reveal one at a time)
  • Static bullets using - (all visible at once)

Inline Formatting

  • **bold** or __bold__
  • *italic* or _italic_
  • `code`
  • ~~strikethrough~~
  • <colorname>text</colorname> or <span style="color:colorname">text</span> for colors

Color Examples

This text has <red>red</red>, <blue>blue</blue>, and <green>green</green> colors.

You can use standard HTML: <span style="color:yellow">yellow text</span>

Mix with formatting: **<red>bold red text</red>** or *<blue>italic blue</blue>*

Supports all Spectre.Console color names.

Navigation

  • Forward: Right, Down, Space, Enter, n, Page Down
  • Backward: Left, Up, Backspace, p, Page Up
  • Exit: Esc, Ctrl+C, q
  • Help: ?

Customization

Configure in YAML frontmatter:

---
background: black          # Background color
foreground: white          # Text color
border: magenta            # Border color
borderStyle: rounded       # rounded, square, double, heavy, none
pagination: false          # Show slide numbers
paginationStyle: minimal   # minimal, fraction, text, progress, dots
h1: default                # Figlet font for # titles (aliases: titleFont, h1Font)
h2: default                # Figlet font for ## sections (aliases: sectionFont, h2Font)
h3: default                # Figlet font for ### headers (aliases: headerFont, h3Font)
h1Color: null              # Color for # titles (aliases: titleColor, h1FontColor)
h2Color: null              # Color for ## sections (aliases: sectionColor, h2FontColor)
h3Color: null              # Color for ### headers (aliases: headerColor, h3FontColor)
---

Heading Colors

Heading colors can be specified three ways:

  1. Inline HTML tags (highest priority):
# <red>Red Title</red>
## <cyan>Cyan Section</cyan>
### <green>Green Header</green>
  1. Frontmatter settings:
h1Color: red
h2Color: cyan
h3Color: green
  1. Foreground fallback (if neither above is specified)

Both <colorname>text</colorname> and <span style="color:colorname">text</span> syntax are supported.

Examples

See Examples/ExampleDeck.md for a comprehensive demo:

Show-Deck -Path ./Examples/ExampleDeck.md

Additional examples in Examples/Features/:

Requirements

  • PowerShell 7.4 or later
  • TextMate (auto-installed if missing)
  • macOS arm64 only — x64 (Intel) macOS is not supported

License

MIT License w/Commons Clause - see LICENSE file for details.

Built With

Made with 💜 by Jake Hildreth

About

Terminal-based presentations from Markdown files using PowerShell.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages