Skip to content

evilz/vscode-reveal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

596 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vscode-reveal install

codecov Quality Gate Status

This extension let you display a reveal.js presentation directly from an opened markdown document.

demo

Full documentation here

Development platform baseline

The extension targets engines.vscode: ^1.105.0 and keeps @types/vscode aligned to the same API generation.
This baseline matches the current stable extension platform while still allowing patch/minor compatibility updates for contributors and CI.

Features

Markdown

Create reveal.js presentation directly from markdown file, open or create a new file in markdown and use default slide separator to see slide counter change in the status bar and title appear in the sidebar.

Since Reveal.js use marked to parse the markdown string you can use this in your document:

  • GitHub flavored markdown.
  • GFM tables

Fragments can be authored directly in markdown with attributes (no raw HTML needed):

- First point {.fragment}
- Then emphasize this {.fragment .highlight-red}
- Finally this one {.fragment data-fragment-index="2"}

Paragraph shown later {.fragment .fade-up}

If you need a sample file you can get it here: https://raw.githubusercontent.com/evilz/vscode-reveal/master/sample.md

Status bar

As soon as your markdown document has at least two slides, slides counter will appear in the status bar on right.

Clicking on slide counter will launch preview on right, and you can now see the local address of express server used to host Reveal presentation. Clicking on the address will launch presentation in the browser.

You can stop express server when you want by clicking on the red square.

Sidebar and navigation

Now in version 2, you can see a list of all your slides on the sidebar. The list will show the first line of text that is found in the slide, most of the time it will be a title, but it can also be an image or something else.

Blue icon is used to show horizontal slide, orange is used for vertical ones.

Clicking on slide name will move the cursor on beginning of the slide in the editor. If the preview is opened it will also show the selected slide on it.

Theme

reveal.js comes with a few themes built in:

  • black - Black background, white text, blue links (default)
  • white - White background, black text, blue links
  • league - Gray background, white text, blue links
  • beige - Beige background, dark text, brown links
  • sky - Blue background, thin dark text, blue links
  • night - Black background, thick white text, orange links
  • serif - Cappuccino background, gray text, brown links
  • simple - White background, black text, blue links
  • solarized - Cream-colored background, dark green text, blue links
  • blood - Dark background, thick white text, red links
  • moon - Dark blue background, thick grey text, blue link

You can set it using revealjs.theme parameter in Vs code config or in the document itself using front matter.

If you want a custom theme you can do it! Just add custom style to a CSS file in the same folder that your markdown.

example: if your file name is my-theme.css just add this in the front matter header :

---
customTheme : "my-theme"
---

Note that you can use both theme and custom theme at the same time. Your custom theme will be loaded after to override default reveal.js theme.

Highlight Theme

You can use code block in your markdown that will be highlighted by highlight.js. So you can configure the coloration theme by setting revealjs.highlightTheme parameter of VS Code, or set it using front matter.

---
highlightTheme : "other theme"
---

Get the theme list here https://highlightjs.org/

Diagram server (Kroki)

