[CentralOH] Using Projectors; General Presentation Stuff

jep200404 at columbus.rr.com jep200404 at columbus.rr.com
Tue Jul 24 22:00:48 CEST 2012

This is about a technical aspect of giving presentations, 
particularly about how to get a projector to work with a 

At the 2011 PyOhio, many presenters had difficulty getting their 
computers to work with the presenters. This was most noticeable 
during the "Lightning Talks" where each presentation was limited 
to five minutes. Some presentation struggled with connecting to 
the projectors longer than their presentations. There were some 
presenters that were unable to give their presentations because 
they could not figure out how to use the projectors with their 
laptop. It's frustrating and embarrassing to struggle with getting 
projectors to work with one's computer, in front of a crowd. 
So the need to prepare for using projectors at presentations 
became obvious. 

In short:

   Don't wing it.

   Practice connecting to external displays.

Much of what follows are things to think about and things to try, 
but not pat answers. One will need to read the manuals and experiment. 
Many examples below are particular to Xubuntu 11.10, so details 
will differ for various computers and operating systems, but many 
of the concepts apply across various operating systems. 


   Get _something_, _anything_ to display. This is the hardest part. 

   Coping with stuck off displays (both external and internal). 

       Here are some things to try to get unstuck. 

       Switch "consoles": <Ctrl><Alt><F1> then <Ctrl><Alt><F7>
       Cycle through <Fn><CRT/LCD>
       Unplug and replug external display.
       Open and close laptop lid. 
       Check for bent pins in video connectors. 
       On external display, manually select input. 
       Manually select resolution. 
           External display's automatic input selection 
           and laptop's automatic output driving, do hide and seek dance. 
       _If_ manually selecting output resolution, start with low resolution, 
       such as 640x480, then 800x600, then 1024x768. 
       Restart GUI display settings program.
       ssh into the dark computer and execute command to bring 
       the computer display back to sanity. 
           Figuring the right command can be difficult. RTFM. 
           Sometimes one will settle for a graceful shutdown or reboot.

       Although one should read manuals, many of the interactions 
       between software and hardware for using external displays is 
       highly idiomatic, for which there is no documentation. 
       For example of idiomatic behavior, with the same operating 
       system on two different laptops, closing and opening the lid 
       on one of them tends to turn on all displays, and provoke 
       a pop-up asking which displays I want on, while the other 
       laptop tends to lock up. One will have to just figure things 
       out by brute force experimentation and testing. Keep notes 
       of what one does and what the results were. 

    Practice connecting to different external displays. 
    Practice, practice, practice. 

Making it look good. 

    After one has something displayed on a projector, 
    then one can progress to making it look _good_. 

    Adjust projector settings. 

        I have experienced maladjusted displays. 
        Be prepared to change projector settings. 

            Consider changing to normal or "factory" settings, 
            then tweaking as needed. 

            Manually select input. 
                This can be helpful when the projector has multiple inputs 
                and can not "find" the connected computer. 
            Reset brightness and contrast to normal. 
            "Optical" keystone correction is good. 
            "Digital" keystone correction can cause Moire patterns. 
                Disable automatic ("digital") keystone correction. 
                    Set keystone correction to none (in middle). 

    Use actual native resolution of external display

        Displays look best when driving an external display at 
        its actual resolution. Most external displays will 
        _tolerate_ several resolutions, but the actual native 
        resolution looks best, so output from one's computer, 
        the actual resolution of the external display. 
        xrandr usually indicates the "preferred" resolution. 

        bad effects of mismatched resolution:

            blurriness from stretching or squishing

                Provoke with: 
                xterm window full of 'W' characters. 
                xrandr --output VGA1 --mode 640x480
                xrandr --output VGA1 --mode 800x600
                xrandr --output VGA1 --mode 1024x768

            Moiré pattern

                Provoke with: 
                xterm window full of 'W' characters. 
                jam_video_mode 1016 764
                jam_video_mode 1024 760
                jam_video_mode 1024 768 71
                xterm window full of 'E' characters. 
                xrandr --output VGA1 --transform 1,0,0,0,1.01,0,0,0,1

        Make background that shows common resolutions.

            The following seems like overkill, but shows the idea. 

            Xubuntu 11.10 defaults to automatically showing the size of 
            smaller display as a shaded region on the display that 
            has more resolution. 

        Consider having presentation on different workspaces,
        one workspace per resolution, already tweaked to go.
        have xrandr commands for that resolution ready to go.

        Laptops with displays that have more resolution than the external 
        display are nice. One can use the extra space to privately 
        display things such as notes and the time remaining.  Also, one 
        can position the output to show only the presentation content 
        on the external display, focusing the audience's attention on 
        that presentation and avoiding distractions such as operating 
        system toolbars and icons. That also avoids wasting space on 
        the external display. 

        By the way, most projectors have 1024x768 or 800x600 resolution. 

