The browser runs under the wm(1) window manager, or directly on the draw(3) and cons(3) devices. When charon starts, it checks to see if wm is running; if it is then charon creates a new wm window for its display, otherwise it uses the whole area of the display device.
Charon implements an image cache to help reduce the overhead of revisiting pages. The image cache resides in memory for the duration of a session. The cache is managed by discarding least recently used images once the cache bounds have been reached. Currently, charon does not provide a general purpose web cache; all other resources have to be reloaded when needed.
The retrieval and processing of the current page is immediately terminated by clicking the Stop button.
As resources are browsed, a history of their web addresses (URLs) is built up. At any time you can navigate forwards and backwards through this list using the Forward and Back buttons. Additionally, clicking the History button, displays the entire history list as a set of links enabling the user to quickly jump to any position in the list.
Sometimes, it is not possible to retrieve all of the components of a web document at the time that it is requested. Often this is because the remote server is very busy or not available. This can result in the presentation of the document being incomplete or even corrupted. Clicking the Reload button causes charon to attempt to retrieve the current document and all of its components again.
Charon displays a progress panel to indicate the download status of each of the components of the current document. The progress panel is displayed at the bottom of the charon window. Each component of the current document is represented by a rectangular block in the progress panel. As the download of a component progresses, its corresponding block is gradually filled in. If an error occurs while downloading or processing the component, its block is coloured red. The component address and amount downloaded, or reason for failure, can be obtained by clicking mouse button-1 on its progress block.
The full set of configuration options can be modified on the command line or in a configuration file. Comand line options are processed after the configuration file. The configuration file is loaded from /usr/user/charon/config where user is obtained by reading the file /dev/user. If this file does not exist, the file /services/config/charon.cfg is read instead. Options are processed in order; some options override settings affected by others and so the order in which they are used is important.
Options are specified using a key, value pair. On the command line this takes the form:
Where -key and value are individual items in the argument list to charon.
In the config file options take the form:
Where value is the remainder of the input line after the `=' character. Any text lines in the config file that start with a `#' character are ignored as comment lines.
Charon implements its table layout as per the algorithm described in rfc1942. This sometimes results in table-based documents being laid out differently to other browsers.
JavaScript is a source of many problems. Many scripts do not specify the language version they employ. Additionally different language versions and browsers imply a different set of host objects and classes. Such differences often give rise to syntax or null reference errors. This whole situation places a great burden on the script author to write safe and compliant scripts; unfortunately authors are rarely aware of this burden!
The following elements of JavaScript1.1 are not fully implemented:
Document.applets, Document.embeds and Document.plugins: Java Applets are not supported, the arrays are always empty.
Document.onunload: The property exists and can be assigned to, but the event is never raised.
Window.open(): A new window is never opened. If a URL is specified for the new window, the current document will be replaced with that of the new URL.
Other annoyances include:
Window resize forces a complete document reload.
Frames in a frameset are processed one at a time, not concurrently.
It is not possible to save downloaded data to file. This is particularly annoying for MIME types that charon does not support.
The history list can get confused, especially when following links in framesets before the complete frameset has been downloaded.
CHARON(1 ) | Rev: Thu Feb 15 14:42:47 GMT 2007 |