Html Viewer 3 (hv3) is a powerful yet minimalist web browser that uses Tkhtml3 as a rendering engine and SEE (Simple ECMAScript Engine) [L1 ] to interpret scripts. The application itself is written in Tcl. Currently it is at alpha stage. Please try it out, then report bugs or make suggestions.

Hv3 already has a good level of CSS standards compliance: it passes the Acid 2 test [L2 ]

KJN: it is very close to passing the Acid 2 test - in this case it does a much better rendering than my Firefox 2.0.0 browser!

It does pass the acid2 test. If you know of a reason why this is not true, post a bug report.

KJN: I've tried again with the hv3-linux-nightly-08_0203.gz binary from the home site, and it is indeed a 100% pass - very nice work. Previously I had tried the version hv3-20071223.etk from the eTcl site: this adds a red bar to the bottom left of the face.

escargo 13 Mar 2008 - There is now an Acid3 test (described here: [L3 ] and run here: [L4 ]). I now see looking at the hv3 bug list that hv3 is in the process of confronting Acid3.

See also Use Hv3 to view ActiveTcl docs


  • Where can I specify the proxy?
  • Without support for a proxy autoconfig script (proxy.pac), usage is problematic

DK77 Proxy support is incomplete: http://tkhtml.tcl.tk/cvstrac/tktview?tn=277

escargo 19 Mar 2008 - It appears that hv3 does not support https. I couldn't find anything on the web site that seemed to address the issue.

RJM 20120509 has modified the hv3 demo application to allow for embedding it into another tcl application. This means that the application can run in a toplevel window or in a frame. Moreover, all gui-elements are stripped (except the scrollbars) as well as some separation of low level hv3 library from the application source file set as well as removing the snit related files, as they already exist as a separate library - at least a sample starkit did not separate application from the libs. I decided to supply the modified sources in a starkit, because it provides the proper separation of app and libs as well as a small demo application which is self explaining.

I think that hv3 has its strength in embedding it in tcl applications (e.g. html-based help system). Currently, the state of stripping is quite dirty. A desired state would be a hierarchical application, where the designer can decide which level of performance (and hence, code size) is needed. Using simply Tkhtml without hv3-0.1 allows for simple rendering with images, but not so easy with hyperlinks. The hv3 Megawidget (hv3-0.1 library) allows for more performance, but the documentation about how to properly assign -requestcmd configuration etc. is present, but some details are lacking and especially documentation of the data structures within hv3 is lacking. As a consequence stripping down the powerful demo was chosen to do.

How about an imagined hierarchy where the designer can leave out what he does not need?

In an order from low to high level (todo):

  • hv3 (megawidget = lib)
  • hv3 lib and images & hyperlink rendering on top of it (hv3_browser.tcl and hv3_util.tcl?)
  • history, bookmarks, sqlite usage etc.
  • context menus
  • visible GUI elements (status, toolbar, menu)

Archive: kit file: [L5 ] (reminder: unarchive using sdx.kit)

The core demo code herein is:

button .b -text "next document" -font bold -width 25 -height 3 -command next
pack .b
package require hv3
source hv3-stripped/hv3_main-stripped.tcl
toplevel .ht   ;# currently a fixed name
hv3render file:demo.html

proc next {} {
    hv3render file:demo1.html
    .b config -state disabled
    # file copied, because Windows cannot open documents within a VFS
    file copy styleGuide_1.pdf ../styleGuide_1.pdf

Within this archive, also a minor improvement in hv3-0.1 has been included: the ability to use the mouse wheel with the rendered widgets. The source code as a basis for modifications has been taken from [L6 ]. This seems to be most recent source, with additional proc comments and some minor stuff as compared to the "official" code base.

Update 20120515: demo kit archive now extended with external browser/viewer application for http protocol & pdf files - runs with tcl 8.5 due to exec {*}-syntax.

"Hv3 and the art of minimalist web-browsing" [L7 ]

lm2012/09/06 : Maybe the work to be done on hv3 could be the subject of an Google Summer of Code topic ? Also, I tried the hv3 today and libs it has been buiild with are not present anymore (libstdc++.so.5) as it dated from 2008.