Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Teleprompter

A minimal floating teleprompter for macOS (and Linux/Windows) built with Python and PyQt6. The window sits at the top-centre of your screen, above every other app, so you can read your script while presenting, recording, or on a video call.


Preview

Floating window — sits on top of any app (here shown over a Zoom call):

Teleprompter floating window

Settings window — paste your script, tune speed, font, colours, and key bindings:

Settings window


Features

  • Always-on-top floating window — stays visible over Zoom, Meet, Keynote, browsers, etc.
  • Glowing border — customisable colour, easy to spot at a glance
  • Page-based display — shows a fixed number of words at a time; the block flips to the next page when the current word crosses the boundary
  • Auto-scroll — advances one word at a time at a configurable WPM (default 120)
  • Manual navigation — step forward/back one word, or jump a full page
  • Fully configurable — WPM, words per view, font size, window height, all four colours, and key bindings
  • Auto-sizing width — the window is exactly as wide as needed for the longest page of words; no wasted space, no clipping
  • Persistent settings — everything is saved automatically to ~/.teleprompter_settings.json

Requirements

  • Python 3.11+
  • uv (package manager)

Installation

# Clone or download the project, then:
cd Teleprompter
uv sync

Running

uv run teleprompter

This opens the Settings window. Paste your script, configure as needed, then click ▶ Launch.


Controls

Teleprompter window

Input Action
Space Start / pause auto-scroll
Right Arrow Next word (pauses auto-scroll)
Left Arrow Previous word (pauses auto-scroll)
Down Arrow Skip forward one full page (pauses auto-scroll)
Up Arrow Skip back one full page (pauses auto-scroll)
Scroll down Skip forward one full page
Scroll up Skip back one full page
Esc Close the teleprompter
Click & drag Reposition the window
button Bring the Settings window to front
button Close the teleprompter

Tip: The navigation keys (next, previous, pause) can be rebound in the Settings → Controls tab.

Resuming after manual navigation

If auto-scroll is running and you press / / / or scroll, auto-scroll pauses. Press Space to resume from the current word.


Settings window

Open automatically on launch, or click on the teleprompter.

Script tab

  • Paste or type your script directly
  • Load file — import any .txt, .md, .rst, or .srt file
  • Live word count displayed as you type

Display tab

Setting Description Default
Words per minute Auto-scroll speed 120
Words per view Words shown per page 10
Font size Size of the text 28 px
Height Height of the floating window 120 px
Width Auto-calculated — fits the widest page
Glow / border Colour of the glowing edge #00BFFF
Current word Highlight colour #00FFFF
Upcoming words Text colour #E8E8FF
Background Window fill colour #0D0D1A

Controls tab

  • Remap the Next word, Previous word, and Pause/Resume keys
  • Toggle scroll-wheel navigation on/off
  • Quick-reference table for all shortcuts

How the display works

Words are shown in non-overlapping pages. With words_per_view = 5:

Page 1:  [dim]  [dim]  [CURRENT]  word  word
Page 2:  word   word   word       word  word
...
  • Dim grey — words already spoken on the current page
  • Cyan / bold / larger — the word being spoken now
  • White — upcoming words on the current page

When auto-scroll advances past the last word on a page, the display flips immediately to the next page.


File structure

src/teleprompter/
  main.py       — entry point
  config.py     — settings dataclass, saved to ~/.teleprompter_settings.json
  prompter.py   — floating teleprompter window
  settings.py   — settings & script editor window
pyproject.toml

Notes

  • macOS fullscreen appsWindowStaysOnTopHint keeps the window above regular windowed apps. If another app enters true macOS fullscreen, the teleprompter may be hidden on that Space. Use windowed (non-fullscreen) mode for your other apps to avoid this.
  • Settings are saved automatically whenever you click Apply changes, ▶ Launch, or close the Settings window.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages