Ubuntu Usplash Smooth (Jaunty Blueprint)

General Objectives

  • Provide a time-based progressbar for usplash. This would make the usplash animation much more smooth and visually appealing and provide an accurate remaining time of the boot or shutdown process to the user.

Status Summary (Intrepid)

Currently in Intrepid, the usplash progressbar is updated by the initialization scripts.

Although this works ok, the progress effect is very ugly because the bar moves in huge increments and then stops for an undetermined period of time until it moves again. Besides not being beautiful, this provides no information to the user about the time remaining for the boot or shutdown process.

To improve the situation the usplash progressbar should be time-based, pretty much like the progressbar in MacOSX.

Since the booting and shutdown times do not change drastically from session to session, we could save the time the computer spent to boot and to shutdown, and use it to guide the progressbar the next time. This would provide a beautiful and smooth animation of the progressbar, and an accurate remaining time, increasing the usability.

This can be already implemented using the current usplash code without any modifications whatsoever, and a working solution is already available.

Please check it here:

Identified User Experience Issues

  • Jagged animation in the current usplash progressbar implementation and inability to tell how much time is left to complete the boot or shutdown process.

Proposed Solutions

  • Change the usplash progressbar to a time-based one, allowing a very smooth animation and an accurate remaining time feedback to the user.
  • It is already implemented as a library that functions as a "plug-in" for usplash, and is linked to the usplash-smooth themes during compilation. This does NOT break the current implementation and themes in any way.

Implementation Details

This solution is already implemented as a library in Intrepid. This library also comes with the original usplash theme already using the time-based progressbar.

To be able to behave properly and freeze the time-based progressbar in appropriate times (such as filesystem checks and user input), usplash and the corresponding initscripts needs to be lightly patched. It's a very simple, very few lines patch, that will add the command NOTIFY to usplash. With this command implemented, usplash themes can be notified of the current system status and behave accordingly. It's important to note that this will NOT modify the current implementation in any way, and the current usplash themes (with the default progressbar) will work as they always did.

You can test it right now. Just download the packages from the Ubuntu PPA.

Outstanding Issues / TODO

  • Currently, if Intrepid decides to do a filesystem check, the progressbar continues on filling normally, but the time of this boot will be stored for the next boot. In the next boot, the progressbar will fill very slowly, and the Window Manager will start with it far from complete. Everything restores to normal afterwards.

  • Version 0.4 release on Nov 20th already addresses the filesystem check situation. The time-based progressbar will freeze during the filesystem check and the text progress will be displayed as usual. Currently, usplash-smooth does this in a hackish way because usplash has not been patched for support yet (read the implementation details above).
  • There is also the need to freeze the time-based progressbar during user input. One example of this happening is when entering the password for encrypted volumes. To enable this, usplash needs to be lightly patched (read the implementation details above).


  • ethana2: Perhaps when a file system check is happening, the main progress bar should stop and a second one should appear under it indicating check progress. When the second one completes, the first one resumes. Better yet, the file system could be checked based on how likely it is to have problems instead of how many successful, clean, problem-free mounts that have been performed on it. If you don't pull your power cord, you don't have a file system check forced. If you do, it should happen right then, before you have a serious problem.
  • Usplash Smooth Developer: The progressbar freezing during filesystem checks is already implemented! Your other suggestion, about the filesystem check frequency is beyong the scope of usplash and usplash-smooth, and should be reported as a bug.

UsplashSmooth (last edited 2008-11-20 14:22:03 by 20158017123)