Een presentatietool gebaseerd op Markdown en vriendelijke manier van werken. Het is gebouwd in Flutter https://www.librekat.nl/
Find a file
Brenno de Winter ffcda70966 Extend dual-screen presenter to Windows and Linux
Bring the second-window (beamer) presenter mode to all desktop platforms,
not just macOS:

- Implement the native window_coverScreen / window_close methods for the
  vendored desktop_multi_window plugin on Windows (borderless popup over
  the presentation monitor) and Linux.
- Register the app's plugins for sub-windows in the Windows and Linux
  runners, so video/image rendering works in the audience window there too.
- Gate dual-screen mode through a testable shouldUseDualScreen() helper
  (any desktop platform with >= 2 displays) and cover it with tests.

flutter analyze is clean and all presenter tests pass. Runtime two-screen
behaviour still needs verification on real hardware.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 22:03:56 +02:00
android feat: polish app icons and presentation exports 2026-06-05 00:02:51 +02:00
assets feat: polish app icons and presentation exports 2026-06-05 00:02:51 +02:00
docs docs: add file format specification 2026-06-03 09:55:58 +02:00
ios feat: polish app icons and presentation exports 2026-06-05 00:02:51 +02:00
lib Extend dual-screen presenter to Windows and Linux 2026-06-06 22:03:56 +02:00
linux Extend dual-screen presenter to Windows and Linux 2026-06-06 22:03:56 +02:00
macos Add dual-screen presenter mode (slide on beamer, notes on laptop) 2026-06-06 21:25:34 +02:00
test Extend dual-screen presenter to Windows and Linux 2026-06-06 22:03:56 +02:00
third_party Extend dual-screen presenter to Windows and Linux 2026-06-06 22:03:56 +02:00
web Initial commit: OciDeck Marp presentation builder 2026-06-02 23:28:39 +02:00
windows Extend dual-screen presenter to Windows and Linux 2026-06-06 22:03:56 +02:00
.gitignore Initial commit: OciDeck Marp presentation builder 2026-06-02 23:28:39 +02:00
.metadata Initial commit: OciDeck Marp presentation builder 2026-06-02 23:28:39 +02:00
analysis_options.yaml Initial commit: OciDeck Marp presentation builder 2026-06-02 23:28:39 +02:00
Makefile Initial commit: OciDeck Marp presentation builder 2026-06-02 23:28:39 +02:00
pubspec.lock Add dual-screen presenter mode (slide on beamer, notes on laptop) 2026-06-06 21:25:34 +02:00
pubspec.yaml Add dual-screen presenter mode (slide on beamer, notes on laptop) 2026-06-06 21:25:34 +02:00
README.md Add self-contained Marp HTML export 2026-06-04 01:37:46 +02:00

OciDeck

A desktop application for building Marp presentations through a structured, slide-by-slide editor — no raw Markdown wrangling required. Compose decks from typed slide templates (title, bullets, quotes, tables, images, video, audio), preview them live, present them fullscreen, and export to Marp Markdown, PDF, and PPTX.

Built with Flutter for macOS, Windows, and Linux.

Features

  • Structured slide editors — dedicated editors per slide type: title, bullets, two-column bullets, bullets + image, single/two images, quote, table, section divider, image-only, video, audio, and free-form Markdown.
  • Live preview — see each slide rendered as you edit, with inline Markdown, footers, and TLP (Traffic Light Protocol) marking. Free-Markdown slides render fenced code with syntax highlighting and $…$ / $$…$$ LaTeX math.
  • Fullscreen presenter — keyboard-driven navigation, presenter view, and a slide-grid overview.
  • Media handling — drag-and-drop images, an image carousel picker, captions, and descriptions stored as sidecar metadata.
  • Import / export — round-trips Marp Markdown, imports existing slides, and exports to PDF, PPTX (with speaker notes), and a self-contained offline HTML deck (code highlighting, math, and mermaid diagrams render in the browser). Decks are saved as a self-contained package with copied assets.
  • Productivity — find & replace, slide finder, undo/redo, skip-slide state, multi-select with bulk copy-to-another-deck / delete / skip, and tabbed multi-deck editing. Ctrl/Cmd+O opens, Ctrl/Cmd+S saves.
  • Crash recovery — automatic snapshots so work survives an unexpected exit.
  • Theming — a bundled Marp CSS theme (assets/themes/ocideck.css) and a bundled EB Garamond font (no network fetch).

Requirements

  • Flutter SDK ^3.12.0 (Dart 3.12+)
  • A desktop target enabled: macOS, Windows, or Linux

Getting started

make setup      # flutter pub get
flutter run -d macos   # or -d windows / -d linux

Development

The Makefile is the entry point for all quality checks. Run make help for the full list.

make check        # format check + static analysis + full test suite (the quality gate)
make check-full   # check + dependency freshness report
make format       # auto-format all Dart code
make analyze      # flutter analyze only
make test         # full test suite only

Targeted test groups speed up focused work:

Target Covers
make test-contracts Markdown generation/parsing, save-load round-trips, field migration
make test-preview Slide rendering, footers, TLP, inline Markdown, text styles
make test-export PDF/PPTX export and project file-save behavior
make test-state Providers, undo/redo, search/replace, settings, recovery
make test-services Image, caption, and description sidecar services
make test-presenter Fullscreen presenter navigation and keyboard shortcuts

Run make check before pushing — it is the same quality gate (format check, static analysis, full test suite) you would wire into CI.

Project layout

lib/
  models/     # Deck, Slide, Settings data models
  services/   # Markdown, export, file, image, caption, recovery, rasterizer
  state/      # Riverpod providers (deck, editor, settings, tabs, clipboard)
  widgets/    # UI: app shell, panels, dialogs, per-type editors, presenter
  theme/      # App theming

State is managed with Riverpod.

File format

Presentations are saved as standard, Marp-compatible Markdown (.md) with a defined project folder layout and an optional portable .ocideck package. The full specification — front matter, per-slide markup, style profile, captions, and the package format — is documented in docs/FILE_FORMAT.md.

License

All rights reserved. (Update this section if you intend to open-source the project.)