much praise plus a few tips Rated 4 out of 5 stars
This extension is just great and certainly much superior to the extremely crash-prone Gnome CHM Viewer or other stand-alone applications. Because what could be better at displaying bunches of html files (for that's what chm files basically are) than a powerful web browser like Firefox? Opening chm files with CHM Reader inside Firefox is a bit too complicated for my taste (but see my tip below), toggling the index display on/off could be easier too, but otherwise, this extension is a job very well done.
One major drawback, however, is the packaging. The XPI presented above is rather old and not compabtible with 64-bit systems. But you can easily build your own up-to-date version. In Ubuntu, do the following:
1) apt-get install svn xulrunner-dev scons (you may need more packages if you haven't done any compiling of your own before, so YMMV)
2) At a terminal, grab the current source code like this:
svn co https://chmreader.svn.sourceforge.net/svnroot/chmreader/trunk chmreader
3) cd to chmreader/trunk and set two variables by entering:
export export PATH=$PATH:/usr/lib/xulrunner-devel-188.8.131.52
You may have to modify the numbers in the path name to reflect the version of the Gecko SDK/xulrunner development package that's on your machine.
4) Generate an XPI file to install in Firefox:
That's it! If you want to use CHM Reader on both 32-bit and 64-bit machines, you'll have to build separate packages on each platform (though there's probably some way to cross-compile the whole thing into a univeral package).
If you would like to open any chm file in Firefox by double-clicking it in Nautilus, do the following:
1) Place a file named firefox-chm.desktop or similar in
~/.local/share/applications and paste the following text into it:
Name=Firefox as CHM Reader
Comment=View CHM file in Firefox with CHM Reader extension
2) Then create a file named firefox-chm somewhere in your path (e. g. ~/bin), make it executable (chmod u+x firefox-chm), and put this snippet of perl code into it:
my $url = shift;
$url =~ s[^(?:file://)?][chm:file://];
You don't like perl? Well, use your own favorite scripting language then ...