Fbsplash Themes

Fbsplash themes are formed by a set of files and directories, placed in a specific location in the main filesystem (usually /etc/splash). Each theme is entirely contained in a single directory, e.g. /etc/splash/linux. The directory name should not contain spaces.

The theme directory contains a theme description file called metadata.xml (see fbsplash metadata.xml example) and at least one config file. The config files are named <res>.cfg, where <res> is a framebuffer resolution for which the given config file was written (e.g. 800×600, 1280×800). It is advisable to provide at least one config file for a low resolution such as 640×480. In the case the current resolution is not supported by a theme, the fbsplash daemon can use a config file for a lower resolution. Having one for 640×480 provides a safe fallback. The config files can contain a number of different directives, which are documented in the the theme_format document distributed in the splashutils package.

The Event System

Fbsplash themes can take advantage of an event system. This makes it possible to make the themes more dynamic by allowing them to react to what happens during boot. To be notified about an event, the theme should provide an event handler in the form of an executable script located at scripts/<event>-(post|pre). pre and post specify whether the handler should be executed respectively before or after the event is handled by the fbsplash framework. For example, if the linux theme would like to be notified about the rc_init event, before it is handled by fbsplash, it should provide the handler in /etc/splash/linux/scripts/rc_init-pre.

When an event takes place, the event handler is executed with a set of command line arguments (specified below). The current version of fbsplash supports the following events:

Event Name Arguments Description
rc_init internal_runlevel sysvinit_runlevel start of a new runlevel
rc_exit internal_runlevel sysvinit_runlevel end of the current runlevel
svc_start service_name a service is starting
svc_started service_name a service has started sucessfully
svc_start_failed service_name a service has failed to start
svc_stop service_name a service is stopping
svc_stopped service_name a service has stopped
svc_stop_failed service_name a service has failed to stop
svc_input_begin service_name a service is requesting user input
svc_input_end service_name a service has finished receiving user input
critical a critical condition has occurred and the screen has to be switched to verbose mode

A handler script can expect the following about its environment:

SPLASH_XRES and SPLASH_YRES environment variables are defined and together they specify which config file is currently being used by fbsplash. For instance, if the fbsplash daemon is using 640×480.cfg, SPLASH_XRES would be set to 640 and SPLASH_YRES to 480. splash-functions.sh has been sourced and all its functions are available. splash_setup from splash-functions.sh has been executed and all standard splash environment variables are defined.