Skip to main content

A markdown-powered desktop presentation tool

Project description

Slide Viewer

A markdown-powered desktop presentation tool built with Python, PyQt6, and Chromium-based rendering.

Create, edit, and present slide decks using standard markdown. Features a live editor with real-time preview, AI assistant integration, customizable themes, and PowerPoint export.

Features

  • Full Markdown Rendering -- headings, bold, italic, lists, tables, code blocks with syntax highlighting, blockquotes, links, images, horizontal rules
  • Live Editor -- real-time slide preview with syntax highlighting as you type
  • AI Assistant -- built-in chat panel powered by OpenAI GPT-4o-mini for rewriting, improving, or generating slide content
  • 5 Preset Themes -- Default Light, Dark Pro, Academic, Minimal, Ocean -- plus full color, font, and font size customization
  • Per-Slide Theme Overrides -- override the global theme on any slide with <!-- theme: bg=#000 text=#fff --> comments
  • Image Support -- insert images with multiple layout options (right half, left half, full with caption, inline centered); drag-and-drop repositioning and resizing in the preview
  • Table & Column Editors -- visual editors for inserting and editing tables and multi-column layouts
  • Full Markdown Panel -- edit the entire deck as one markdown document with bidirectional sync
  • Slide Sorter -- drag-and-drop reordering of all slides
  • Overflow Detection -- checks if content fits the presentation size (1920x1080) and flags slides that would scroll
  • Presentation Mode -- fullscreen slide show with arrow key / click / Space navigation
  • Presenter Mode -- fullscreen slides with speaker notes, next slide preview, and a presentation timer
  • PowerPoint Export -- export slides as .pptx files
  • Speaker Notes -- add notes: on its own line within a slide to include speaker notes
  • Copy LLM Instructions -- one-click copy of the slide format guide for use with any AI assistant
  • Autosave & Recent Files -- automatic saving and quick access to recently opened files

Requirements

  • Python 3.10+
  • PyQt6 with WebEngine support

Installation

From the project directory:

pip install .

Or install dependencies manually:

pip install -r requirements.txt

Usage

# As a package
python -m slide_viewer

# Or via the CLI entry point (after pip install)
slide-viewer

The application opens with a sample slide deck. From there you can:

  • Load a file -- File > Load from File (Ctrl+O) supports .md and .txt
  • Paste markdown -- File > Load from Code (Ctrl+Shift+O) to paste raw markdown
  • Edit slides -- use the left editor panel; changes preview in real time
  • Navigate -- Prev/Next buttons, arrow keys, or click slides in the navigator
  • Add / insert / delete slides -- toolbar buttons for managing slides
  • Customize theme -- right dock panel with color pickers, fonts, and preset themes
  • Save -- File > Save to File (Ctrl+S) exports as a single .md file
  • Export to PowerPoint -- File > Export to PowerPoint (Ctrl+Shift+E)
  • Present -- F5 for presentation mode, Shift+F5 for presenter mode with notes

Slide Format

Slides are separated by slide# on its own line with blank lines before and after:

# Title Slide
### Subtitle

slide#

## Second Slide

- Bullet point one
- Bullet point two

slide#

## Third Slide

More content here.

Speaker Notes

Add notes: on its own line within any slide. Everything below becomes speaker notes:

## My Slide

Content visible in the presentation.

notes:

These notes are only visible in Presenter Mode and exported to PPTX.

Using AI to Generate Slides

  1. Click the Copy LLM Instructions button in the toolbar
  2. Open your preferred AI assistant (ChatGPT, Claude, Gemini, etc.)
  3. Paste the instructions and ask the AI to create slides on your topic
  4. Copy the AI's markdown output
  5. Paste into the Full Markdown panel (Ctrl+M) or use File > Load from Code (Ctrl+Shift+O)

Keyboard Shortcuts

Shortcut Action
Ctrl+O Load from File
Ctrl+Shift+O Load from Code
Ctrl+S Save to File
Ctrl+Shift+E Export to PowerPoint
Ctrl+E Toggle Editor Panel
Ctrl+T Toggle Style Panel
Ctrl+M Toggle Markdown Panel
Ctrl+F Find/Replace (Full Markdown panel)
F5 Presentation Mode
Shift+F5 Presenter Mode (with notes)
F1 User Guide
Left / Up Previous slide
Right / Down Next slide
Space Next slide (presentation mode)
Esc Exit presentation / presenter mode

AI Assistant

The bottom-left panel provides an AI chat powered by OpenAI's GPT-4o-mini. Enter your API key in the field at the bottom of the chat panel -- it persists between sessions.

The AI has context about your full presentation and the current slide. Ask it to rewrite, improve, or restructure slides, and use the Replace or Insert buttons to apply changes. An Undo button lets you revert the last AI edit.

License

This project is licensed under the MIT License. See LICENSE for details.

Citation

If you use Slide Viewer in your work, please see CITATION.cff for citation information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slide_viewer-1.0.0.tar.gz (52.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slide_viewer-1.0.0-py3-none-any.whl (55.0 kB view details)

Uploaded Python 3

File details

Details for the file slide_viewer-1.0.0.tar.gz.

File metadata

  • Download URL: slide_viewer-1.0.0.tar.gz
  • Upload date:
  • Size: 52.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for slide_viewer-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3ce00cbe3b20ba4bab7959e9511400b0f00855080085d22d840bc467caba3ac2
MD5 bd0bb22843c8c07a723865d9d8522790
BLAKE2b-256 3d603370a3d98b6f3962c68b5f319165b2b1ff3724ebd3d8a0e5064f110933ca

See more details on using hashes here.

File details

Details for the file slide_viewer-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: slide_viewer-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 55.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for slide_viewer-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1efc2cc16282f147a58274a1c94454afba648596f3338c3bf9c053a3a53c7c57
MD5 564aa4dccbd50de6db2020daf5b5efa8
BLAKE2b-256 9b88289dd9f698a6a245845dcc4147ba5aa4c73919ea5761ac8a49032517242f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page