Xsplash Shiny Boot Screen
Those using Ubuntu may have noticed a slight difference between the boot screen in Jaunty (9.04):
... and the one in Karmic (9.10):
However, the difference is deeper than it might appear. Not only is there a background, and a shiny loading bar, but there is actually a "background". What I mean is, in pre-9.10 releases, the logo was part of the background, and a clever progress bar was just superimposed.
This was the glorified splash screen infrastructure called Usplash. It was one of the first splash screens to replace the pages and pages of scrolling terminal text when Linux boots. This sometimes frightened newbie users:
What's with all these "daemons"? I should get my computer exorcised!
That was all well and good, but the Linux nerd community, ever eager to configure their look and feel to hell and back, complained.
- The background and logo being part of the same backdrop is stupid. It would make customization (especially between different distros) much easier if it were more portable.
- The progress bar that fills up as it boots is bloody useless. It being halfway full doesn't mean it's at half the loading time, and it hanging at "about three fifths of the way" provides no insight into what happened.
- Jumpy progress bar is ugly. Smooth loading would be prettier.
- It uses a completely different output than the X server
- It's hard to code one! Wah!
Some projects attempted to put addons or other modifications on Usplash so it would be faster and more useful.
But it didn't work that way. The Ubuntu developers wanted to prepare for something shinier, something like the fast boot of Karmic, and the even bigger speed increase that is supposedly coming up in Lucid. To this end, they made an entire new boot configuration in upstart, and starting a stripped down X server as soon as possible to host the graphical part of the boot. That way, the overhead in shutting down the Usplash and starting up X is eliminated, and a smooth transition between the splash screen and the login screen (in gdm) is possible.
The solution? Xsplash!
Very exciting, right? Well, what's even more exciting is how easy it is to code and configure. When it runs, Xsplash looks in the /usr/share/images/xsplash/ directory, and uses that as its data. Here's how it looks for the default configuration:
$ ls /usr/share/images/xsplash/ bg_2560x1600.jpg logo_small.png throbber_medium.png logo_large.png logo_xtra_large.png throbber_small.png logo_medium.png throbber_large.png throbber_xtra_large.png
If you look at the file names, there is no "config" file or anything! Xsplash just reads the filenames, then picks the most fitting resolution amongst the bg_*x*.jpg files, scales it to fit the screen perfectly, then grabs the logo that fits best, the throbber (har har, laugh it up at the name) that fits best, smacks them on the screen, animates the throbber, and rolls with that. Heck, the throbber isn't even technically a PNG animation!
Note: those of you viewing this in an RSS reader, you need a dark background to see the following image.
The point here is to make the user who may be good at art, but not a super-techie to say, "Hey, I can do that!" and to code cool themes. In that respect, and in my opinion, the Xsplash team have achieved success. However, there are a few problems:
- What if the throbber shouldn't loop?
- What if the logo and throbber need special placements?
- Can there be multiple layers of logos and/or throbbers?
- Can there be two separate animations, one to be run at the start of Xsplash, and one at the end?
Yeah, it's imperfect. It sort of feels like I coded it, with its bare-minimum functionality (*cough* blog *cough*). But hey, it looks pretty! And that's what counts. Right?
I was going to post a video of different Xsplash themes in action, but PiTiVi seems to not be able to render the movie, I had to manually convert from .ogv to .mpg via commandline, and then I have no video editor that can put them together, Windows or Linux. I'll post a video when I get the chance... or forget about it.