libxrandr-utils - Centralized Multi-head Configuration Logic
Generalize monitor layout logic from X.org's xrandr tool into a high level monitor configuration library for use by GUI tools.
Currently, there are a number of different systems for handling monitor configuration. Each system has its own algorithms, and are maintained by completely different groups of people. All of these systems use the same underlying X library, called libXrandr. However, this is a very, very low level library. As such, it requires a higher level wrapper code to perform configuration changes. Currently each tool maintains their own algorithms for configuring monitors. This blueprint proposes to centralize that logic into an X.org library, that can be more closely tested and supported on the X side.
Blueprint information
- Status:
- Not started
- Approver:
- Sebastien Bacher
- Priority:
- Medium
- Drafter:
- Bryce Harrington
- Direction:
- Approved
- Assignee:
- Bryce Harrington
- Definition:
- Approved
- Series goal:
- Proposed for raring
- Implementation:
- Deferred
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
seb128, 2012-07-11: setting the port of gnome-control-
raof, 2011-11-16: The xrandr protocol work is unlikely to land in Precise; protocol work takes lots of time ☺. Marking it as postponed, but I'll be working on it on and off.
Work Items
Work items:
[apw] Send prototype edid-write kernel to bryce: DONE
[bryce] Coordinate and set up libxrandr-utils project and git tree with X.org: DONE
[bryce] Add enums and other constants from xrandr.c into libxrandrutils, with unit tests: DONE
[bryce] Create copy of xrandr.c to refactor from, and create an a/b test: DONE
[bryce] Refactor name_t structure and related routines into the library. Write tests. Migrate xrandr.c to use it. Verify tests: DONE
[bryce] Refactor output_prop_t structures and related routines into the library. Write tests. Migrate xrandr.c to use it. Verify tests: DONE
[bryce] Migrate the transform_t structure and routines into the library. init_transform, set_transform, copy_transform, et al. Write tests. Migrate the xrandr.c copy to use the library's transform_t code: DONE
[bryce] Migrate mode related bits. Write and verify tests: INPROGRESS
[bryce] Migrate crtc_t and related bits. Write and verify tests: POSTPONED
[bryce] Migrate output_t and related bits. Write and verify tests: POSTPONED
[bryce] Create new structure ala gnome-rr's ScreenInfo: POSTPONED
[bryce] Create a demo program to show libxrandr-utils functionalities: POSTPONED
[raof] Code-review of libxrandr-utils: POSTPONED
[raof] Incorporate functionality into libxrandr-utils from gnome-desktop's gnome-rr.c code: POSTPONED
[raof] Prepare a branch of gnome-desktop using libxrandr-utils: POSTPONED
Implement a way to associate input devices with outputs so when monitor's rotated, input is too: BLOCKED
Implement defining outputs by display type (monitor, projector, phone, tv, ...): TODO
[bryce] Implement functionality for changing the primary display: POSTPONED
Implement a list of registered configurations that clients can select between: BLOCKED
[raof] xrandr protocol needs a way to restore system to state before the client made changes: POSTPONED
[raof] Add custom randr modes support to gnome-settings-
[raof] Merge windows driver import code from displayconfig-gtk into gnome-display-
[ubuntu-x-swat] Add libxrandr-utils support to the nvidia config tool: BLOCKED
[bryce] Investigate how to identify EDID-less monitors to apply quirks: POSTPONED
Dependency tree
* Blueprints in grey have been implemented.