Skip to content
This repository has been archived by the owner on Sep 16, 2019. It is now read-only.

Feature Request: Presentation Mode #13

Closed
udfalkso opened this issue Jul 12, 2016 · 25 comments
Closed

Feature Request: Presentation Mode #13

udfalkso opened this issue Jul 12, 2016 · 25 comments

Comments

@udfalkso
Copy link

It would be great if I could present my presentation without the markdown showing and without having to export this to a file. Much like Powerpoint's presentation mode.

  • Go full screen
  • Support up/down left/right arrows and spacebar for navigating slides.
  • Esc to quit and return to editing mode.
@ff6347
Copy link

ff6347 commented Jul 13, 2016

plus speaker notes

@nyaray
Copy link

nyaray commented Jul 14, 2016

@fabiantheblind in the name of keeping things simple, I'd say that speaker notes probably is a feature of it's own (a new issue, perhaps?).

They require a new window (speaker view) to appear and having that synced with the main window (presentation view), so I'd say there's a bit of hidden work in that feature :P.

EDIT:
Also, I'd love to see that the speaker notes were parsed as markdown... but that probably belongs under said issue.

@ff6347
Copy link

ff6347 commented Jul 14, 2016

@nyaray done

@yhatt
Copy link
Owner

yhatt commented Jul 16, 2016

I'm sure anyone think this issue. So am I. (yhatt/mdslide#5)

I also had thought the other day that delivering a presentation just with Marp might be super-useful.
A my co-worker made a presentation (of course created by Marp) yesterday, but he showed the screen of 1:1 slide view mode to the audience while switching slide by moving editor's caret. 😓

Currently we are focusing enhancements as the presentation writer. But its maturation would be a trigger of implementing the presentation mode!

@nyaray
Copy link

nyaray commented Jul 19, 2016

@yhatt would you mind merging a PR for this? I'd really like to use this for presentations and am willing to figure out what needs to be done if you are too short on time to explain.

EDIT: I haven't started any work, but if you're open to accepting the changes I'll start in the near future :)

@yhatt yhatt added this to the v0.1.0 milestone Jul 19, 2016
@yhatt
Copy link
Owner

yhatt commented Jul 19, 2016

@nyaray OK, I'll merge. I made clear milestones. We would aim it to the first minor release.

@will-hart
Copy link
Contributor

will-hart commented Aug 10, 2016

@nyaray have you had a chance to look at this? I've been trying to work with exported PDFs but the exported image quality is very low.

I thought as a concept something like the following:

  • User selects "presentation mode" in the main window (win1)
  • win1 sends an IPC to the browser process including the currently selected slide contents
  • browser process opens win2
  • browser process sends through the slide contents via IPC to win2
  • win 2 opens as a 1:1 slide view which renders the current slide contents passed by IPC
  • win1 displays presentation mode, which includes speaker notes, navigation controls and views of the current and next slide
  • When the user clicks next/previous in win1 it sends an IPC to the browser process containing the HTML (or Markdown?) of the new slide to show
  • win2 receives the forwarded IPC and updates the displayed content
  • if the users clicks "end presentation" on win1, an IPC is sent and win2 is closed. Win1 comes out of presentation mode

A fair bit of work I think in hooking up the IPCs, but it could possibly use the existing code for 1:1 previews so would prevent some duplication.

There could possibly be an issue with running multiple marp windows, so maybe would need to somehow address the IPC directly to a particular window.

EDIT: this could be useful https://www.npmjs.com/package/electron-window-manager

@nyaray
Copy link

nyaray commented Aug 10, 2016

@will-hart Nope, no work quite yet; I've been caught up with work as I unexpectedly found myself in extra responsibilities. Also, marp's missing features are a bit of an excuse to not finalise a talk I'm planning on giving at work ...

I've been working with node.js at work, so I guess it'll be useful for contributing to this, especially since we've done some IPC stuff :). I agree, there's quite a bit of synchronisation to do! It would make sense to break it down into parts though, in order to not create a mess in the code.

I suggest breaking the work down into something like the following:

  • Main window presentation mode - fullscreen(?), only showing content
  • Change slides with the arrow keys
  • Presenter window, initially just follows the main window
    • Stuff to do, which likely can be done in any order/at the same time:
    • Add note displaying, maybe extracted from the slide comments
    • Share control over slides, next/previous
    • Display next (add option for previous?) slide
    • HH:mm-timer with Play/pause and reset

Any thoughts?

@gcnew
Copy link

gcnew commented Oct 19, 2016

I just hacked in some sort of presentation mode. It's not polished by any means, nor is it friendly to the rest of the code. I'd be happy to improve on it and send a real PR (if @yhatt is interested and helps with suggestions :)). In the mean time, if anyone is interested, here is my fork/commit:

gcnew@0dc3ee4

Features:

  • button for presentation mode
  • exit presentation mode with escape
  • navigate with arrows

This was referenced Oct 20, 2016
@yhatt yhatt modified the milestones: Marp Next (for v1.0.0), v0.1.0 Nov 7, 2016
@mindplay-dk
Copy link

I have my speaker notes in <!-- comments --> inside my file.

I'm quite happy with that. I don't think we need any additional syntax or features for this?