Programs to control display outputs

    GUI programs

        Of course they are intuitive. When they work well, they help. 
        When things aren't working well, they often get in the way. 

        Many GUI tools have bugs.

            For example, xfce4-display-settings will often not correctly 
            update the options available for the remaining display, 
            when an external display is unplugged while xfce4-display-settings 
            is running. (A workaround is to kill that instance of 
            xfce4-display-settings and restart it.)

        All GUI tools have limitations: 

            Can not choose resolution not on list. (most)
            Can not overlap displays of different resolutions. (Unity)
            Can not arbitrarily align displays (most)
            Aspect ratio mismatches. 

            Consider making one's GUI wrapper for xrandr commands. 

    Command line programs

        Command line programs offer the greatest flexibility and control. 
        They can also be used when the screen is dark, either by knowing 
        what to type (without seeing what one is typing), or by ssh'ing 
        into a dark computer. They also require effort to learn how to us. 

aspect ratio: 

    Most projectors have 4:3 aspect ratio. 
    Many laptops have 16:9 aspect ratio. 

    xrandr will only allow one to choose one of the resolutions that 
    the display says that it likes. Often a display likes only 
    resolutions with the same aspect ratio as the actual display resolution. 
    However, many displays will show resolutions that they don't actually like. 
    When a laptop's display has a different aspect ratio than the external 
    display, it can be difficult to choose resolutions that one needs. 
    The jam_video_mode[1] command can make and try to use an arbitrary 

Need to see laptop display because presenter is facing audience. 

    When the presenter is facing away from the external display, 
    the presenter has to rely on the laptop's display. 
    Some laptops, especially 'netbooks', have less resolution 
    that the external display, so the presenter can not see 
    what the audience sees. See the --scale option in the 
    example xrandr commands below for a way to cope with such 
    a situation. 

Example commands to study and play with. 

xrandr --output VGA1 --off
xrandr --output VGA1 --auto
xrandr --output VGA1 --preferred
xrandr --output VGA1 --mode 1024x768
xrandr --output VGA1 --mode 800x600
xrandr --output VGA1 --mode 640x480
xrandr --output VGA1 --mode 1024x768 --rate 60
jam_video_mode 1024 768 71
# show how setting position can be used to crop window of interest
xrandr --output VGA1 --pos 1x72 # for Xfce Terminal Emulator
xrandr --output VGA1 --pos 50x50
# The --same-as option is a short cut for --pos 0x0. 
# There are other positioning options that are also short cuts for --pos. 
xrandr --output VGA1 --same-as LVDS1 --mode 1024x768
# Each time one hits return key, the external display position 
# is changed randomly. 
awk '{x=128*rand();y=128*rand();system(sprintf("xrandr --output VGA1 --pos %dx%d
# The --scale option can be helpful when using external displays with more 
# resolution than the laptop display has, especially when can see the laptop 
# display, but is facing away from the projector screen. It's a compromise. 
# The squished laptop display will not look as good as the projector screen, 
# but at least one will be able to see all that the audience sees. 
xrandr --output LVDS1 --scale 1.3333x1.3333  # 1920x1200 / 1440x900
# Following is great for using 1024x768 projector with 1024x600 netbook.
xrandr --output LVDS1 --scale 1x1.28 # 1024x768 / 1024x600

