Miscellaneous

Using new features

You may often use features in eboxy that have only just been made available in the latest release. If a user of a previous version attempts to use a skin you have made that uses a new feature, and they are using an older version, they may not realise why it doesn't work. To solve this, add a minversion attribute to the top level node of your XML file, ie:


<?xml version="1.0"?>
<!DOCTYPE eboxy SYSTEM "eboxy.dtd">
<eboxy minversion="0.4.0">
...
</eboxy>

Instead of receiving some cryptic error message (eg. a script error, because you have used a new scripting language feature), the user of a version of eboxy which is older than the minimum version specified will be informed that they need to upgrade.

System XML file

Upon starting, eboxy will look for system.xml in the .eboxy subdirectory of your home directory. If it exists, it will be loaded first before loading the XML file specified on the command line. You can use this to set up templates or pages, or load plugins that you can re-use in other XML files.

Controlling video output

As eboxy uses SDL for video output, you can control which output type it uses with environment variables just as you can with any SDL-based application.

Table 4.4. SDL video driver environment variables

VariableDescription
SDL_VIDEODRIVERDriver used for video output. In Linux, possible values include x11, fbcon, directfb, and svgalib. If you set this to a particular driver, SDL must have been compiled with the specified driver enabled. If you do not set this, SDL will auto-detect it, using the best available driver.
SDL_FBDEVFramebuffer device to use if using framebuffer (fbcon) output. Default is /dev/fb0.
SDL_FBACCELSet to 0 to disable framebuffer acceleration (when using framebuffer).

For further details, see http://sdldoc.csn.ul.ie/sdlenvvars.php.

Order of events

In some situations it may be useful to know the order of events as they are executed by eboxy. The following lists should give you an idea of what happens when.

Startup

  1. Read configuration file ~/.eboxy/eboxy.conf

  2. Check command-line options

  3. Read key configuration file ~/.eboxy/keys

  4. Load interface plugin

  5. Read system XML file ~/.eboxy/system.xml

  6. Read user-specified XML file (or eboxy.xml in current directory)

  7. Initialise LIRC (if enabled)

  8. Initialise system-level plugins

  9. Fire System.OnLoad event

  10. Start system-level timers

  11. Notify all plugins that first page is about to be loaded

  12. Load page-level plugins for first page

  13. Fire page OnLoad event

  14. Display first page

  15. Fire page OnShow event

  16. Start page-level timers

  17. Notify all plugins that page has finished loading

  18. Fire system OnShow event

  19. (... process events ...)

Switch page

  1. Notify all plugins that page is going to be changed

  2. Fire current page's OnUnload event

  3. Stop any timers owned by current page

  4. Unload any plugins owned by current page

  5. Load page-level plugins for new page

  6. Fire page OnLoad event

  7. Display new page

  8. Fire page OnShow event

  9. Start page-level timers

  10. Notify all plugins that page has finished loading

  11. (... process events ...)

Switch file

  1. Notify all plugins that file is going to be changed

  2. Unload all pages/objects/plugins that belong to current file except for current page

  3. Load new XML file

  4. Initialise system-level plugins from new file

  5. Notify all plugins that page is going to be changed

  6. Fire current page's OnUnload event

  7. Stop any timers owned by current page

  8. Unload any plugins owned by current page

  9. Load page-level plugins for first page from new file

  10. Fire page OnLoad event

  11. Display page

  12. Fire page OnShow event

  13. Start page-level timers

  14. Notify all plugins that page has finished loading

  15. Notify all plugins that file has finished loading

  16. (... process events ...)

Quit

  1. Fire system OnQuit event

  2. Fire current page's OnUnload event

  3. Unload all pages/objects/plugins

  4. Uninitialise interface plugin

  5. Exit