I plan on simply cursoring through the file to track my progress while speaking - since the app will track and display the slide under the cursor, all that's really missing for me, is the ability to detach the slide view from the main window and full-screen it.

Being able to see only my notes would be a step down - being able to see the text and my notes together is more useful, as often the words on the slides are also cues.

In my opinion, that would be better than cursor-navigation, since I can track my progress not just per slide, but per line in the file.

That's much simpler, and it's already how you're used to working (and practicing) with your slides while you're creating them - having identical flows while creating and presenting in my opinion is much better than having to (mentally) switch modes.

Editing and previewing with Marp already (IMHO) is the best possible flow of any presentation software ever - being able to make minor corrections (typos etc.) instantaneously while presenting would be super powerful! Why change anything at all? :-)

@majkinetor
Copy link

+1

@yhatt yhatt removed this from the Marp Next (for v1.0.0) milestone Oct 8, 2018
@cekvenich
Copy link

Wait, so how do I present?

@d0ugal
Copy link

d0ugal commented Dec 9, 2018

Wait, so how do I present?

I exported to PDF and used https://pdfpc.github.io/. It worked great tbh, I was skeptical but I was able to get a really good setup this way. It was a little more work than I'd like but the result was good.

@cekvenich
Copy link

@d0ugal Thx. I installed and tried, but PDF outputs images that are hard to read.

@cekvenich
Copy link

ftw, I used this lib via npm to generate webpages to paginate/present, via Pug.
Example: install mbake via https://www.staticgen.com/metabake
and then mbake -l
will emit example with a readme file.
Happy to answer questions on my solution.

@yhatt
Copy link
Owner

yhatt commented Dec 23, 2018

There is a christmas gift from marp-team! Today we have released the first stable CLI interface of Marp Next at marp-team/marp-cli.

It can output HTML file for presentation now. Open converted HTML in your Chrome / Firefox, or use Marp CLI's --preview option.

By hitting f in the converted HTML, you can present deck in full-screen. The example is available in https://github.com/yhatt/marp-cli-example, and I hosted its deck by Netlify: https://yhatt-marp-cli-example.netlify.com/

It has not the rich features (e.g. speaker notes, remote control), but we think it fills MVP. We are going to work continously to support presentation mode in Marp Web, the web-based GUI interface of Marp Next.

@cekvenich
Copy link

I tested it. VERY NICE!

It renders a bit different than the GUI tool.

@bkaradzic
Copy link

It would be really nice if there was presentation mode in editor (nothing complicated, just to put preview full screen and ability to flip slides). This extra CLI tool seems a bit too much for simple use case.

@yhatt
Copy link
Owner

yhatt commented Apr 30, 2019

@bkaradzic Yeah, it is still our goal. I'm focusing to enhance new Marp ecosystem (Marp Next), and CLI tool is a minimum requirement to present the deck in the new ecosystem.

I'm aiming to be easy to develop editor and presentation mode by simple modulized libraries (e.g. Marp Core + Marp React / Marp Vue). Our roadmap has a plan to develop presentation mode in a renewed Marp editor, the migrated interface from desktop app to web-based React + PWA app.

However, I have to take care whole of Marp Next ecosystem, so just lack resources to develop editor (The member of Marp team for developing Marp Next tools is still only me). A renewed Marp would be different from desktop app, so I expect appearing the community-driven editor, that has presentation mode, by using Marp Core and its integrations.

@bkaradzic
Copy link

Still don't get it why all this has to happen before presentation mode is possible? It seems existing Marp contains everything needed for simple presentation mode (since already can preview slide). Only thing would be to add handling left/right buttons when presentation part of window is in focus.

Anyhow, yesterday I was just using external .pdf viewer (SumatraPDF) that automatically reload .pdf on changes. So streamlining export to .pdf and opening external PDF viewer would be sufficient from my POV.

@yhatt
Copy link
Owner

yhatt commented Apr 30, 2019

Warn again: we have already dropped maintenance of current Marp because of several security risks. Don't expect any update for yhatt/marp. It is destined to die with no more changes.

We don't stop your work in a forked repository if you could accept CoffeeScript that has no future.

@bkaradzic
Copy link

Old Marp have advantage of being one simple app. This install node.js to run some CLI to see presentation is not better model. If I wanted to run server I would pick Go language present package and do it myself, definitely don't want Marp CLI / node-nonsense.js stuff...

I had pleasure working on my presentation yesterday with Old Marp... I downloaded, unziped, and was making stuff in no-time. That's actually advantage of Marp. But if you think that making it more complicated is what this project needs, go ahead, it's your project. :)

@yhatt
Copy link
Owner

yhatt commented May 1, 2019

That is our goal as I said. A planned (and re-newed) Marp Desktop would replace for yhatt/marp. The old Marp looks like a simple, but has the worst maintainability by developer: Outdated language, no tests, and security risks.

I just have not time to work for Marp Desktop yet, that's all.

@yhatt
Copy link
Owner

yhatt commented May 9, 2019

UPDATE: Marp CLI v0.9.x has shipped together with standalone binaries. There is no requirements like Node and Docker, and just use the downloaded binary from release page.

Below command would open a window with ready to presentation in Chrome:

marp -p --no-output [your-slide-deck.md]

@harsh183
Copy link

Glad to see there is still ongoing development on this. What's the rewrite version's take on remote support?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests