Version 7 (modified by romw, 6 years ago) (diff)




HTML and JavaScript have become the predominate rendering technologies on the web. Used for everything from web browsing to mobile phone applications. HTMLGfx attempts to bring HTML rendering technologies into the BOINC graphics and screensaver environment.

By providing precompiled binaries the barrier to entry is greatly reduced allowing projects to deploy customized graphics for their applications. All projects would need to supply is the HTML/CSS/JavaScript required to display something about what is going on with the currently executing job.

In theory, volunteers could even get in on the act and create graphics for whatever applications suit their interests and share them with the community. It is conceivable that projects may even hold yearly competitions to include a volunteers graphics bundle to be deployed with the project's application.

Currently HTMLGfx is only supported on Windows at this time.

References: Making graphics applications for BOINC

System Overview

HTMLGfx leverages existing operating system dependent libraries for rendering HTML. By leveraging the operating systems HTML renderer HTMLGfx will be able to support whatever the latest technologies the operating systems browser supports.

Design Considerations

Assumptions and Dependencies

General Constraints

Goals and Guidelines

Development Methods

Detailed System Design

Configuration File

The graphics description file has the logical name of boinc_graphics.xml (its physical name should include a version number and other info). It has following structure:

    [ <default_url>filename</default_url> ]
    [ <running_url>filename</running_url> ]
    [ <suspended_url>filename</suspended_url> ]
    [ <network_suspended_url>filename</network_suspended_url> ]
    [ <exiting_url>filename</exiting_url> ]

Optional elements:

document to display if no state specific URL is defined.
document to display while the task is running.
document to display while the task is suspended.
document to display while the network is suspended.
document to display before the task exits in 5 seconds or less.

Graphics Status File

It is read once a second and is generally managed via the worker applications via the boinc_write_graphics_status() BOINC API.

Reference: boinc_graphics_status.xml

Vboxwrapper WebAPI Port

Reference: vbox_webapi.xml

Vboxwrapper Remote Desktop Port

Reference: vbox_remote_desktop.xml

JavaScript Extension on Windows

Currently HTMLGfx can pass information to the HTML DOM via the 'window.external' extension.


Name Returns Description
IsAppInitDataUpdated Boolean Informs the HTML document to refresh all the UI state information
IsScreensaver Boolean Was the graphics application launched in screensaver mode
IsSuspended Boolean Whether the task is currently suspended
IsNetworkSuspended Boolean Should the UI suspend Internet activity
IsExiting Boolean Should the UI prepare to exit
IsVboxwrapperJob Boolean Is this task a vboxwrapper task?
SetAppInitDataUpdate void Sets the Boolean value to the specified input


Name Data Type Description
ApplicationName string
ApplicationVersion long
WorkunitName string
ResultName string
TeamName string
UserName string
UserCreditTotal float
UserCreditAverage float
HostCreditTotal float
HostCreditAverage float
ExitCountdown float
CPUTime float
ElapsedTime float
FractionDone float
RemoteDesktopPort long
WebAPIPort long


Example of refreshing the state of various controls:

    refresh() {
        if (window.external.IsAppInitDataUpdated()) {
            username = window.external.UserName;
            teamname = window.external.TeamName;
        fractiondone = window.external.FractionDone;