pdfpc - Man Page

PDF presenter console with multi-monitor support


pdfpc [options] PDF-file


pdfpc is a GTK-based presentation viewer which uses Keynote-like multi-monitor output to provide meta information to the speaker during the presentation. It is able to show a normal presentation window on one screen while showing a more sophisticated overview on the other one, providing information like a picture of the next slide, as well as the time left in the presentation. pdfpc processes PDF documents, which can be created using nearly all modern presentation software.

By default the presenter view appears in the primary monitor and the presentation view in the second monitor (provided you have two monitors).


-B,  --list-bindings

List action bindings defined

-C,  --time-of-day

Display the time of the day

-d,  --duration=N

Duration in minutes of the presentation used for timer display. If not given or if a value of 0 is specified, the clock just measures the time in the presentation.

-e,  --end-time=T

End time of the presentation. (Format: HH:MM (24h))

-f,  --note-format=FORMAT

Enforce format of notes (plain or markdown. Default: markdown)

-g,  --disable-auto-grouping

Disable auto detection of overlay groups. (Default: enabled)

-h,  --help

Show this help

-l,  --last-minutes=N

In the old timer mode (see Timer below), defines time in minutes before the end of the talk when the timer changes its color. (Default: 5 minutes)

-L,  --list-actions

List actions supported

-M,  --list-monitors

List monitors known to the operating system

-n,  --notes=P

Position of second-screen beamer notes on the PDF page (left, right, top, bottom, or none. Default: none). Note that this disables slide auto-grouping.

-N,  --no-install

Allow for testing pdfpc without proper installation. Icons, configuration files, etc. will be loaded from the source path locations. Mostly intended for developers.

-p,  --rest-port

Port the REST server binds to. (Default: 8088)

-P,  --page

Go to a specific page directly after startup. In case of overlays, the first slide will be displayed.

-r,  --page-transition=TRANSITION

Set default page transition. The TRANSITION specification is of the form type[:duration[:angle[:alignment[:direction]]]]. See the Page transitions section for the list of supported types. duration is in seconds and set to 1 by default. The accepted values for angle are 0/90/180/270; alignment can be h[orizontal] of v[ertical] and direction i[nward] or o[utward]. The last three optional settings are meaningless for some of the transition types and can be left empty. Examples: "push", "dissolve:1.5", "wipe:1:90", "split:1::vertical:outward".

-R,  --pdfpc-location=LOCATION

Use custom pdfpc file.

-s,  --switch-screens

Switch the presentation and the presenter screen.

-S,  --single-screen

Force to use only one screen

-t,  --start-time=T

Start time of the presentation to be used as a countdown. (Format: HH:MM (24h))

-T,  --enable-auto-srt-load

Try loading video subtitle files automatically. For each video media, pdfpc will append ".srt" to the media URI and attempt to load a subtitle file (in the SRT format) from that location.

-V,  --enable-rest-server

Enable REST server for remote control of pdfpc.

-W,  --wayland-workaround

Enable Wayland-specific workaround. This might fix HiDPI scaling problems.

-w,  --windowed=MODE

Run in the given windowed mode (presenter|presentation|both|none). The default mode is "presenter" (only the presentation window is fullscreen).

-X,  --external-script=FILENAME

Specify a script to be executed with the 'X' (Shift+x) key during the presentation. The script must be executable but can otherwise be written in any language. The script is called with the following command line arguments:

· Name of pdf file
· Total slide count
· Current slide number
· Current user slide number

If the script exits with a non-zero return value, whatever the script wrote to stdout is printed in the console. Otherwise nothing is printed.

-Z,  --size

Size of the presentation window in width:height format (forces windowed mode)

-1,  --presenter-screen=MONITOR

Monitor to be used for the presenter screen (see the -M option).

-2,  --presentation-screen=MONITOR

Monitor to be used for the presentation screen (see the -M option).


These are the default keybindings for pdfpc:

Right cursor key / Down cursor key / Page down / Return / Space / 1st mouse button / Mouse wheel down

Go forward one slide