Diagram languages supported by Kroki (for example mermaid, plantuml, graphviz, etc.) can be rendered remotely.

  • revealjs.diagramServerEnabled (default: true) keeps current behavior and renders diagrams as images.
  • revealjs.diagramServerUrl (default: https://kroki.io) lets you target your own Kroki-compatible endpoint.

For a fully local/offline mode, set:

diagramServerEnabled: false

In this mode, diagram code blocks are kept as plain code blocks and no remote diagram request is made.

Reveal.js Options

You can customize many setting on for your reveal.js presentation.

Configuration contract notes (validated by unit tests):

  • Runtime-only/frontmatter options: author, autoPlayMedia, customHighlightTheme, customTheme, defaultTiming, description, display, enableTitleFooter, fragmentInURL, logLevel, logoImg, notesSeparator, separator, verticalSeparator.
  • VS Code-contributed only options: hashOneBasedIndex, showSlideNumber.
NameDescriptionDefault
revealjs.notesSeparatorRevealjs markdown note delimiternote:
revealjs.separatorRevealjs markdown slide separator^( ?| )---( ?| )$
revealjs.verticalSeparatorRevealjs markdown vertical separator^( ?| )--( ?| )$
revealjs.themeRevealjs Theme (black, white, league, beige, sky, night, serif, simple, solarizedblack
revealjs.highlightThemeHighlight ThemeZenburn
revealjs.diagramServerEnabledEnable remote diagram rendering through a Kroki-compatible servertrue
revealjs.diagramServerUrlBase URL of the Kroki-compatible diagram serverhttps://kroki.io
revealjs.controlsDisplay controls in the bottom right cornertrue
revealjs.progressDisplay a presentation progress bartrue
revealjs.slideNumberDisplay the page number of the current slide
revealjs.historyPush each slide change to the browser history
revealjs.keyboardEnable keyboard shortcuts for navigationtrue
revealjs.overviewEnable the slide overview modetrue
revealjs.centerVertical centering of slidestrue
revealjs.touchEnables touch navigation on devices with touch inputtrue
revealjs.loopLoop the presentation
revealjs.rtlChange the presentation direction to be RTL
revealjs.shuffleRandomizes the order of slides each time the presentation loads
revealjs.fragmentsTurns fragments on and off globallytrue
revealjs.embeddedFlags if the presentation is running in an embedded mode, i.e. contained within a limited portion of the screen
revealjs.helpFlags if we should show a help overlay when the questionmark key is pressedtrue
revealjs.showNotesFlags if speaker notes should be visible to all viewers
revealjs.autoSlideNumber of milliseconds between automatically proceeding to the next slide, disabled when set to 0, this value can be overwritten by using a data-autoslide attribute on your slides
revealjs.autoSlideMethodThe direction in which the slides will move whilst autoslide is activetReveal.navigateNext
revealjs.autoSlideStoppableStop auto-sliding after user inputtrue
revealjs.mouseWheelEnable slide navigation via mouse wheel
revealjs.hideAddressBarHides the address bar on mobile devicestrue
revealjs.previewLinksOpens links in an iframe preview overlay
revealjs.transitionTransition style (none/fade/slide/convex/concave/zoom)default
revealjs.transitionSpeedTransition speed (default/fast/slow)default
revealjs.backgroundTransitionTransition style for full page slide backgrounds (none/fade/slide/convex/concave/zoom)default
revealjs.viewDistanceNumber of slides away from the current that are visible3
revealjs.parallaxBackgroundImageParallax background image
revealjs.parallaxBackgroundSizeParallax background size (CSS syntax, e.g. 2100px 900px)
revealjs.parallaxBackgroundHorizontalNumber of pixels to move the parallax background per slide
revealjs.parallaxBackgroundVerticalNumber of pixels to move the parallax background per slide

YAML Front Matter

You can change settings directly in your markdown file using front matter style. You can change all extention settings like this :

---
theme : "white"
transition: "zoom"
---

Note do not add revealjs. prefix before setting name.

Create a new presentation

You can scaffold a new presentation directly from built-in templates:

  • run the command Revealjs: New presentation from template
  • choose a starter template (Minimal, Code-heavy, Speaker notes, or Custom theme)
  • pick where to save the .md file

When a template needs local assets (for example Custom theme), the extension creates only the required supporting files next to your presentation.

Open preview on right side

To display the preview on the right side you can :

  • click on slide count in status bar
  • click split icon in sidebar header
  • call command Revealjs: Show presentation by side

The preview will be synchronize with the current cursor position.

Open in browser

To display presentation in the browser you can:

  • click on server address in the status bar
  • click the icon in sidebar header
  • call command Revealjs: Open presentation in a browser

This uses VS Code's native external URL API by default (same behavior as opening a URL from VS Code).

If revealjs.browserPath is set, the extension uses that executable path to launch the presentation instead of the VS Code default external opener.

Presenter view / speaker notes

To open a dedicated presenter workflow (speaker notes + current/upcoming slide):

  • call command Revealjs: Open presenter view in browser
  • or use Revealjs: Open presentation in a browser, then press S

How it works with the main deck preview:

  • presenter view opens a browser tab for the current deck and automatically launches Reveal.js speaker view in a second popup window
  • navigation stays synchronized between the deck tab and the speaker window
  • speaker notes authored in markdown (note: / <aside class="notes">) are shown in the presenter window

Supported execution modes:

  • ✅ external browser mode (default browser or revealjs.browserPath): fully supported
  • ⚠️ VS Code webview side preview: does not provide a first-class presenter popup workflow

Print to PDF

To export your presentation to pdf you can:

  • click on PDF icon in the sidebar
  • call the command Revealjs: Export in PDF

This opens the print URL using the same browser resolution rules as above:

  • if revealjs.browserPath is set and valid, that executable is used
  • otherwise VS Code's native external URL API is used Be sure to set print setting correctly:
  • No margin
  • print background

Export static Website

To export your presentation to a static website you can:

  • click on HTML icon in the sidebar
  • call the command Revealjs: Export in HTML

The export runs in the extension host and then opens the export folder using VS Code native APIs.

Folder-open fallback behavior:

  • first try revealFileInOS (native reveal in file manager)
  • if unavailable, fallback to vscode.env.openExternal with a file:// URI

Plugins

Disable slideout menu

---
enableMenu: false
---

Disable chalkboard

---
enableChalkboard: false
---

Disable title footer

---
enableTitleFooter: false
---

Disable zoom

---
enableZoom: false
---

Disable search

---
enableSearch: false
---

FAQ

Note : The first time, Windows will ask you about the firewall. If you open the port for the application, you can see your presentation remotely.

Known Issues

Please add issues on github.