Morphing windows

Registered by David Barth


When someone offers you a file, a notification bubble appears containing “Accept” and “Decline” buttons. Instead … needs morphing windows (bug 347081)

Blueprint information

David Barth
Matthew Paul Thomas
Needs approval
Cody Russell
Series goal:
Proposed for karmic
Milestone target:
Completed by
David Barth

Related branches



The agenda of the meeting is
 1. Introduce the concept of morphing windows
 2. Discuss the implementation
 3. Identify development steps and milestones for the karmic cycle

1. Introduction
 The concept originated from the notification development thread
 Morphing windows provide an alternative way to interact with the user.
 The concept is described in more details at
 The concept encompasses
 morphing alert box
morphing windows
Feedback from the audience (Guadalinex) (correct me if i'm wrong)
using an ID card that is previously using notifications with actions (3 buttons)
we should refer to the Hermes project that makes heavy use of notifications (and actions)
The concept relies on raising a window, but in the background and unfocused by default (to prevent focus stealing if the window manager does not handle that already)

2. Implementation discussion
 The feature would be provided as a library
 It is not a service that the notification system should provide, nor should it be a part of libnotify (unless it becomes usefull as part of the xdg discussion)
 The implementation would provide a frame A and frame B
 Opportunity to use the gtk timeframe
 (that's gtk timeline really)
 Note: should follow up at Guadec/Akademy
 for the implementation details
 Note: the morphing window feature can apply to a top-level window

3 options (non-exclusive)
 - can extend or shrink the (toplevel) window frame
 - can (in-replace) replace a set of widgets with another one
 - can re-use the existing frame
 Adding to the design discussion
 The concept should allow for grouping a set of staked dialog windows, and instead re-use the available window frames
 Launchpad is using the same concept of morphing windows (searching for an example)
 On the resize operation, we should support resizing in both directions (vertical / horizontal)
 We may provide a smooth transition between two frames, including with the ability to fade out / fade in widgets
 (and/or frames)
 The Ajax library that provides this morhoinbg window feature should be taken as an example

 cody to implement a prototype that can swap to sets of widgets
 cody/dbarth to check the Ajax library features

(Thanks to Paolo Sammicheli for the summary)


Work Items

This blueprint contains Public information 
Everyone can see this information.