Left cursor key / Up cursor key / Page up / Backspace / 3rd mouse button / Mouse wheel up

Go back one slide

Shift + Page down

Go forward one user slide (see Overlays below)

Shift + Page up

Go back one user slide (see Overlays below)

Shift + Right cursor key / 1st mouse button / Mouse wheel down

Go forward 10 slides

Shift + Left cursor key / 3rd mouse button / Mouse wheel up

Go back 10 slides

Shift + n

Go forward 1 slide irrespectively of its "hidden" attribute

Shift + p

Go backward 1 slide irrespectively of its "hidden" attribute


Go to the first slide


Go to the last slide

Shift + Backspace / Shift + Space

Go back /forward in history.

Shift + Home / Shift + End

Go to the previous / next slide, skipping over overlays that have already been viewed, but at most one user slide.

Tab / 2nd mouse button

Overview mode


Input a slide number to jump to


Bookmark the current slide and store it in the .pdfpc file for later usage

Shift + m

Load the bookmarked slide which was saved with m before


Toggle the toolbox

1 / KP_1

Switch to the normal mode (pen/eraser and pointer are off)

2 / KP_2

Switch the pointer mode on

3 / KP_3

Switch the pen drawing mode on

4 / KP_4

Switch the eraser drawing mode on

5 / KP_5

Switch the spotlight mode on

Plus / KP_Add / Equal

Depending on the current mode, increase font size of notes or pointer size or the size of pen or eraser or spotlight

Minus / KP_Subtract

Depending on the current mode, decrease font size of notes or pointer size or the size of pen or eraser


Clear the drawing on the current page


Toggle visibility of the drawings; if in the drawing mode (pen/eraser), exit it


Freeze the current presentation display (the presenter display is still fully active)


Toggle between the fullscreen and windowed mode of the presenter screen

Shift + a

Maximize/unmaximize the current slide view (e.g., to increase accuracy while drawing)


Turn off the presentation view (i.e.  fill it with a black color)


Hide the presentation window (i.e. make other windows on the other screen visible)


Exit any "special" state (pause, freeze, blank)

Ctrl + n

Edit notes for the current slide (press Escape to exit this mode)

Ctrl + z

In drawing and eraser mode, undo the last added stroke or erase curve.

Ctrl + y

In drawing and eraser mode, redo the last undone stroke or erase curve.


Start timer


Pause/continue timer

Shift + t

Cycle between the timer view modes (count up/count down/current time), when applicable

Ctrl + t

Reset timer

Ctrl + o

Toggle the overlay flag for one particular slide (see Overlays below)

Ctrl + h

Toggle the hidden attribute for the current slide (see Hidden slides below)

Ctrl + e

Define end slide

Ctrl + r

Reload the presentation (e.g., if the PDF file has been updated)

Ctrl + q

Exit pdfpc


Show a cheat sheet with the keyboard and mouse bindings; press Escape or Return to exit it

Within the overview mode, the following key bindings are used:

Return / 1st mouse button

Go to currently selected page (last page of overlay)

Shift + Return / Shift + 1st mouse button

Go to currently selected page (first page of overlay)

Cursor left / Page up

Select previous slide

Cursor right / Page down

Select next slide

See pdfpcrc(5) if you want to customize the key or mouse bindings. Please note though, that only in the normal mode the mouse bindings are configurable.


Caching / Pre-rendering

To allow fast changes between the presentation slides, the PDF pages are pre-rendered to memory.  The progress bar on the bottom of the presenter screen indicates how many percent of the slides have been pre-rendered already.  During the initial rendering phase this will slow down slide changes, as most CPU power is used for the rendering process in the background.  After the cache is fully primed, however, the changing of slides should be much faster, as with normal PDF viewers.

To avoid excessive memory consumption, cached are only slides that took a significant time to render; this threshold is configurable. In order to further reduce memory consumption, the pre-rendered and cached slides are selectively compressed in memory. The compression factor is typically 10-30, however, it takes some CPU time to compress and uncompress, so there is a trade-off. Small images below a certain (configurable) threshold will not be compressed.

