‘The half minute which we daily devote to the winding-up of our watches is an exertion of labour almost insensible; yet, by the aid of a few wheels, its effect is spread over the whole twenty-four hours.’

Running pdfpc in StumpWM

Benjamin Slade

pdfpc is a fantastic application for presenting PDF slides, including perhaps especially those produced using LaTeX Beamer. It creates two (full-screen) windows, one a presenter viewer which shows the time elapsed and a preview of the next slide, and one the presentation view which is what is shown to the audience. It also has a bunch of other cool features like being able to draw on slides; highlight areas of slides, &c.

Here is an example, with the presenter’s view shown on the left; the audience’s view on the right:

In many environments pdfpc is pretty smart about getting the presentation view to the external display, but in StumpWM both end up getting created in the same frame in the same display.

(General tip: in StumpWM, after connecting/activating an external display, you may need to run refresh-heads to get StumpWM to display things properly.)

For whatever reason, I can’t get any of the Screen-related things in StumpWM to behave like I have more than one screen. E.g. *screen-list* shows a singleton list even when an external display is connected and activated:

STUMPWM> *screen-list*
(#S<screen #<XLIB:SCREEN :0.0 1366x768x24 TRUE-COLOR>>)

A passable solution is to use define-frame-preference, adding the following to your init.lisp StumpWM configuration:

;; pdfpc rule - for 'Default' group
;;  move to frame '1';
;;  non-focussing ('nil) the presentation view;
;;  not only matching (t) the target-group ('Default');
;;  moving the 'pdfpc' 'presentation' window
(define-frame-preference "Default"
  (1 nil t :instance "pdfpc" :role "presentation"))

This should properly move the presentation window to the external display when pdfpc is run.