My attempt at Ubiquity-Slideshow

Dylan McCall dylanmccall at
Sun Jan 27 20:24:43 GMT 2008

Hello everyone!

For a while, I have been trying out various means of welcoming new users to
Ubuntu, showing them around so they can share our excitement about it.
Recently, I realized that a slideshow shown in Ubiquity fits the job
(See this forum thread: <>)

-It is unobtrusive. Not a popup; no attention or input demanded whatsoever.
-New users waiting for Ubuntu to install are still a bit lost, may be

The slideshow should not really show people *how* to use Ubuntu, but what
they can look for and expect to find. I think that is really all we need to
do, since most of the included applications are very well done, do the point
that they are self-explanatory. It is better that the user learns by using
the software than by reading a scholarly tome which appears to them when
they first log in.
The slideshow here could even help to point out usability features such as
translations or configurable font sizes.

Yes, there is even a blueprint over on Launchpad:
I went ahead and coded the thing. Progress so far is attached. I really like
some of the suggestions in that blueprint, such as to mention the community
aspect and places to get help. Mentioning the benefit of setting up an
Ubuntu-powered home server could be good, too. Lots of possibilities :)
One thing I think we should avoid like the plague is advertising the OS in
there with claims like "now more secure!". The goal here should not be to
sell Ubuntu, but to show a new user the things he can find in his new
desktop so that he will feel more confident and more happy with the choice.
We should not preach to the converted; we should *reward *the converted with
a new and innovative desktop experience they can enjoy, understand and be a
part of.

Overview of the design:

* Open Projector is an external application. Really just a Python script
that displays a very open ended slideshow created following a particular
format. Theoretically, this could be ported to Qt... although Glade could
make that tricky. At the moment there is the gtk version
(open-projector-gtk). This could go in a Debian package fairly happily.

* I believe Open Projector could be quite easily integrated with another
Python application such as the Ubiquity GTK front end.

* Ubiquity-Slideshow would be a separate package (and project). Again, this
is split into a few versions, with the only one presently existing being
ubiquity-slideshow-ubuntu (dependent on open-projector-gtk).
Ubiquity-Slideshow is the data for our slideshow that will be displayed with
the Ubiquity installation progress. As you might have guessed, it is of the
same format that Open Projector reads.

The format used by Open Projector is convoluted, but also quite flexible.
Slides are all Glade files, and indeed are made up of a bunch of GTK
widgets. I chose this path because the slideshow has to be very accessible
(desktop integrated!) and translatable. Glade makes both of those things
easily possible while still offering a lot of flexibility to people making
slides. (More reasons available if you want...). Each slide is actually
placed inside its own directory, with that Glade file inside, likely called
"". The Glade file must have a non-top-level container called
"slide". That container and everything inside it will be read as the slide
and displayed.

Another thing Open Projector has is "Projectors". These rotate through and
display slides inside their host container. ...And that is where the slide
metaphor dies down. A slide can, if it wants, have a projector inside of it!
The current gnome-app-install slide demonstrates this. The projector
iterates through every slide inside of the folder its own slide is in. It
reads some data from a folder called "_conf" to decide what order to display
the slides in and how quickly to iterate through them.
In the case of the Ubiquity GTK front-end, it would create a Projector whose
host_widget is its own container and whose path is

Many example slides exist inside
<Ubiquity-Slideshow/ubiquity-slideshow-ubuntu>. Of note are:
* gnome-app-install. Embedded projector to display changing contents,
alphabetical order set in _conf.
* special:thanks. Some fancy GTK widgets. I think it could be interesting to
demonstrate the wonderful drag & drop support we have with those widgets
* special:welcome. GtkFixed container allowing for label that overlaps
images. Also note that it displays first thanks to projector's

Still other things on the Todo list:
-Timers for projectors default to an Automatic option (-1). Presently, this
does nothing. It should cleverly time each slide to be [ (lifetime of parent
slide) / (number of slides) ].
-Translations are not in. Actually, I have no idea how to do this easily.
Open Projector doesn't need translations, but Ubiquity-Slideshow does...
although it is just some static data files. Will I have to do something
manually, or is there a magical system that will figure it out?
-Must jump to end of slideshow when signalled
-Must switch slides, pause slideshow, hide slideshow when signalled.
-Magic callbacks for slides, such as to launch external applications. They
probably shouldn't be used (otherwise this could get untidy *fast*), but
they would be nice to have.

This is still detached from Ubiquity. That option will always exist, and
that will probably be how this gets worked on since it's quicker than
running through Ubiquity. Thus, I need to know what size we should expect
the slides to be. Currently they are 640x480 pixels.

Hopefully I didn't miss too much. That's probably my most concise overview
So, what needs to be done here is a lot of collaboration, pondering and
Firstly, we need slides. I am terrible at them, probably becuase I was not
in a writing mood when I did the content, and because I am really bad at
computer artwork. (I'm also still using Gutsy, which doesn't help).
Secondly, there are some technical hurdles like translations that I cannot
quite figure out, since I am still quite new to this development
Thirdly, I can't wrap my head around Debian packages. It probably wouldn't
hurt to just package open-projector right along with Ubiquity's front-end
(and ubiquity-slideshow), skipping the bother altogether while keeping
things much simpler to look at.
Lastly, this project needs a home. Is there a way to create a sub-project of
Ubiquity for ubiquity-slideshow on Launchpad?

-Dylan McCall
-------------- next part --------------
An HTML attachment was scrubbed...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: UbuntuSlideshow.tar.gz
Type: application/x-gzip
Size: 12434 bytes
Desc: not available
Url : 

More information about the Ubuntu-installer mailing list