Dais: A Native PDF Presenter Console

CI Crates.io License: MIT

Dais is a cross-platform PDF presentation console written in Rust for researchers and academics who build slides in LaTeX/Beamer, Typst, PowerPoint, or Keynote. Dais is designed for straightforward installation, reliable operation in real presentation setups, and compatibility with existing slide workflows.

Features

  • Multi-monitor presenter view with an audience display and a presenter console with notes, timer, and navigation.
  • Overlay and build-step support for pdfpc metadata, Beamer \pdfpc, and manual grouping.
  • Presentation tools including a laser pointer, freehand ink, spotlight, and zoom.
  • .pdfpc compatibility and a native .dais sidecar format.
  • Fully remappable keybindings with presenter-console defaults.
  • Single-binary distribution with no runtime dependencies or installers.

Installation

Install from crates.io with Cargo (requires Rust 1.92+):

cargo install dais

Or download a pre-built binary from GitHub Releases.

Quick Start

dais presentation.pdf

Usage

dais <file.pdf>                  # Present with auto-detected display mode
dais --single <file.pdf>         # Single-monitor mode (no audience window)
dais --screen-share <file.pdf>   # Screen-share mode (audience as normal window)
dais --edit <file.pdf>           # Open the slide grouping editor
dais --config <path> <file.pdf>  # Use a specific config file
dais --test-input                # Diagnostic mode for clicker/remote setup

Display Modes

  • Dual: presenter console on the primary monitor, audience fullscreen on a secondary monitor.
  • Single: one-window mode. Press F5 to switch between the presenter console and the configured single-monitor presentation surface.
  • Screen-share: the audience view is a normal resizable window for Zoom/Teams sharing.

With one monitor, Dais automatically falls back to single mode.

Grouping Editor

For PDFs without embedded overlay metadata, such as PowerPoint exports, use the built-in editor:

dais --edit slides.pdf

Click between thumbnails to set group boundaries. Save writes the configured sidecar format. When loading, Dais checks .dais before .pdfpc.

Building From Source

Requires Rust 1.92+.

To install from the git repository without cloning:

cargo install --git https://github.com/christopherkenny/dais.git --package dais --bin dais

The binary will be at target/release/dais, or dais.exe on Windows.

Documentation

Architecture

Dais is organized as a 7-crate Cargo workspace:

Crate Role
dais Binary for CLI parsing and app launch
dais-core Commands, state types, command bus, config, keybindings
dais-engine Presentation engine that processes commands and owns state
dais-document DocumentSource trait, hayro PDF renderer, and page cache
dais-sidecar .dais and .pdfpc sidecar formats
dais-platform Platform-specific monitor enumeration
dais-ui egui UI for the presenter console, audience window, and grouping editor