Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for speaker notes #112

Closed
mfontanini opened this issue Dec 29, 2023 · 5 comments · Fixed by #389
Closed

Support for speaker notes #112

mfontanini opened this issue Dec 29, 2023 · 5 comments · Fixed by #389

Comments

@mfontanini
Copy link
Owner

mfontanini commented Dec 29, 2023

It could be nice to support speaker notes. The idea would be to have a way to hook up another <something> (likely another instance of presenterm) which displays any speaker notes in the current slide, where notes would likely be some form of HTML comment.

I don't personally use speaker notes, but I'm keeping this issue open so that those who want speaker note support state their expectations so we don't implement something blindly.

@mfontanini mfontanini changed the title Support for footnotes Support for speaker notes Dec 30, 2023
@xstasi
Copy link

xstasi commented Oct 20, 2024

Hello there!

I make ample use of speaker notes and found the lack of support in presenterm a little bit distressing, so I cooked up a very simple "implementation" (emphasis on the quotes) using kitty.

Not claiming to be anywhere near a proper implementation, but perhaps others who stumble on this issue while looking around for speaker note support may find it useful.

Gist over here

Ta!

@dmackdev
Copy link
Contributor

dmackdev commented Nov 5, 2024

I think speaker notes would be a useful addition to presenterm. I would definitely make use of them myself.

I experimented with a PoC of using 2 instances of presenterm to support speaker notes as follows:

  • I added support for a speaker notes HTML comment: <!-- speaker_note: Your speaker note here. -->.
  • I added a new optional CLI option: --speaker-notes-mode.
  • --speaker-notes-mode=publisher is used to present slides. In this mode, speaker note comments are ignored, and every time the slide changes, an event is sent via inter-process communication (IPC) using https://github.com/eclipse-iceoryx/iceoryx2.
  • --speaker-notes-mode=receiver is used to view speaker notes. In this mode, only speaker note comments are rendered, and on each iteration of the render loop, a check is performed to see if there are any IPC events to change slide.
  • If --speaker-notes-mode is not specified, no IPC structures are created, no events are sent/listened for, and speaker notes are ignored.

Branch is here https://github.com/dmackdev/presenterm/tree/speaker-notes.

See a demo below. There is a slight layout issue on the second speaker note slide, but it's just a rough PoC at this stage. Here I am running the two instances of presenterm using the options described above, and navigating the presentation slides in the left terminal only. The speaker notes in the right terminal automatically navigates slides.

Screen.Recording.2024-11-05.at.09.48.17.mov

Keen to know your thoughts @mfontanini.

@mfontanini
Copy link
Owner Author

Love the approach @dmackdev! Can you create a PR so we can go over the changes?

@mikavilpas
Copy link
Contributor

I like it! I think it would be very easy to embed the note viewer in a terminal inside my editor. It would fit my workflow really well 👍🏻

@dmackdev
Copy link
Contributor

dmackdev commented Nov 6, 2024

Great!

PR started here: #389

I will continue to improve it.

mfontanini added a commit that referenced this issue Jan 19, 2025
Closes #112.

- Adds support for speaker notes via via inter-process communication
(IPC) using [iceoryx2](https://github.com/eclipse-iceoryx/iceoryx2):
- Bumps CI `rust` version to 1.75.0 (for compatibility with `iceoryx2`).
- Adds new speaker notes example presentation.


## Speaker notes implementation:
- Speaker notes can be added to a presentation markdown file in the form
of HTML comments: `<!-- speaker_note: Your speaker note here. -->`.
- `--speaker-notes-mode=publisher` CLI option is used to present slides.
In this mode, speaker note comments are ignored and not rendered, and
every time the slide changes, an IPC message is published.
- `--speaker-notes-mode=receiver` is used to view speaker notes. In this
mode, only the title of each slide and speaker note comments are
rendered. When retrieving the next command, we first check for an IPC
message to change slides.
- If `--speaker-notes-mode` is not specified, no IPC structures are
created, no messages are published/listened for, and speaker notes are
ignored and not rendered.

## Demo:

https://github.com/user-attachments/assets/ee75452b-5ea5-4d02-a599-3d7e8d9f69c0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants