Mir on the Phone (iteration 0)

Registered by Robert Ancell

This blueprint is meant to capture the efforts needed to prepare Mir for supporting shell integration, for the purposes of Ubuntu, this means UnityNext. The first goal is to achieve alpha integration of Mir & Unity Next with the "small screen" form factors in mind (you might say phone), since "medium" to "large" screen devices are a super set to the "small" screen devices. Based on review of design specifications & experince from wide range of analysis on previous technologies, the focus will be on building out surface management controls for rendering & input support for the shell. Secondary will be reporting/logging as well as some form of application "management" (management is kind of a bad word here....more like "app tracker/info provider" for the shell.

Acceptance criteria:
for March / ubuntu-13.04-month-5:
#1) have input events captured/delivered to the associated target surface
#2) maintain >90% testing coverege & pass rate

for April / ubuntu-13.04-month-6:
#1) Through test/example app - Mir client should be able to register & receive touch events
#2) Through test/example app - Mir client should be able to use Mir to render on client created surfaces

#1) Through test/example app - Mir client should be able to control & order surfaces through focus control


- Shell should be a separate project linking against Mir library
- Need to run shell Mir compositor inside system (Mir) compositor
- Support all current input devices
  - Keyboards
  - Mice
  - Touchpads
  - Tablets
- Standard GUI toolkits should access Mir directly
- Legacy applications need to access Mir through a rootless X server

kgunn: is android already bypass composition via hwc?

Talk between Rob and Mike about surface peeking under greeter:
* Plan for a simple DBus API like "SetNextSurface(string username, bool blur)" that only the 'lightdm' user can call.
* Greeter then just sets opacity of overlay pin
* If we need fancy transition, compositor could identify second greeter pin surface by tag or some such and overlay it onto the session surface.


Work Items

Work items for ubuntu-13.04-month-5:
[alan-griffiths] Input refactoring (don't depend on Android): DONE
[alan-griffiths] System configuration options: DONE
[didrocks] change all launchpad projects to public: DONE
[vanvugt] Enumerate surface types (client protocol and shell interface): DONE
[alan-griffiths] Expose application list to shell: DONE
[robertcarr] Client input events for keyboard: DONE
[alan-griffiths] Doxygen docs reviewed and online: DONE
[robertcarr] Shell input filter: DONE
[robertcarr] In process Qt, allowing Qt to use the shell created surfaces: DONE
[robertcarr] Qt input support: DONE
[kdub] Framebuffer Native Window Type: DONE

Work items for ubuntu-13.05:
[vanvugt] Enumerate surface states (client protocol and shell interface): DONE
[vanvugt] Client initiated maximise / fullscreen: DONE
[robertcarr] Client input events touch: DONE
[robertcarr] Surface focus in model: DONE
[alan-griffiths] Hardware cursor support (GBM/DRM): DONE
[kdub] Android display logging: DONE
[robertcarr] Keymapping through xkbcommon: DONE
[robertcarr] In process EGL - Mesa, Shell created surfaces: DONE
[robertcarr] Demo Shell - (Demonstrate overriding Shell Configuration and Input Filters): DONE
[kdub] transition android build to raring: DONE
[alan-griffiths] Split out concerns in ServerConfiguration class hierarchy: DONE
[robertcarr] Software cursor: DONE
[alan-griffiths] Growing reporting & logging support: DONE
[kdub] In process EGL - Android: DONE

Work items for ubuntu-13.06:
[robertcarr] Client focus notification (likely depends on event system from surface-states branch): DONE
[robertcarr] Multi-surface input support: DONE
[robertcarr] Surface ordering interface: DONE
[mterry] Work with Robert to determine an API for session-surface sharing for the phone greeter: DONE

Work items for ubuntu-13.07:
[robert-ancell] Mir session support in lightdm: DONE

Dependency tree

* Blueprints in grey have been implemented.