Launchpad Entry : stracciatella-session

Created : 2009-02-18

Contributors : Rick Spencer, Mark Shuttleworth, Sebastien Bacher, Martin Pitt

Packages affected: notify-osd

Summary

We provide an easy way for users and developers to get a "mostly GNOME upstream" (vanilla) session with only very few Ubuntu modifications (some brown crumbs).

Release Note

Ubuntu 9.04 is the first release with Ubuntu specific desktop components (notification system and messaging indicator). Users and developers who want run software in a more traditional GNOME environment can install the gnome-stracciatella-session package, which adds a new session type "GNOME (without Ubuntu specific components)" in the GDM login manager.

Rationale

We want software developers to be able to test their software in a GNOME environment as well as in the Ubuntu Desktop, which has some different parts (notifications, messaging indicators, etc.).

We also want GNOME to be able to deliver their intended experience to users.

Use Cases

Fred develops an tea timer applet. He usually uses Ubuntu, but wants to check whether his latest version still looks good and works well under a standard GNOME desktop. He installs "gnome-stracciatella-session", chooses the "Upstream GNOME" session in gdm, and lands in a desktop without messaging indicator and the standard notification-daemon.

Scope

This works on component granularity, not on the level of patches. We currently do not have the infrastructure to provide a real "pure" GNOME environment, since some patches will even be required just to build and work at all under Ubuntu. Instead, we make an effort that when we exchange a component of GNOME, such as the notification system, we provide the upstream GNOME one as an alternative.

We do not want to use anything that modifies the user's configuration, such as changing gconf keys or configuration files.

For Jaunty our particular focus is the messaging indicator and the new notification system (notify-osd). Further components will be added to it in future Ubuntu releases when Ubuntu modifies/replaces more components.

Design

We create a new package gnome-stracciatella-session which provides a new session "GNOME (without Ubuntu specific components)" and pulls in some upstream GNOME components. notify-osd will run the standard notification-daemon if that session is selected. The messaging indicator applet will not appear if that session is selected. The upstream evolution notification applet will be enabled if the user previously enabled it.

Implementation

gnome-stracciatella package

Package gnome-stracciatella-session :

provides a new session type /usr/share/xsessions/gnome-stracciatella.desktop , running /usr/bin/gnome-stracciatella-session

/usr/bin/gnome-stracciatella-session is a shell script which defines GDMSESSION=gnome-stracciatella and runs /usr/bin/gnome-session

pulls in the notification-daemon package as a dependency.

D-BUS activated services

For D-BUS activated services like notify-osd we modify their .service files to run the upstream service:

Exec=/bin/sh -c "if [ \"$GDMSESSION\" = gnome-stracciatella ]; then exec /usr/lib/notification-daemon/notification-daemon; else exec /usr/lib/notify-osd/alsdorf"

The Conflicts:/Replaces: notification-daemon needs to be dropped and replaced with a diversion of notification-daemon's D-BUS .service file.

These two steps will make the packages co-installable and start the wanted daemon based on the selected session type.

Messaging indicator

There is currently no clean way to use a different GNOME panel layout for different sessions, since it is all hardcoded in gconf. So we have to assume that the messaging indicator applet will always start, even in the GNOME session. It can't just exit() , since then the panel will pop up a dialog to say that the applet unexpectedly crashed and offer to restart it.

For Jaunty, we will use a nonintrusive approach: In the stracciatella session, the applet will just not do and display anything at all. Then evolution-indicator will send notifications into the void and thus appear "sufficiently" disabled as well.

Upstream evolution notifier

Evolution does not have a method of enabling/disabling plugins other than disabling them in gconf (by default they are enabled). evolution-notifier (upstream) and evolution-indicator (Ubuntu specific for now) thus can and will run side by side.

No action is required on those two for providing a stracciatella session.

Migration

No migration is involved, this should not ever become the default session.

Test/Demo Plan

Install packages gnome-stracciatella-session and libnotify-bin .

In a standard Ubuntu session:

Run notify-send hello world ; this should bring up the notify-osd like black notifcation bubbles.

Start pidgin; this should make the messging indicator appear in the panel.

Now log out, back in, and choose the session "GNOME (without Ubuntu specific components)" in gdm:

Run notify-send hello world ; this should bring up the traditional yellow notification-daemon bubbles.

Start pidgin; you should not see the messging indicator appear in the panel at any time.

CategorySpec