Backend for Notifications NG

Registered by Thomas Strehl

Backend items for notification ng. Backend will provide a fully tested API that can be utilized to render notifications on screen.

Blueprint information

Thomas Strehl
Needs approval
Jussi Pakkanen
Series goal:
Proposed for saucy
Milestone target:
milestone icon ubuntu-13.05
Started by
Jussi Pakkanen
Completed by
Thomas Strehl


By end of March there will be a version that receives notifications, queues them, exposes the relevant ones to the renderer. It might not follow all the rules of notification ordering but will support most.

Capturing an outline of object structure/discussion here

Performance target: no operation (including pushing the maximum of 50 notifications at once) may take more than 0.01 seconds total.

From previous discussions ----snip----
--- backend --- (C++ w/ some qml, but it's up to Jussi)

NotificationSource/Action (talk DBus/libnotify)
    queue (of Notifications)
    displayed_queue (of Notifications passed to the NotificationRenderer)

--- frontend --- (all QML)
      signal statusChanged()
      bool DisplayNotification(Notification n)


Next iteration for notifications is the extension with sounds and haptics. Sound is to some degree already covered in the hints entity of the freedesktop notification definition. As hints can be extended adding haptics shouldn't be a problem. Classic example for a notification utilizing sound and haptics is reception of SMS. The implementation on shell side depends on sound/haptics platform APIs.


Work Items

Work items for ubuntu-13.04-month-6:
[jpakkane] Collect and clarify requirements from frontend developers and design: DONE
[jpakkane] Design new architecture: DONE
[jpakkane] create a base class Action that a NotificationSource can then implement: DONE
[saviq] Review and agree on architecture of Notifications backend: DONE
[jpakkane] Create a NotificationModel manage the Notification queue and notification states, e.g. displayed, hover, timers etc: DONE
[jpakkane] create a Notification that had all the characteristics, e.g. icons, body, summary, and has: DONE
[jpakkane] create a NotificationSource to wrap dbus & construct Notifications: DONE
[jpakkane] Define public API ("internal" API uitilized by frontend/renderer): DONE
[jpakkane] Implement backend and public APIs: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.