Make the Most of Your Presentation

Note: In the meantime, there is a new program called pympress which does everything (and more) which these scripts are doing… Check it out!

I worked there scripts out for my MacBook2,1 running Ubuntu 8.04. I had presentations made with the great beamer package for LaTeX which result in a pdf-file and my aim was to see the next slide on my notebook screen during the presentation so that it is easier to remember the right transitions…

The first script will actually only turn on the external video output. I configured the xorg.conf such that it is above my notebook screen, but that doesn’t really matter. It also turns on the IR deamon so that it is possible to use the infrared remote control to switch pages. I assigned all buttons on the remote to “next”, only the “back”-button to “back” to avoid miostakes.

# get rid of spurious outputs
xrandr --output TV --off --output TMDS-1 --off
 
# ensure that there is (only one) irxdaemon running
irdaemon=$( ps ax | grep "irxevent" | awk '{ print $5 }' | grep "irxevent" )
if [ -z "$irdaemon" ]	# if irxevent is not running
then
	irxevent -d
fi
 
# toggle the projector
if [ "$(xrandr -q | grep "VGA" | awk '{ print $3 }')" = "(normal" ]	# if the projector is off
then
	xrandr --output LVDS --auto --pos 0x0 --output VGA --auto --mode 1024x768 --pos 0x-800
	gconftool-2 --set /apps/panel/toplevels/top_panel_screen0/monitor --type integer 1
	gconftool-2 --set /apps/panel/toplevels/bottom_panel_screen0/monitor --type integer 1
else
	xrandr --output LVDS --auto --output VGA --off
fi

Now this script handles the opening of the pdf-file. Due to a bug, one has to play around a bit until the right version appears on the right screen. However, this version works for me; you have to switch the main presentation into fullscreen mode by pressiong Alt+f in the xpdf window.

In the end, you have to Ctrl+c the script — I decided to not test if the xpdf sessions are still alive to keep the computer as responsive as possible (although it would most probably not matter)

#!/usr/bin/env bash
 
DIR=~
TIMELIMIT=0.1
FILE=/tmp/seenpdfpages.out
lastpage=0
 
# open the master
xpdf -title sbusch_presentation_main -cmd ${DIR}/main.pdf > $FILE&
# let it gather itself
sleep 1
 
while true
do
	currentpage=`grep "page" $FILE | tail -n 1 | awk '{ print $3 }'`
	if [ "$currentpage" != "$lastpage" ]
	then
		lastpage=$currentpage
		let previewpage=$currentpage+1
		# open or update the preview
		xpdf -fullscreen -title sbusch_presentation_preview -remote presentation ${DIR}/main.pdf $previewpage&
	fi
	sleep $TIMELIMIT
done

Leave a Reply