Imprint | Privacy Policy

Multiplexing

Jens Lechtenbörger

Created: 2024-12-18 Wed 12:44

1. What is this?

  • Multiplexing means that your audience views your presentation on their devices
    • State of your presentation mirrored on their devices
  • Three ingredients
    1. You control the master presentation
    2. Publicly accessible URL for client presentations
    3. Publicly accessible socket.io server to distribute master events to clients

2. Instructions

2.1. Basic setup

  • Please follow instructions in README of reveal.js
  • Obtain your own socketID and secret and use them as in header of this presentation
  • Point audience to URL of client presentation
    • Replace .html to obtain client URL: _client.html
      • Maybe generate with org-re-reveal-publish-to-reveal-client (see GitLab CI for client presentation below)
      • (Or export with C-c C-e v v as usual, which generates client and master presentations)

2.2. Presentation in Git?

  • Obviously, you should not publish the master presentation containing the secret
    • Otherwise, your audience might use the master URL and mess with your presentation
    • My approach
      • Use separate file, say private/secret.org
        • Add private to .gitignore
        • Add #+REVEAL_MULTIPLEX_SECRET: 0815... to file private/secret.org
        • In presentation, replace #+REVEAL_MULTIPLEX_SECRET: 0815... with #+INCLUDE: "private/secret.org"

2.2.1. GitLab CI for client presentation

  • Publish presentations with emacs-reveal as GitLab Pages
    • In .gitlab-ci.yml create bogus secret in before_script:
      • mkdir private
      • "echo '#+REVEAL_MULTIPLEX_SECRET: 42' > private/secret.org"
        • Note quotation marks above
    • Use org-re-reveal-publish-to-reveal-client to publish client presentation

2.2.2. Local master presentation

  • Generate master presentation locally
    • Present with Firefox from local file system
      • This works with multiplexing and speaker notes
        • (May need to set security.fileuri.strict_origin_policy to false if local fonts are refused; use separate profile then)
        • Without node installation mentioned in README of reveal.js