Rootless X on Mir

Registered by kevin gunn

This blueprint contains work to implement and support a "rootless" X on top of mir in order to support legacy X apps in a Unity8/mir configuration

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Mir development team
Direction:
Needs approval
Assignee:
None
Definition:
Approved
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

A bunch of these work items probably belong in a dependency blueprint - Mir On The Desktop

Note "Synaptics" is a brand. And most touchpads supported by the X "synaptics" driver are not made by Synaptics. So it's probably a good idea to name libsynaptics as libtouchsomethingelse, rather than prolong the confusion Xorg has created.

Note, work around SDL has identified another need that will be covered under the rework around the Mir input stack.
That is to include pointer warping and motion events.
related is https://bugs.launchpad.net/mir/+bug/1276322

SDL's input requirements will be satisfied with a Viewport flag on a MirSurface - triggering pointer confinement (when focused) and relative motion event delivery - and a WarpPointer API that takes the pointer to a specified point on an application's (focused) surface.

A later addition to the Viewport flag will be opt-in keyboard-bypasses-WM behaviour, so apps which require delivery of keys that are normally eaten by the Shell (eg: <alt>+<tab>, Windows key) can receive them.

For reference, work done in Trusty/14.04 can be found here https://blueprints.launchpad.net/ubuntu/+spec/client-1404-mir-rootlessx

(?)

Work Items

Work items:
[raof] Add Viewport surface flag to Mir client API: TODO
[raof] Hook up Viewport to deliver relative pointer events and confine cursor: TODO
[raof] Add WarpPointer API: TODO
[robertcarr] Hook up Mir input to X input: DONE
[raof] Implement a bridging X compositing window manager: TODO
Design and implement Mir clipboard & drag and drop infrastructure (seems related to https://blueprints.launchpad.net/ubuntu/+spec/client-1404-mir-inter-app-data-exchange): TODO
Go over http://standards.freedesktop.org/wm-spec/wm-spec-latest.html and identify the properties that we need to handle: TODO
Evaluate how much of http://cgit.freedesktop.org/xorg/lib/libxcwm/ we can beg, borrow, or steal: TODO
Implement core X clipboard protocol http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt: TODO
Test clipboard interoperability between a Mir client and {GTK2, QT4, GTK3, QT5, Java Swing} X app: TODO
Implement core X DnD protocol: http://freedesktop.org/wiki/Specifications/XDND/: TODO
Test DnD interoperability between a Mir client and {GTK2, QT4, GTK3, QT5, Java Swing} X app: TODO
[ted] UAL API for stopping apps that are multi-instance: TODO
[ted] UAL to support starting XMir transparently for apps that need it: TODO

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.