09 December 2011

OS X Style Monitor Switching on Ubuntu

I recently decided it was complete bullshit that you can’t just plug in an external monitor and switch to it easily in Ubuntu. In OSX you’ve been able to do this for years. You just plug in your external monitor and it automatically switches to the last known good configuration for that monitor.

Anyway, with a little searching I discovered that there are some tools that you can use to get very close to this behavior on Ubuntu. I’ve been using two tools, disper and auto-disper for a few months now and they are fantastic.

Firstly, disper will let you switch to an external monitor effortlessly from the command line. Whether it’s ever seen that monitor or not, it will choose the sensible default resolution and just make it so. To wit: disper -S to switch to external, disper -s to switch back to internal (the difference is the case of the ‘s’). This tool can do much more, but that’s my 99% use case.

Then you add auto-disper --save <profile-name>; to the mix. This will let you store a profile for the current configuration of the monitors that are present. Then when you call it with auto-disper --change, it detects the present set of monitors and switches to the profile that matches them.

Depending on your graphics driver, you may or may not be able to go a step further and automatically call auto-disper --change when a new monitor is plugged in. My NVIDIA drivers won’t do that, unfortunately. If they could then it would be almost equal to the OSX functionality. As it is, it’s quite close enough, and I am happy.

I did a full writeup on how to do all of this on the Ubuntu wiki. See DynamicMultiMonitor.