Please refer to the pdfpcrc(5) man page for options to fine tune the caching algorithm.


If a duration is given (-d option), the timer will show a countdown with the given parameters.  If no duration is specified (or if a value of 0 is given to the -d option), the timer will show how much time has been spent.  The duration is stored automatically, so you do not need to repeat it for every invocation.

The timer is started if you are navigating away from the first page for the first time.  This feature is quite useful as you may want to show the title page of your presentation while people are still entering the room and the presentation has not really begun yet.  If you want to start over you can use the 'Ctrl + t' key which will make the presenter reset the timer.

If a duration is given, the timer also provides hints aiding the presenter to judge whether the talk would end on time.  There are two modes in which pdfpc can operate.  In the old (and the only one available up to, and including pdfpc-4.0.8) mode, at the moment the timer reaches the defined last-minutes value it will change color to indicate your talk is nearing its end, thus mimicking a chairman frantically pantomiming in front of you with five (four, three, ...) fingers up.  A drawback of this approach is it is often too late at that moment to alter the presentation pace without ruining to some extent the rest of the talk.  On the other hand, the warning indication provides an unnecessary distraction if you have been perfectly conveying the talk and the remaining time is adequate.

Contrary to that, in the new (default) mode, pdfpc tracks your progress continuously, calculating the expected time as (talk_duration)*(current_user_slide_number - 0.5)/(total_number_of_user_slides) and comparing it to the actual wall time since beginning of the talk.  If these two numbers differ by more than 60 seconds, the timer changes its color to either orange (indicating you need to speed up) or a blueish one (need to slow down).  Once the optimal progress is recovered, the timer becomes white again. In this mode, the last-minutes option (-l) has no effect.  The previous behavior can be restored by setting the 'timer-pace-color' option to 'false' in the configuration file, see pdfpcrc(5).

In any case as soon as the timer reaches the zero mark (00:00:00), it will turn red and count further down showing a negative time, to provide information on how many minutes you are overtime.


Textual notes can be displayed for each slide.  pdfpc understands the Markdown syntax, which allows for rendering anything from plain text to a very rich formatting, if so desired.  A few types of PDF annotations are understood by pdfpc and will be automatically imported and displayed. The PDF annotations can be made using many PDF editors and even viewers;  when using LaTeX, the pdfpc package (see below) provides a convenient macro.  These "native" PDF notes cannot be edited in pdfpc.

In addition, while in the presentation mode, pressing 'Ctrl + n' will allow you to take or edit notes for the current slide.  These notes are stored in the .pdfpc file. The native PDF annotations take precedence over these notes, i.e., if a note exists for a given slide in the .pdfpc file, any PDF annotation on that page will silently override it. While editing a note, the normal keybindings are disabled, e.g., you are not able to change slides. To exit the note editing mode, press the Escape key.

Although mixing the two types of notes is possible, for a given presentation one will likely want to have either only the "native" notes (produced by the same PDF authoring software used for making the slides), or only the "pdfpc" ones. Note that if the PDF presentation changes, the notes stored in the respective .pdfpc file may get out of sync.

pdfpc also supports old-style beamer notes (see the -n option), which are typeset on a half of the "virtual" slide twice as large as the real one. Note that due to a bug in beamer, the auto-grouping feature does not work with such presentations.

Overview mode

Pressing the Tab key enters the overview mode, where thumbnails of the slides are shown in a grid.  You can select a slide to jump to with the mouse or with the arrow keys.  You can also define overlays and the end slide (see next sections) in this mode.  Press Escape to exit the mode without making an change.


Many slide preparation systems allow for overlays, i.e.  sets of slides that are logically grouped together as a single, changing slide.  Examples include enumerations where bullet items are displayed one after another, or rough "animations", where parts of a picture change from slide to slide. Pdfpc includes facilities for dealing with such overlays.

