charon [ -option [value] ]
[url]
Charon is the Inferno graphical web browser, supporting a
variety of web standards for the download, viewing, automation and
navigation of web based information and images.
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.
Charon provides navigation controls familiar to any
web-surfer: back, forward, reload, home, stop and URL entry. Navigation of
web-based information is by means of following HTML links, this is
done by clicking on them using mouse button-1, or the touch-screen. Clicking
mouse button-2 on a link causes its address to be displayed in the
status line of charon's display. Navigation to other
information is achieved by clicking on the URL entry field and typing the
address of the resource, followed by the Enter key.
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.
Standards are the life-blood of the World-Wide-Web; without them,
the web could not exist. Web standards are under constant review with
revised editions and complete new standards being published all of the time.
This section lists the standards supported by charon at the time of
writing this manual entry. The version of the standard is given, if
appropriate, alongside any comments on its implementation.
- Protocols
- HTTP versions 1.0 and 1.1
- HTTPS: SSL Protocol versions 2.0 and 3.0. X.509.v3 server
certificates.
- FTP: charon supports retrieval of plain text files only, directory
listings are not generated.
- FILE: Charon attempts to determine the file type by a combination
of the filename extension and examination of the first few bytes of the
file. Directory listings are not generated.
- HTML
- It is intended that charon supports HTML version 3.2, but in
reality there is no single standard! Charon attempts to be as close
as possible to Netscape Navigator Version 3 in terms of its markup
support. Obvious bugs in Navigator 3 and the Netscape security model have
not been adopted.
- JavaScript
- Charon implements ECMAscript-262 2nd Edition, which is roughly
equivalent to JavaScript1.1. The ECMA-262 standard does not define the
host objects and classes that should implemented by the browser.
Charon implements the set of host objects and classes of Netscape
Navigator version 3.
- Encodings
- US_Ascii, ISO_8859_1, UTF_8, Unicode (big-endian)
- Images
- GIF87a and GIF89a - animated GIFs always loop.
JPEG, XBitmap, Inferno BIT image (6) format.
While using charon, a sub-set of the configuration options
can be modified. Clicking the Configuration button displays a config popup
window, enabling the user to modify the current values of the available
options.
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:
- -key value
Where -key and value are individual items in
the argument list to charon.
In the config file options take the form:
- key=value
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.
- userdir
- The directory where charon expects to find its configuration files
such as, bookmark and cookie files. The default value is
/usr/user/charon/ where user is obtained by
reading the file /dev/user.
- starturl
- Specifies the URL of the first document to be displayed by charon
at startup. The default value is
file://localhost/services/webget/start.html
- homeurl
- Specifies the URL of the document to retrieve when the Home button is
clicked. The homeurl can only be changed if the change_homeurl
option is enabled. Setting homeurl also set the value of the
starturl option. The default value is
file://localhost/services/webget/start.html
- change_homeurl
- Enables editing of the Home URL in the configuration popup window. A
non-zero integer value enables this option, all other values disable it
This option also enables the homeurl option. The default value is
1.
- helpurl
- Specifies the URL of the document to retrieve when the Help button is
clicked. The default value is
file://localhost/services/webget/help.html
- httpproxy
- Specifies the host name and port of a web proxy server. The address is
given in the form of a URL, where the optional port number can be
specified after the server name by separating them by a colon `:'.
The default value is the empty string, specifying that no web proxy server
should be used.
- noproxy or
noproxydoms
- Specifies a list of network domains for which a web proxy should not be
used. The domains in the list can be separated by semicolon, comma, space
or tab characters. The default value is the empty list.
- usessl
- Extends SSL support. Accepted values are ``v2'' and ``v3''.
Initially SSL support is configured off. Enabling version 1 or version 2
support restricts SSL support to that specific version. Specifying the
option twice, once with each of the options, enables dual version SSL
support whereby the remote server is probed to determine which version it
supports. Some servers only support one of the versions and may not
tolerate the special version2/3 probe.
- buttons
- Specifies the set of buttons that appear on the window manager title-bar.
The buttons are given as a list of button names separated by comma, space
or tab characters. Valid button names are help, resize and
hide. The default value is for all buttons to be displayed.
- defaultwidth
or width
- Set the initial window width. This option is only meaningful when running
under the window manager. If the specified width exceeds the screen width
then the screen width is used. The default value is 630.
- defaultheight
or height
- Set the initial height of the main display panel, this does not include
the height of the control and progress panels. This option is only
meaningful when running under the window manager. If the total height of
the charon window exceeds the screen height, the main display panel
height will be reduced to fit. The default value is 450.
- x and/or
y
- Set the initial window position. These options are only meaningful when
running under the window manager. The default value for both options is
0.
- imagelvl
- Specify how to handle image components of a document. This option takes a
numeric argument. A value of 0 prevents images from being downloaded or
displayed. A value of 1 will download and display images but not animate
GIFS - only the first frame of an animated GIF will be displayed. A value
of 2 or more enables full image processing. The default value enables full
image processing.
- imagecachenum
- Specify the maximum number of images that can remain resident in the image
cache. The default value is 60.
- imagecachemem
- Specify the maximum amount of image memory available to the image cache in
bytes. The cache is managed such that neither the imagecachenum nor
imagecachemem limits are exceeded. The image cache tries to ensure
that no more than 80% of available system image memory is taken by the
cache, irrespective of the value of this option. The default value is 80%
of the system image memory that was available when charon was
started.
- docookies
- Enable cookie handling. A non-zero numeric value enables cookie handling,
all other values disable it. The cookie cache is maintained in the
cookies file in the userdir directory. The default value is
0, cookie handling disabled.
- doscripts
- Enable JavaScript support. A non-zero numeric value enables JavaScript,
all other values disable it. The default value is 0, JavaScript processing
disabled.
- showprogress
- A non-zero numeric value results in the progress panel being displayed.
All other values hide the progress panel, leaving more vertical space for
the main display area. The default value is 1, causing the progress panel
to be displayed
- http
- Set the version of HTTP to use when communicating with web servers.
Supported versions are 1.0 and 1.1. Any value other than 1.1 results in
HTTP1.0 being used. The default value is 1.0.
- nthreads
- Specifies the maximum number of concurrent downloads of document
components. Generally, if this number is higher, pages will complete
faster as charon will not have to wait for the download of one
component to complete before another can be started. The downside is that
a higher number of concurrent downloads will use more memory during the
download process. The default value is 4.
- /services/config/charon.cfg
- The default configuration file.
- userdir/config
- The user specific configuration file. userdir is given by
the value of the userdir option.
- userdir/cookies
- The cookie cache. userdir is given by the value of the
userdir option.
- /services/webget/start.html
- The default start page.
- /services/webget/help.html
- The default help page.
- /appl/charon/
- The main charon source files.
- /appl/lib/ecmascript/
- Javascript (ECMA-262) implementation.
Charon has more than its fair share of real bugs. The
following list documents the problems that are most likely to be
encountered.
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.