Features/RandrSupport

= Randr support =

Summary
Use the capabilities offered by the Xrandr X extension throughout the desktop.

Owner

 * Name: Søren Sandmann, sandmann@daimi.au.dk

Current status

 * Targeted release:  Fedora 9
 * Last updated: 2008-04-09
 * Percentage of completion: 100%

The new capplet is in rawhide. The necessary bits are in gnome-settings-daemon. These pieces came too late to get it upstream for Gnome 2.22, that should happen in the next Gnome development cycle.

Control center and gnome-settings-daemon changes are in.

Drag-and-drop configuration of multihead works.

Clone support has been added.

Some amount of polish has been added to the capplet.

Hotplug support is limited, since it would require polling in the X server, which drives power consumption up quite a bit. Instead, we've added a "Detect Displays" button.

Application changes to improve their handling of dynamic configuration changes has largely been punted to F10.

Detailed Description
The Xrandr extension is the modern interface that X servers offer for configuring output devices such as monitors, projectors, LCD screens, etc. Modern desktops should take advantage of this interface to improve the way they handle display configuration and hotplugging.


 * GTK+ needs to use Xrandr instead of the older Xinerama extension to obtain information about screen geometry and other relevant monitor information. A prototype patch for this has been produced during this years Google Summer of Code, and has been committed to GTK+ trunk after some further tweaking. See #439588


 * The screen resolution capplet needs to be rewritten on top of Xrandr. Bryan Clark has done some initial design work on this. Ideally, system-config-display can get folded into this, too.


 * The desktop, in particular the window manager, should be aware of the logical vs. physical screen distinction. This means that it should be possible to treat two monitors as one desktop with the panels stretching all the way across, or have the desktop on one monitor with the projector being used for a presentation.

Here is a mail by Søren that explains in some detail how the pieces for this feature work together, and what parts are still missing.

Benefit to Fedora
Fedora will gain modern display configuration and hotplugging support, on par with or better than Ubuntu's displayconfig-gtk.

Ubuntu has now switched from displayconfig-gtk to this capplet, too, so we have some synergy here.

Scope
This needs changes in GTK+, control-center (for the screen resolution capplet), metacity, gnome-panel and nautilus and possibly others (for better multihead awareness), and system-config-display.

Test Plan

 * Use the display capplet on supported hardware, and test that all supported features work (rotation, resolution changes, multihead configuration)


 * Test with a variety of monitors that the capplet displays meaningful names for them


 * Test hotplugging with supported hardware


 * Test that the ui degrades gracefully if certain features are not supported

User Experience
1. User plugs in second monitor at work 1. The system configures the same multihead setup that he used the last time with this monitor. 1. A notification bubble informs him about the reused configuration and offers to run the display capplet. 1. In the display capplet, the user can change the configuration, e.g. move the external monitor from the left to the right. 1. User goes to meeting room, plugs in projector. 1. The system updates the multihead configuration automatically again. 1. The presentation software displays the presentation on the projector and the notes on the internal monitor, without any tweaking

(If everything works together perfectly...)

Dependencies

 * The X server currently does not generate the events that the Xrandr spec provides for monitor changes. Fixing this may need kernel changes to provide the necessary information.


 * The X servers 'virtual size' is currently only configurable via xorg.conf. This needs to be changeable at runtime.


 * The X server needs to capture key combinations like 'Fn + F7' that are usually reported via ACPI, and turn them into suitable X events.

Contingency Plan
Ship the unpatched upstream display capplet. Users will not have any nicely integrated randr support and will have to use the xrandr commandline tool.

Documentation
Documentation should ideally be accessible via the help button in the capplet (not there yet). It should probably explain that the big rectangles in the top area represent monitors/projectors by their vendor/model names, and that you can drag them around (can you ?). The remaining controls should be pretty self-explanatory. What needs to be explained is that the system remembers existing configurations based on the connected monitor models (also worth pointing out that this information is stored in ~/.gnome2/monitors.xml. The restriction of hotplugging to a small set of supported hardware should be mentioned.

Release Notes

 * The screen resolution capplet will offer extended configuration options for any X server that has the Xrandr 1.2 extension.


 * Hot-plugging of monitors and/or projectors will only work on certain hardware (Intel 965)

Comments
I noticed you want to be on part atleast with displayconfig-gtk. So why not just use it or base your work on the existing tool? - RahulSundaram

There should be also some kind of automatic fallback mechanism: imagine you have a Laptop, one external display, and deactivate the LCD of the Laptop to work just with the external display. If you now deconnect the external one you don't see anything. RandR should detect that automatically and should bring back the LCD! - RolandWolters