In this description, we will differentiate between slides (i.e.  pages in the PDF document) and "user slides", that are the logical slides.  The standard forward movement command (page down, enter, etc.) moves through one slide at a time, as expected.  This means that every step in the overlay is traversed. The backward movement command works differently depending on whether the current and previous slides are part of an overlay:

  • If the current slide is part of an overlay we just jump to the previous slide. That means that we are in the middle of an overlay and can jump forward and backward through the single steps of it
  • If the current slide is not part of an overlay (or if it is the first one), but the previous slides are, we jump to the previous user slide.  This means that when going back in the presentation you do not have to go through every step of the overlay, pdfpc just shows the first slide of each overlay.  As one typically goes back in a presentation only when looking for a concrete slide, this is more convenient.

The Shift + Page up/down key combinations work on the "user slide" basis. You can use them to skip the rest of an overlay or to jump to the previous user slide, ignoring the state of the current slide.

When going through an overlay, two additional previews may be activated in the presenter view, just below the main view, showing the next and the previous slide in an overlay.

Pdfpc tries to find these overlays automatically by looking into the page labels in the PDF file.  For LaTeX this works correctly at least with the beamer class and also modifying the page numbers manually (compiling with pdflatex).  If your preferred slide-producing method does not work correctly with this detection, you can supply this information using the 'Ctrl + o' key for each slide that is part of an overlay (except the first one!).  The page numbering is also adapted.  This information is automatically stored.

Hidden slides

When preparing presentation from an existing set of slides, it is sometimes helpful to mark certain slides to be skipped during the talk. The 'Ctrl + h' combination toggles the "hidden" attribute of the current slide, making it essentially invisible. It is still possible to navigate to a hidden slide either in the Overview mode, using the Goto action ('g'), or by hitting 'Shift + n' or 'Shift + p' to switch to the next/previous slide, respectively, ignoring the "hidden" attribute.

End slide

Some people like to have some additional, backup slides after the last slide in the actual presentation. Things like bibliographic references or slides referring to specialized questions are typical examples. Pdfpc lets you define which is the last slide in the actual presentation via the 'Ctrl + e' key. This just changes the progress display in the presenter screen, as to have a better overview of how many slides are left.

Page transitions

Pdfpc supports almost all standard animated PDF page transitions: blinds, box, cover, dissolve, fade, glitter (except the diagonal one), push, split, uncover, and wipe, including various alignments, angles, and directions (where applicable). The transitions are enabled only for sequential (either forward or backward) movement; in the later case, the transition is "inverted".

Advancing slides automatically is also supported.


Pdfpc can play back movies included in the PDF file.  Movies may be started and stopped by clicking within their area.  For the presenter, a progress bar is drawn along the bottom of the movie.  This expands when the mouse hovers over it, allowing one to seek by clicking or dragging within the progress bar.  Switching slides automatically stops playback, and movies will be reset after leaving and returning to a slide.

Movies may be included in PDF files as "screen annotations". In LaTeX, such movies may be added to a presentation with the "multimedia" package. Note that the autoplay option is not yet supported.

pdfpc will also play back movies linked from a hyperlink of type "launch".

See our website for a detailed explanation with examples.

Pointer mode

If needed, it is possible to turn on a pointer which draws a red (by default) dot in the place pointed by mouse cursor on both presenter and presentation screens. It is also possible to increase and decrease the pointer size. Additionally, when the pointer is enabled, it is possible to highlight some area of the current slide using the drag mouse motion. The area outside the selected region will be dimmed. You can zoom in the selected area by pressing 'z'; press 'Escape' to exit the zoom mode. You can highlight another region while zoomed in, but there will be no further action on pressing 'z'. Drawing is also disabled in this mode.

Spotlight mode

Spotlight mode is similar to the pointer mode: a circular area that moves with the mouse and can be adjusted in size, but instead of highlighting the spot by a different color, it shades the background.

Drawing mode

It is possible to turn on a mode which allows drawing over slides with the mouse cursor or a connected tablet.  When drawing mode is enabled, drawings can be made on the presenter screen. A separate drawing will be kept in memory for each slide (based on user slide numbers, so consolidating overlay slides). Drawings are presently not saved between sessions.

