Skip to main content

Makes impress.js presentations from reStructuredText

Project description


The merge of convenience and cool!

Hovercraft! is a tool to make impress.js presentations from reStructuredText. For a quick explanation, see the demo.


  • Write your presentations in a text markup language. No slow, limiting GUI, no annoying HTML!

  • Pan, rotate and zoom in 3D, with automatic repositioning of slides!

  • A presenter console with notes and slide previews!

  • Support for showing mathematical formulas.

  • Styling is easy with CSS.

  • The slide show generated is in HTML, so you only need a web browser to show it.

  • Easy sharing, as it can be put up on a website for anyone to see!

Full documentation is available at, and also in the documentation subdirectory.


Hovercraft requires Python 3 and can be installed like any Python package.

The easiest way is to install pip, and then run:

$ pip3 install hovercraft

Juan Bondi has made videos of how to install:

Hovercraft is untested on Windows, but there is no reason it shouldn’t work, at least in theory.


Hovercraft! was written by Lennart Regebro <>, and is licensed with an MIT license, except for the following:

  • reST.xsl is (c) Michael Alyn Miller <> and published under a BSD-style license included in reST.xsl itself.

  • impress.js is (c) Bartek Szopka (@bartaz) released under MIT and GPL licenses. See the impress.js page for more information.

Other contributors (see CHANGES.txt for details):

  • Carl Meyer [carljm]

  • Chris Withers [cjw296]

  • Fahrzin Hemmati [fahhem]

  • Christophe Labouisse [ggtools]

  • Paul Schoenfelder [bitwalker]

  • Bernhard Weitzhofer [b6d]

  • Russ Ferriday [topiaruss]

  • Henrik Blidh [hbldh]

  • Ian Castleden [arabidopsis]

  • Mario Bodemann [mariobodemann]

  • Jürgen Hermann [jhermann]

  • Adam Johnson [adamchainz]

  • Frederik Möllers [frederikmoellers]

  • David Baum [naraesk]

  • Keith Maxwell [maxwell-k]

  • Tony S Yu [tonysyu]

  • Carlos Cámara [ccamara]

  • Ramiro Morales [ramiro]

  • Johannes Wünsch [PostPollux]

  • Mark Kohler [mkohler]

  • Brian Murray [murraybd]

  • Maxime Weyl [MaximeWeyl]

  • Bart Kummel [bartkummel]

  • Baptiste Mispelon [bmispelon]

  • Martín Gaitán [mgaitan]

  • Eugene Yunak [yunake]

  • Nejc Zupan [zupo]

  • Graham Williamson [00willo]

  • FredInChina [ReblochonMasque]

  • Dan Jacka [danjacka]

  • Juan Biondi [yeyeto2788]


2.7 (2020-02-08)

  • Added the pre-check for file or folder existence when serving or creating the presentation.

  • Juan Bondi made videos of the installation.

2.7beta1 (2019-11-06)

This release moves Hovercraft! over to impress.js 1.0.0. This version of impress.js has many new features and a new plugin system, which has plenty of benefits, especially since some features of Hovercraft!, primarily impressConsole.js, now are plugins to impress.js, so that’s less maintenance burden on me.

The most obvious changes from the previous version of Hovercraft! are:

  • The --skip-help argument, and :skip-help: control now disables the help popup altogether. This is because impress.js currently has no way to stop the help from displaying on load except disabling the help completely. This may change in the future.

  • Also switched the default MathJax to 2.7.5, a minor update. impress.js MathJax extension is simply just Mathjax, there is no additional integration, so Hovercraft! doesn’t change how Mathjax is integrated.

  • Hovecraft! now supports the new impress.js “substep” plugin, so that you can show paragraphs lists item by item (see documentation).

Other changes are:

  • You can now include audio and video by including the HTML5 <video> and <audio> tags in ..raw: html sections.

  • Dropped support for Python 3.5, added support for 3.8.

  • Many, many documentation fixes and improvements.

2.6 (2018-10-04)

  • The ReStructuredText directive “figure” now is translated into the HTML5 tag “figure”, with the caption becoming a figcaption tag.

  • Restored the warning that you need Python 3.5 or higher when trying to install with Python 2.

  • Simplify in-process execution of Hovercraft! [tonysyu]

  • Document how to make custom directives. [tonysyu]

