Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

See also:

Summary

This specification describes the user interface, packaging and code aspect of a GTK port of the displayconfig tool of guidance, the KDE system administration suite.

Rationale

Most hardware of the system is configured automatically. But this is not the case for screens and graphic cards. E.g. currently there is no graphical way in a GTK/GNOME environment to extend the desktop to a second screen. Furthermore this tool is required for a failsafe mode of the X server to correct misconfigurations.

Use Cases

Implementation Plan

displayconfig-gtk will be accessed from the existing System > Preferences > Screen Resolution dialog, via an "Advanced..." button on that dialog.

Since guidance already provides a backend for the X server configuration written in Python, the main task will be to write a frontend with pygtk.

There should be some interaction/cooperation with xrandr developers. Pascal Schoenhardt works on a Google SoC project to get xrandr 1.2 support to GNOME.

Since xrandr1.2 support is still fairly new, the configuration would still be based on an existing xorg.conf, but make use of the xrandr to apply configuration changes instantly. This will use different mechanisms, but should result in the same result.

If the changes require to restart the X server we send a safe restart signal to the gdm daemon. The backend detects if we neeed to restart x, the computer or can apply the changes instantly.

Locations/profiles will be implemented by using a different xorg.conf for each one.

If there is a change in screen devices, such as if the user has swapped monitors, the old display should be grayed out and the new xrandr-detected one highlighted. A dialog should be presented to the user informing them of the change in monitors, and allowing them to either keep or discard the old monitor (in case the monitor change is only temporary).

To ensure integration with existing gconf based XRandR configuration, we have to reset them if the user changed the resolution in displayconfig-gtk. (The frontend runs as the user, since we use dbus).

Since displayconfig-gtk will also be used as a primary configuration tool in failsafe modes, it will also be necessary to start up displayconfig-gtk with some additional widgets, such as a welcome screen and a 'skip' button. See the BulletProofX spec for complete details.

Implementation

  1. Pre-requisites
    • python bindings for xrandr 1.2. Possibly ctypes would be enough. (See mvo)
    • separate backend package from kde-guidance, with some minor patches included. (See Jonathan)
  2. Get displayconfig-gtk and a separated guidance-backend into main
    • Add apport hook for attaching xorg.conf and output from displayconfig-gtk -w pcitable.txt

  3. Use D-Bus to split displayconfig-gtk into a backend and frontend
  4. Raise awareness of the tool by news, blog and mailing list postings to get bug reports early
  5. Include support for different locations/profiles
  6. Evaluate if python bindings or ctypes could be used best for XRandR
  7. Include xrandr 1.2 support in the backend for instant applying of changes
  8. Add a screens changed mechanism to the backend and include a dialog for these cases in the frontend
  9. Evaluate the removal of GNOME's resolution changing tool (gnome-display-properties) from the menu
  10. Ensure correct documentation and recommendation of the GNOME RandR applet for power users in the desktop guide

Out of Scope

User Interface

Style

To be consistent with the other system administration tools of GNOME a capplet approach using explicit apply is chosen.

Object of the capplet

The main object of the capplet are screens. But since we cannot always ensure to detect the screens and their name correctly we have to make it possible for the user to define screens by the corresponding graphics card and output.

Basic layout

The capplet is separated into three sections:

Requirements

Screenshots

UDS Sevilla

displayconfig1.jpg displayconfig2.jpg displayconfig3.jpg displayconfig4.jpg

Current

current-screens.jpg current-gfx.jpg

Test Plan

Unit Testing

Acceptance Testing

Usability Testing

Comments

DisplayConfigGTK (last edited 2008-08-06 16:16:51 by localhost)