In the drawing mode, there are two drawing tools, a pen and an eraser. An indicator in the bottom-left corner of the presenter screen will indicate which is active. When in the pen mode, the color and size of the pen will be indicated by the cursor. The pen size can be increased or decreased using hot keys specified in the key bindings. When the eraser tool is active, the size of the cursor indicates the amount to erase.

The color of the pen can be changed through key bindings or using the toolbox.

If you are using a tablet, the pen or eraser tool will be selected based on whether the tablet reports a pen or eraser input device is being used, overriding the normal selection of the drawing tool. Also for pressure-sensitive input devices, the pressure will affect the line width and the eraser size. Both these features can be disabled in the configuration file, if desired.

Monitor Plug and Play

Pdfpc can handle monitor plug and play. E.g. if pdfpc was started before the presentation screen was attached to the computer, pdfpc can create and show the presentation screen after the second screen was attached. This allows the user to rehearse the slides and switch to a normal presentation without having the full setup at the computer in advance.

pdfpc files

Notes, user-defined overlays, and some additional information are stored in a file with extension "pdfpc".  When pdfpc is invoked with a PDF file, it automatically checks for and loads the associated .pdfpc file, if it exists. This means that you normally do not have to deal with this kind of files explicitly.

Beside internal configuration, the following command-line options are saved in the pdfpc file for later usage:

  • duration
  • end_time
  • last_minutes
  • notes (position)
  • page_transition
  • start_time


With GTK3 it is possible to modify the appearance of pdfpc. There are two locations where pdfpc is looking for files. The default location is /usr/share/pixmaps/pdfpc/pdfpc.css. It can be copied to $XDG_CONFIG_HOME/pdfpc/pdfpc.css and modified to the user's liking.

The geometry of various views (the current/next etc slide) in the presenter window can be adjusted at run time in the "Customization" mode, which is activated by pressing Shift+c. In this mode, mouse-draggable handles will appear. Exit the customization with Escape.

Desktop integration

Pdfpc provides a DBus interface that appears on the session bus as io.github.pdfpc. Other applications can, in particular, execute any action listed by --list-actions. It is also possible to control pdfpc from the command line (and write shell scripts) using the dbus-send(1) utility. For example, to advance to the next slide, run

dbus-send --type=method_call --session --dest=io.github.pdfpc
/io/github/pdfpc io.github.pdfpc.TriggerAction string:next

For actions that require an argument, use TriggerActionArg, e.g.,

dbus-send --type=method_call --session --dest=io.github.pdfpc
/io/github/pdfpc io.github.pdfpc.TriggerActionArg string:switchMode

In addition to TriggerAction*, the pdfpc DBus interface exposes the GetNotes method, three properties (NumberOfOverlays, NumberOfSlides, Url) and two signals (OverlayChange and SlideChange).

Remote control

Pdfpc has a built-in REST server. When enabled (off by default), it allows for controlling presentations over network, e.g., using a mobile device as a smart controller. (This section will be extended with more details when the REST interface sufficiently stabilizes.)

LaTeX package

A tiny LaTeX package is available for pdfpc at CTAN. It provides a convenient way to specify notes and to define certain meta properties of the presentation. For a full documentation, please consult the pdfpc package documentation. You can open it with:

$ texdoc pdfpc


Bugs can be reported at our issue tracker.


pdfpc was previously developed by David Vilar, which in turn was a fork of Jakob Westhoff's PDF Presenter Console https://github.com/jakobwesthoff/Pdf-Presenter-Console.

See Also


There are several other programs with similar functionality.

impressive(1) has nice transition effects.

hpdfp(1) is the Haskell PDF Presenter program, which packs an amazing level of functionality into not many lines of Haskell.

pympress(1) is a little PDF reader written in Python which handles dual screens and beamer notes.

dspdfviewer(1) is a specialized Dual-Screen PDF Viewer for latex-beamer for beamer-produced wide PDF with notes on the right.

Many PDF viewers have full-screen presentation modes, but without dual-monitor preview or notes or a timer. These include zathura(1), evince(1), and okular(1).

Referenced By