Beamer is a LaTeX class for creating slides for presentations. beamer-control allows you to simultaneously control two PDF viewers to synchronize slides—displayed with a projector—and notes—displayed on a laptop screen. beamer-control uses the AT-SPI accessibility framework to communicate with any compatible viewers, such as evince.

Setup (in the case of the Awesome window manager)

  1. Ensure you are running at-spi2-registryd.
  2. Run beamer-control and use xwininfo to identify its window identifier.
  3. Configure Awesome to treat beamer-control as a floating window; write the following to your Awesome configuration, where Beamer Control is the window identifier from the previous step:
awful.rules.rules = {
      { rule = { name="Beamer Control", instance = "python3" }, properties = {floating = true}},

A workflow

  1. Add the following to your presentation's preamble to ensure every slide has a note, and thus the number of slides and note pages are equal:
  1. Add the following to allow building either the slides or notes from the command line:
\ifcsname ifshowOnlyNotes\endcsname\else
\expandafter\let\csname ifshowOnlyNotes\expandafter\endcsname
\csname iffalse\endcsname

\setbeameroption{show only notes}
  1. Build slides with pdflatex presentation.tex.
  2. Build notes with pdflatex --jobname=notes "\let\ifshowOnlyNotes\iftrue\input{presentation}".
  3. Open the slides using evince and place them on one screen in presentation mode.
  4. Open the notes using evince and place them on the other screen in fullscreen mode.
  5. Run beamer-control and place on the notes screen (anywhere but the top-left corner).
  6. Control the presentation by placing the focus on beamer-control and pressing the up or down arrow keys.