DesktopUNESession

Revision 17 as of 2009-12-08 20:26:43

Clear message
  • Launchpad Entry: desktop-lucid-unr-session

  • Created: 2009-11-25

  • Contributors: Rick Spencer, Martin Pitt, Sebastien Bacher, Didier Roche

  • Packages affected:

Summary

Create an alternative desktop session for Ubuntu Desktop Edition 10.04, so users can engage with the Ubuntu Netbook Edition experience.

Release Note

Ubuntu 10.04 provides an Ubuntu Netbook Edition session for traditional desktop users. On a classical Ubuntu installation, users can now install the ubuntu-netbook-{remix;edition} package, which adds a new session type "Ubuntu Netbook Remix" in the GDM login manager.

Rationale

Ubuntu Desktop Edition 10.04 is an LTS release, so few to no disruptive changes will land this cycle. The Alternative Desktop Session will allow Ubuntu Desktop users to experience the new and interesting work going into Ubuntu Netbook Edition without get constraint to stick with it.

The objectives are:

  1. Increase exposure to the Ubuntu Netbook Edition interface.
  2. Allow Ubuntu Desktop users, who may not use or own a netbook, to easily install the Ubuntu Netbook Edition interface and enable it as their default session.
  3. Allow Ubuntu Desktop users who have installed and enabled the Alternative Desktop Session to easily revert to using the normal Ubuntu Desktop.

Use Cases

  • Fred heard about UNE and wants to give it a try. Nevertheless, he doesn't want to install UNE from scratch without being able to revert to his vanilla desktop session.
  • Robert has UNE installed and want (for development, for instance), run the usual and well-known ubuntu-desktop without having two different ubuntu installation on his netbook (less upgrade/install to do, less space used...).

Scope

  • packages currently heavily depending on ubuntu-netbook-remix and not in ubuntu-desktop:
    • cheese
    • go-home-applet
    • netbook-launcher
    • maximus
    • ubuntu-netbook-remix-default-settings
    • webfav
    • window-picker-applet

Design

  1. User should only have to select his session.
  2. As UNE has a lot of particular gconf keys changing the defaults or users option, we have to provide an additional path to gconfd to overlay them. Further investigation showed that gconfd (launched as a dbus service) can't access to session wrapper export variables. The GDMSESSION variable is available in /etc/X11/Xsession.d/* and so, we can export there the right $ENV_DEFAULTS_PATH value used in /etc/gconf/2/path (regarding $GDMSESSION).
  3. Similar work has to be done for applications autostart. Instead of patching application (which makes launching application available in only some cases), we can change XDG_CONFIG_DIRS to add a new path depending on session in /etc/X11/Xsession.d/*
  4. Only having one ubuntu-netbook-{remix;edition} package is the main goal. We have to fix bug #403291 about default gdm session first.(needed also when installing xubuntu and mythbuntu, for instance).
  5. This will also making the opposite available: installing first UNE and then ubuntu-dekstop.

Implementation

Addition to ubuntu-netbook-remix-default-settings

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

  • add an additionnal gconf path (only taken in une session, see below): /usr/share/gconf/une.mandatory.path pointing to /var/lib/gconf/une.mandatory
  • mv debian/gconf-defaults

Changelog is:

  * move debian/gconf.default to 20_une-mandatory to avoid dh_gconf
    taking it into account
  * add une.mandatory.path to include the new mandatory path in gconf
  * add those two previous files to debian/install
  * remove dh_gconf specific call in debian/rules
  * debian/{postinst;postrm}: add them manually for registering/removing
    une mandatory value in non standard path

Addition to gconf2 package

  • add new gconfd path in /etc/X11/Xsession.d/70gconfd_path-on-session which set proper MANDATORY_PATH and DEFAULT_PATH depending on $GDMSESSION (gconf automatically adds ENV_ when reading /etc/gconf/2/path configuration file)

-> With that trick, we can generically address all sessions (not just une)

Starting application depending on selected session

  • add to GDM package /etc/X11/Xsession.d/60xdg_path-on-session to keep compatibility with other session manager which add ${DEFAULT_XDG_CONFIG_DIRS}/xdg-${GDMSESSION} to XDG_CONFIG_DIRS. So, we are able to point to any additional autostart directory.

-> With that trick, we can generically address all sessions too

Move une specific application .desktop to /etc/xdg/xdg-une/autostart

-> Application (not applets/FF extension) needed to be started on UNE session only are:

  • maximus
  • netbook-launcher

.desktop autostart files have been moved in /etc/xdg/xdg-une/autostart

Choosing right default session in GDM

  • TODO

Remaining investigation needed

  • Do we need to disable x-screensavergl if running unr
  • See imcompatibility with UNE experience:
    • plugins that if installed would add non-UNE compatible UI elements
    • GL screensavers that may clash with the launcher
    • gnome-panel applets that may have bad interactions with the launcher(?) (the target is to only show needed applet as gconf mandatory key)
  • What to do if GL is not supported?
    • There is currently no 2D fallback (the ARM alternative planned for Lucid is quite different and would not convey the "UNE" experience)
    • It needs to run enough for the user to determine that it's too slow and log out again
    • Option: detect that and just end with a dialog telling you so [ to be completed once fully implemented ]

Migration

No migration is involved, this should not ever become the default session. But user can change it afteward thanks to the work on gdmsetup.

Test/Demo Plan

  • Session independance
  • log into a desktop session, add a funky applet on the panel
  • log into the UNE session, check that 'Applications, Places, etc.' are *not* displayed, the proper applets and applications are loaded, and funky applet is not
  • log back into the desktop session and check that 'Applications, Places, etc.' *are* correctly displayed, and funky applet *is* too. check that une applications (maximus, netbook-launcher) aren't loaded by default.


CategorySpec