Desktop environments are wonderful in the way they just work. The complexity of what is happening “below the hood” is well hidden from us. Looking at the various netbook options, I was curious to understand what it involved to create or modify a netbook desktop experience.
The idea is simple. Once you sign in, a startup program for the session runs the desired window manager, and typically displays the desktop icons using a file manager, and starts a panel. It then runs the components that need to be auto-started.
However, trying to understand the detailed flow reminded me of a comment I read many years ago, when I was trying to understand an Algol source file. The comment at the entry point said: “This is where you start. Where you end up is your problem!”
Let us then start at where we end up. You are more likely to be interested in controlling the components or applications that are run as soon as the session is started. A standard location for these is
/etc/xdg/autostart. A desktop environment may, of course, change it. Anyone interested in more details can see the standards proposed by freedesktop.org. Since you are likely to use a GUI, you don’t really need the name of this directory.
The keywords “OnlyShowIn” and “NotShowIn” can control the desktop environments for which a component is applicable. You can easily control the startup applications for your environment by using a preferences option like Startup Applications in Ubuntu Netbook Edition, or on the standard GNOME desktop. The user-modified files will be in the
.config/autostart directory in your home directory.
I was, however, interested in understanding what happens before you reach this point. A convenient starting point is the display manager. We typically use GDM or KDM. The display manager will usually rely on desktop files in
/etc/X11/sessions to offer a list of options available. The former is the common usage now, in major distributions including Fedora, Ubuntu and openSUSE.
MeeGo used its own display manager cum session launcher, uxlaunch. The USP of this launcher is that it starts the X server as a user process, not owned by the root. The disadvantage is that it is a single-user system, at least at present. A desktop session will be started for the default user. There is no option to log out or log in as a different user.
This is not a strict requirement for running MeeGo. Smeegol by SUSE, based on MeeGo, uses GDM — and a MeeGo desktop is one of the options possible. GDM is the display manager, which runs uxlaunch to start a MeeGo session.
On Ubuntu Unity, GDM has ‘Ubuntu Desktop Edition’ and ‘Ubuntu Netbook Edition’ (UNE) as separate options. However, the desktop files for both show that the same
gnome-session is run. The essential difference between the two is the name of the desktop session.
For a standard GNOME session,
gconf/schemas/gnome-session.schemas defines the various options, including the required components: window manager, file manager and panel. In the case of Ubuntu,
gnome-session uses the files in
/var/lib/gconf. These are actually generated from the files in
une/defaults, which override the default values in case the desktop session is UNE. The window manager is replaced by Mutter, the panel by a null string (which is indeed reported as an error in
.xsession-errors). The option to display the desktop icons by Nautilus is set to false. A critical specification is the Clutter plugin to be used by Mutter. For the Ubuntu Unity interface, it is
libunity-mutter. This plugin controls the panels on the top and at the side, and the launching of various applications.
Mutter is also the window manager used by MeeGo and Smeegol. It uses
moblin-netbook as the Clutter plugin. It replaces the conventional panels with a tabbed view of the same functionality. Mutter is a fork of Metacity, with Clutter support. It is likely to be the default window manager for GNOME 3, as GNOME Shell is integrated with Mutter.
In the case of KDE Netbook Workspace, GDM or KDM will run
startkde, which will use your workspace preference settings to show the appropriate desktop. KDE follows a more integrated approach. The user experience is controlled by containers (containments), which contain plugins, applets, applications, etc.
Common types of containments are the panel and the desktop. A starting environment for a distribution is packaged and provided by one or more packages containing the settings — for example,
kubuntu-netbook-settings for the desktop and the netbook workspaces. These settings override the KDE defaults.
Arch Linux does not provide such packages, and uses the default templates. The standard KDE defaults are provided in
apps/plasma/layout-templates. The base directory is
/usr/share in Arch Linux, and
/usr/share/kde4 in Kubuntu.
The netbook workspace consists of a panel, a default page and a “defaultSal”. The panel usage and concept is pretty clear. “Sal” is the search and launch activity shown on the main desktop. It replaces the menu, and eliminates the need for it in the panel. The “page” is a recently introduced “newspaper” containment which has widgets like news and weather embedded in it, with fixed size and layout, unlike in a desktop containment.
A similar concept in Meego is the status tab, which integrates the desktop with some social networking sites like Twitter, Facebook and Last.fm. You can learn more about the KDE netbook interface from this PDF.
.kde4/config, and any customisation of them is easily done using KDE’s graphical tools.
I expect that we will continue to see more action on the netbook (and mobile) interfaces. The introduction of GNOME Shell may impact Meego and Ubuntu Unity, as they are based on GNOME. It would also be interesting to see how QT applications are integrated into Meego, as that is the direction expected of Nokia.
It is fun to understand how to customise the user interfaces for a netbook; however, the significance of customisation probably extends far beyond netbooks. In my view, there are strong reasons for manufacturers to create custom looks for their notebooks and PCs as well. From my recent experience as a consumer, given the choices we face in our daily life, isn’t it strange that we don’t have more choice in the marketplace regarding desktop interfaces? I like to believe that KDE 4 and GNOME 3 will eventually make it a commercial reality. Just one vendor has to take the lead.
Feature image courtesy: eko.Reused under the terms of CC-BY-NC-SA 2.0 License.