#+title: Domain Specific sLIDEs
#+author: Positron
#+email: contact@positron.solutions
#+export_file_name: ../README.md
#+options: toc:nil broken-links:nil num:nil
#+begin_export html
#+end_export
#+begin_export markdown
https://github.com/positron-solutions/dslide/assets/73710933/06a66e42-a172-48ba-968f-5f5b1989a868
#+end_export
#+begin_export html
#+end_export
* Present Org Documents 🦄
:PROPERTIES:
:UNNUMBERED: notoc
:END:
- Per-heading configurable behavior
- Nested or independent child slides
- Header with breadcrumbs generated from document keywords
- Actions that consume typical org data in smart ways
** Fully Programmable ✨
- Script steps in your presentation with Org babel blocks
- Incorporate *anything* Emacs does into a presentation
- Convenient API for quickly writing reliable custom actions for reuse
** Status 🛠️
Version 0.5.4 👷 Subscribe to Positron's [[https://www.youtube.com/@Positron-gv7do][YouTube]] for updates and related demonstrations.
- Stabilizing the API and naming (estimated 98% stable)
- Gathering user feedback & experience to pinpoint actual use patterns
- Accepting PR's and issue reports
- Some behaviors may be advertised as working already when they are only 90% implemented. I have no idea what you want. *File issues*.
* Installation
:PROPERTIES:
:UNNUMBERED: notoc
:END:
#+begin_src elisp
;; From MELPA or ELPA
(use-package dslide)
;; package-vc
(package-vc-install
'(dslide
:url "https://github.com/positron-solutions/dslide.git"))
;; using elpaca's with explicit recipe
(use-package dslide
:elpaca (dslide :host github
:repo "positron-solutions/dslide"))
;; straight with explicit recipe
(use-package dslide
:straight (dslide :type git :host github
:repo "positron-solutions/dslide"))
;; or use manual load-path & require, you brave yak shaver
#+end_src
** Try It Out
With just defaults, run ~dslide-deck-start~ on your existing documents. You can load the examples in the [[file:./test/demo.org][./test/demo.org]] file to see a showcase of configuration behavior.
The default keymap uses arrow keys. Left and right are ~dslide-deck-forward~ and ~dslide-deck-backward~. Up is ~dslide-deck-start~ and will show the contents. Down is ~dslide-deck-stop~ and will stop the slide show.
* Features
:PROPERTIES:
:UNNUMBERED: notoc
:END:
** Simple User Interface
Fully programmable sequences behind a two-button presentation interface:
- ~dslide-deck-forward~
- ~dslide-deck-backward~
** Contents Navigation
Call ~dslide-contents~ to show a contents overview. Calling ~dslide-deck-forward~ and ~dslide-deck-backward~ in the contents can quickly move through headings. Call ~dslide-deck-start~ again to resume the presentation from that point.
** Narrate While Presenting
Check out ~dslide-deck-develop~. You can see your hidden comments and the approximate progress indications. Babel actions will highlight blocks as they execute, showing you what just happened.
** Hide Markup
By default, the ~dslide-action-hide-markup~ action is configured in ~dslide-default-actions~. Looks clean out of the box. Commented and =:noslide:= or =:noexport:= headings are filtered. Todos and tags are hidden.
** Independent Buffer State
The actual display is done in an indirect buffer. Your hooks and customizations for presentation will not pollute your editing buffer. Dirty state will not pile up in your presentation buffer, greatly increasing reliability even if your custom Elisp scripting is sloppy 💩.
#+toc: headlines 2
#+include: "manual.org::*Creating" :minlevel 1
#+include: "manual.org::*Presenting" :minlevel 1
#+include: "manual.org::*Configuring" :minlevel 1
#+include: "manual.org::*Extending" :minlevel 1
#+include: "manual.org::*Hacking" :minlevel 1
* Package Pairings
These are some packages that are likely to find use alongside dslide.
** Org Modern
Bullets and many prettifications of common org markups. The markup that you don't hide looks better with org modern.
** Org Appear
Never worry about turning on pretty links for a presentation. Edit them by just moving the point inside.
** Master of Ceremonies
The [[https://github.com/positron-solutions/master-of-ceremonies][master-of-ceremonies]] package is primarily used for its ~moc-focus~ command which isolates small snippets of buffer text to make fullscreen and pretty. You can save replay these snippets without having access to a source buffer.
Check the full commands by pressing =h= during focus. You can highlight a region, save an expression to playback a code snippet without the buffer open etc.
** Open Broadcaster Software
Sacha Chua has written an OBS plugin integration helpful for video integration [[https://github.com/sachac/obs-websocket-el][obs-websocket-el]].
** moom.el
The [[https://github.com/takaxp/moom#org-mode-org-tree-slide][moom]] package contains some commands for resizing text and repositioning frames.
#+include: "manual.org::*Contributing" :minlevel 1
#+include: "manual.org::*Thanks" :minlevel 1