2.5 (2017-12-10)

  • Hovercraft! now displays the version number when called with -v or –version.

  • New version of impressConsole that includes styling of the previews and a goto command <G>.

  • :css-console: and :css-preview: added to style the console and add extra styles in the previews.

  • auto-console:

    and -a had stopped working [maxwell-k].

2.4 (2017-07-18)

  • Option to display slide numbers [frederikmoellers]

  • #51: Positioning relative to other slide [naraesk]

  • Removed the code that uses pkg_util to access included templates. We don’t support installing Hovercraft! as a ZIP file anyway, so it only complicates things for no good reason.

  • Support for .. header:: and .. footer:: that can be used for static content.

  • Dropped support for Python 3.3 and 3.4, because I now use recursive glob.

  • Templates can now have a resource-directories statements, to specify extra directories of resources. This can be used in templates for JS libraries, like MathJax.

  • The MathJax argument can now be a local copy.

  • Switched the default MathJax URL to

2.3 (2017-04-12)

  • Better implementation of #98

  • #72: Support for adding additional JS files [hbldh]

  • Upgraded impress.js to 0.6.0

  • Support for mathematical formulas with Mathjax [arabidopsis]

  • Default template use UTF-8 [mariobodemann]

  • Added support for Python 3.6

  • readthedocs moved domain [adamchainz]

2.2 (2016-10-15)

  • #98: Presentation not update when using gedit

2.1 (2016-02-27)

  • #87: Support multiple :css: statements. [bitwalker]

  • #86, #88: In-template resources failed for external templates.

  • #89: The file monitoring could make the CPU go to 100%. [b6d]

  • #81: positions.rst example was out of date.

  • Dropped Python 3.2 support, because docutils doesn’t seem to work on Python 3.2 any longer. With docutils 0.9 it probably still works.

  • Updated tests to work with newer Pygments.

  • #96: Relative paths was not working.

  • #91: When modifying included files the presentation was not updated.

2.0 (2015-06-14)

  • Better support for :class:. [fahhem]

  • Now supports data-perspective. [fahhem]

  • Fixed typos in [fahhem, ggtools]

2.0b1 (2014-11-27)

  • IMPORTANT! The positioning has been reimplemented. The most important change is that there is no longer any calculation of relative movement when you use absolute coordinates. Therefore, if you use absolute coordinates on some slides and then have no coordinates on other slides, your positioning may no longer be correct with version 2.0.

  • IMPORTANT! Moved the “note” XML transformation into the templates, as this is an impress.js feature, and other libraries, such as Reveal.js, will render it differently. If you make your own templates, you need to update them accordingly!

  • Relative coordinates (starting with r) are now supported for all positioning, attributes including rotation and scaling.

  • Now includes a server-mode, that will serve the presentation via http and also re-generate the presentation if the source-files change.

  • Images can now also have a :class: attribute.

  • Added support for multiple levels of slides. This is to make it able to support for example Reveal.js through external templates.

1.1 (2013-03-15)

  • ReST comments are no longer rendered to HTML. [carljm]

  • Fixed a bug in the path handling for CSS resources. [carljm]

  • Various fixes and improvements in ReST handling. [cjw296]

1.0 (2013-02-22)

  • #1, #2: Add key-binding to pop up the help, a parameter and a presentation field setting to not show the help at load.

  • Added documentation for #8: Naming steps.

  • #7: You can now define CSS-files to be included with a :css:-field in the presentation.

  • #3: You can now leave out the presenter notes from the output with the parameter -n or –skip-notes

  • Added a “simple” template that has no presenter console.

  • Updated to impress-console 1.1, fixing a Firefox bug.

  • Added support for more HTML metadata.

  • Finished documentation and examples.

1.0b2 (2013-02-13)

  • Added syntax highlighting support.

  • #9: All positioning variables except data-x and data-y are now “sticky” so

    they will keep their previous value if not defined.

  • Documentation on

1.0b1 (2013-02-07)

  • Initial release.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hovercraft-2.7.tar.gz (195.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page