# default brightness is 1. 
# It is not unusual to need to tweak this. 
# First consider setting projector's brightness to normal. 
xrandr --output VGA1 --brightness 1
xrandr --output VGA1 --brightness 2
xrandr --output VGA1 --brightness 0.5
xrandr --output VGA1 --brightness 0
# default gamma is 1:1:1
xrandr --output VGA1 --gamma 1:1:1
xrandr --output VGA1 --gamma 2:2:2
xrandr --output VGA1 --gamma 0.5:0.5:0.5
# http://en.wikipedia.org/wiki/Gamma_correction

xrandr --output VGA1 --rotate normal
xrandr --output VGA1 --rotate left
xrandr --output VGA1 --rotate right
xrandr --output VGA1 --rotate inverted
# default transform is 1,0,0,0,1,0,0,0,1
xrandr --output VGA1 --transform 1,0,0,0,1,0,0,0,1
xrandr --output VGA1 --transform 0.707,-0.707,0,0.707,0.707,0,0,0,1
xrandr --output VGA1 --transform 0.9,-0.507,0,0.707,0.707,0,0,0,1
xrandr --output VGA1 --transform 0.9,-0.207,0,0.707,0.707,0,0,0,1
xrandr --output VGA1 --transform 1,0,0,0,1,0,0,0,1
xrandr --output VGA1 --transform 1,0,0,0,1.01,0,0,0,1
xrandr --output VGA1 --transform 1,0,0,0,1.02,0,0,0,1
xrandr --output VGA1 --transform 1,0,0,0,1.03,0,0,0,1
# transform is slow (likely software based)
# transform seems to do anti-aliasing


More general comments about technical side of giving presentations. 

Arrive early to futz with projector and internet, 
to get them working _before_ your presentation starts. 

Have menus or commands to control display, ready to execute. 

Don't rely in internet access.

    Internet access is unreliable. 

    If you are going to use network, work out those details early. 

    If you really want to do live demo of stuff from internet, 
    be sure to have backup that shows how it should look. 
    Done right, the audience will not even not that anything is amiss. 

KISS: Have content in simple or well-supported formats. 

    plain text
    browser based (from local content on local computer)
        Brandon's presentation restructured text, html, css, browser.


    Presentation on USB flash drives. 

        If you can not present from your laptop, borrow somebody 
        else's laptop, with your USB flash drive plugged into it. 
        This works well when your content is an a format (such as 
        in KISS section above) that stock software on most laptops 
        is likely to be able to show. 

        Bootable flash drive with OS and presentation. 

            If your presentation relies on software that most people 
            are not likely to have installed on their laptops, 
            then this is a useful option. Have all the needed software 
            installed in the flash drive. 

        One can consider presenting from content on a USB flash drive as 
        the main way of giving a presentation. For backup, have extra USB 
        flash drives.

    Have presentation on the web.

        Use this ONLY as backup, not as main way of presenting. 

        Have URL written on _paper_. 

    extension cord
    outlet strip
    3-prong to 2-prong adapter

    spare laptop

    spare fully-charged battery (or batteries)

display time remaining to oneself.

display notes to oneself in part of laptop display that audience 
can not see. 

[1] jam_video_mode is a little script to create and use video modes 
    of arbitrary resolution and frequencies. For finer control, 
    tweak the output of cvt. 

        $ cat ~/bin/jam_video_mode
        cvt $* \
        | awk -f ~/bin/jam_video_mode.awk \
        | tee ~/jam.log \
        | sh -v
        # cat jam.log
        $ cat ~/bin/jam_video_mode.awk 
        /^Modeline / {
           sub("^Modeline ","")
           print "xrandr --delmode VGA1 "$1" 2>/dev/null"
           print "#sleep 1"
           print "xrandr --rmmode "$1" 2>/dev/null"
           print "#sleep 1"
           print "xrandr --newmode " $0
           print "#sleep 1"
           print "xrandr --addmode VGA1 "$1
           print "#sleep 1"
           print "xrandr --output VGA1 --mode "$1

    Get rid of the custom modes created by jam_video_mode. 

        xrandr | awk '/_/ {print $1}' | xargs -n 1 xrandr --delmode VGA1
        xrandr | awk '/_/ {print $1}' | xargs -n 1 xrandr --rmmode

More information about the CentralOH mailing list