Mir and unity-mir surface management
This blueprint is meant to capture the work towards creating a surface management policy within Mir to provide a consistent user experience across a variety of shell clients. This blueprint may also include intermediate steps required to achieve this.
previous work in Trusty/14.04 can be found here https:/
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
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
====Mir Surface Management====
Working with design on surface placement & behavioral policies, this is a proposed plan of attack for implementing/
Qt demo application (and later chromium) will be used for validating the concepts.
This list assumes that works off the knowledge that we have some shell (full screen, windowed/
* arbitrary resize of non-fullscreen regular surface (screen avail to minimum)
* maximize, minimize of a non-fullscreen, veritcal/horizontal snap/maximizing
* alt+tab (or right edge gesture) for regular surfaces
* snap-to-edge & unsnap of regular surfaces (sidestage/
* rotate regular surface reflow & input
* alt+tab (or right edge gesture) for snapped surfaces & unrelated surfaces
* show surface z order behavior render order/input for all surface types (single app, multi app), maybe add in presence rules (e.g. can't have a child without a parent) note: it would be nice to have dynamic toggles for the presence of particular surface types & perspective view (similar to spread)
* child surface spawning, movement (w/ and w/o parent), dismissal, exit (w/ and w/o parent)
* child surface w/ regular surface parent maximize/minimize
* child & parent rotation including input
* non-full screen regular surface with app & system chrome support
* maximized/
* rotation including chrome
* full screen of regular surface with app & system chrome support (where chrome hides)
* content sharing/drag-drop with hinting (e.g. surface highlighting for those that can take the content type)
* spread for multi surfaces incl multi surfaces for 1 app (e.g. 2 regular surfaces, or child+parent)
* workspace concept (collection of surfaces, behavior of surface type in workspace, e.g. no orphans)
* multimonitor for multiple surfaces (including differing resolutions) & moving surfaces from one to the other
* multimonitor for multiple workspaces & changing workspaces
Work Items
Work items:
[vanvugt] wire up states to shellinator (e.g. mir_surface_
[vanvugt] Add a create-
[vanvugt] Add a popup window state: TODO
Dependency tree
* Blueprints in grey have been implemented.