Skip to content

dipeshnx/teleprompter

Repository files navigation

Teleprompter

CI License: MIT Platform

A floating, always-on-top teleprompter for macOS. Built for reading scripts during live Zoom calls (or any video call) without losing eye contact with the camera.

Features

  • Always-on-top floating window — park it just below or above your webcam
  • Hybrid scroll — auto-scroll at adjustable speed; grab the scroll wheel at any time to reposition, auto-scroll resumes from wherever you land
  • Fixed reading line at the upper third, with a subtle highlight band
  • Saved script library — create, rename, delete, switch; imports from .txt and .md (markdown formatting is stripped to keep scroll rhythm clean)
  • Global hotkeys — control play/pause, speed, and position from any app (including Zoom)
  • Hidden from screen capture — if you share your full screen, attendees don't see the script (NSWindow.sharingType = .none)

Hotkeys

Defaults (configurable in Settings):

Action Global Local (window focused)
Play / pause ⌃⌥Space Space
Speed up ⌃⌥=
Speed down ⌃⌥-
Jump to top ⌃⌥0
Jump to reading line ⌃⌥R

Global hotkeys require Accessibility permission (System Settings → Privacy & Security → Accessibility).

Install from source

Prerequisites

  • macOS (Apple Silicon or Intel)
  • Rust toolchain
  • Node.js 20+
  • pnpm (or npm)
  • Xcode Command Line Tools (xcode-select --install)
  • Tauri CLI: cargo install tauri-cli --version '^2.0'

Build and run

git clone git@github.com:dipeshnx/teleprompter.git
cd teleprompter
pnpm install
pnpm tauri dev     # dev build with hot reload
pnpm tauri build   # release build

Release binaries land in src-tauri/target/release/bundle/.

Usage

  1. Launch the app. Grant Accessibility permission when prompted.
  2. Open ScriptsNew (or Import… a .txt / .md file). Paste your text, click Save, then Use.
  3. Drag the window just below or above your webcam.
  4. Start your Zoom call. Click ▶ or press ⌃⌥Space when ready.
  5. Read, glance at the camera, and pace yourself. Scroll wheel to override position; auto-scroll resumes automatically.

Known limitations (v0.1.0)

  • Does not currently appear over Google Slides / Chromium-based fullscreen presentations. Workaround: use Chrome's "Present in new window" option instead of fullscreen, or a second monitor.
  • Unsigned dev builds may lose Accessibility permission across rebuilds.

Tech stack

Tauri v2 · Rust · Svelte 5 · TypeScript · Vite · Vitest · cargo test · objc2-app-kit

Spec and plan live in docs/superpowers/.

Contributing

Issues and PRs are welcome. See CONTRIBUTING.md for how to set up the dev environment and the testing conventions, and CODE_OF_CONDUCT.md for community expectations. Changes worth noting land in CHANGELOG.md.

Security

Please report vulnerabilities privately — see SECURITY.md.

License

MIT © Dipesh Nyachhyon

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages