The steps for a multi-head display I laid out do, in fact, work. I have run two external DisplayPort displays plus the laptop’s built-in display in Ubuntu 12.04. This worked okay in Unity, not so well in KDE (the Display app, while powerful, can’t do simple things easily), and nearly flawlessly in Gnome.
Multi-head display doesn’t work all of the time, however. Black displays, where the screen is lit black and the monitor is detected but nothing shows, happens. There’s no reconfiguration short of a power off that fixes this.
That’s where hibernation seems to come in.
UPDATE: I have a better way to test for and enable hibernation.
In a cli, execute:
sudo pm-is-supported --hibernate && echo "hibernation is supported" || echo "your system doesn't support hibernation"
If it says “hibernation is supported” you can proceed.
As root using your favorite editor edit the following file:
Add the following to the file:
[Enable Hibernate] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=yes
Save the file. Log out and log back in again. Hibernate should now be an option in your system menu.
For more information and context read the steps from the How-To Geek on Re-Enabling Hibernate in Ubuntu 12.04 (which I borrowed from).
If you can enable hibernate, do so.
This recipe has worked for me at work several times without me having to lose work.
Note that I have two older Acer brand displays at home that don’t seem to play nice with any configuration. If you possess similar kit you may encounter the same hurdles.
Let me know if this works for you, or if you have a better approach like my post on enabling hybrid suspend here.