Presenting Under Linux: xrandr

This is a mini-primer on using xrandr to configure a second screen under Linux, but first I'll start with some background.

I've been a linux user for a few years now but when I started working for Ibuildings I started giving presentations, either as a speaker or when delivering training - and for a long time I used to boot into Windows for those, using a VM if I needed to code.

The main reasons I wasn't comfortable using Linux to present were:

  • I have Powerpoint and I use the presenter view a lot
  • Linux doesn't automatically find and configure monitors like Windows can.

Since Ubuntu Intrepid Ibex (8.10), its been possible to reconfigure screen in Linux without restarting X. But I was kind of scared of xrandr and I still liked the Powerpoint presenter view so I just carried on with windows. Then I realised that Open Office had also released a presenter view and I gave it a try. With one obstacle removed it was time to learn to work xrandr, which means I can also work external monitors without fiddling with xorg.conf, very useful. I'm now pretty confident with it so here's the benefit of my wisdom*

xrandr

The first thing to do is figure out what you have and what your options are. So plug in the second screen and run xrandr with no arguments. On my system I get something like this:

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 2560 x 1024
VGA connected 1024x768+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024      60.0 +   75.0
   1024x768       75.0*    60.0
   800x600        75.0     60.3
   640x480        75.0     59.9
   720x400        70.1
LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 304mm x 190mm
   1280x800       60.0 +   50.0
   1024x768       85.0     75.0*    70.1     60.0
   832x624        74.6
   800x600        85.1     72.2     75.0     60.3     56.2
   640x480        85.0     72.8     75.0     59.9
   720x400        85.0
   640x400        85.1
   640x350        85.1
HDMI-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)

This shows VGA (your external output) and LVDS (the laptop screen) and all the various modes they support. I sometimes see output under HDMI-1, and this seems to cause problems so I always turn off this output by running:

xrandr --output HDMI-1 --off

Next I send a command to set the resolutions on both screens. For projectors I tend to go with 800x600 as this almost always works and it means the text on my laptop screen is then so large I can see it from several feet away!

xrandr --output LVDS --mode 800x600 --output VGA --mode 800x600

Its perfectly fine to have different resolutions on both machines but bear in mind that X has one desktop and will show you sections of it on each monitor so if they're different sizes you sometimes get either bits missing off one monitor or one of the outputs looks stretched. I don't really have any general advice with this other than get the projector in the right ratio and then fiddle with the available modes to see what works for you.

To set the second screen to be different from the first (i.e. tiled rather than mirrored), just tell xrandr where you want it.

xrandr --output LVDS --mode 1280x800 --output VGA --mode 1024x768 --right-of LVDS

Again you'll get sections of a single desktop, not two separate areas, so things might look odd if they are on both screens. For me this command has worked really well since I got to grips with it in the last few months, and I've plugged various machines in to various external monitors and given a few different talks. I'm sure there is a lot more to know about xrandr but I haven't needed it yet - hope this is helpful! If you have any experiences with this or anything to add, just drop a line into the comments form.

* I'm not an expert by any means, but the above works for me on Ubuntu with my Thinkpad T400 and my Acer Aspire One.

6 thoughts on “Presenting Under Linux: xrandr

  1. Thank you so very much lady. I have been struggling with this under ubuntu for quite a while and tried out a bunch of packages so far but none seemed to fit the profile and now I have it.

    Long live open source and sharing people :)

  2. I've been giving a few talks in the last few months and I'm increasingly realising that although I love my thinkpad, its overkill for anything where I don't really need the hardware, or where I don't want to be carrying a full-size laptop all day. So I'm

Leave a Reply

Please use [code] and [/code] around any source code you wish to share.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>