Outdated documentation

This page is out of date. Please use the main navigation to find the latest documentation.

„Prerequisites“ - „GNU Gnash 0.8.10“ maintained by skreutzer and „Creating a Menu Launcher“ - „Localization“ by gnufs

Gnuzilla GNU IceCat is the free software version of the Mozilla Firefox web browser. However, gNewSense 2.3 doesn't come with GNU IceCat 14.0 and it's not possible to simply install it from software repositories. Furthermore, there is no standard and easy way to play Adobe Flash files served via the web. Despite the fact that Adobe Flash is a proprietary format and is widely spread because of the Adobe Flash Player plugin for various browsers, the GNU Gnash project has made progress in implementing a free alternative to do at least *some* Flash as standalone player application and GNU IceCat plugin. Both the richer features of GNU IceCat (in comparison to the gNewSense default browser Epiphany) and the basic support of Flash within the browser itself are reasons to build and install those components from their source.

All instructions refer to a plain and fresh gNewSense installation, which should grant the reproducibility as long as the hardware meets the minimum requirements for each step and finally the program run.


To avoid the need to resolve a lot dependencies manually, a general patch update should be made with

 sudo apt-get update
 sudo apt-get upgrade

followed by a reboot of the system.

GNU IceCat 14.0

The next step is to obtain the GNU IceCat source code files. Download the package icecat-14.0.tar.gz from the GNUzilla project. Simply decompress the package with

 tar -zxf icecat-14.0.tar.gz

In order to get ./configure of IceCat statisfied, further dependencies have to be resolved:

 sudo apt-get install libgtk2.0-dev
 sudo apt-get install libnotify-dev
 sudo apt-get install libasound2-dev
 sudo apt-get install libiw-dev
 sudo apt-get install libxt-dev
 sudo apt-get install mesa-common-dev

Only one dependency is still left - the Yasm Modular assembler. It can't get resolved by apt-get install yasm because the version in the repository is 0.5.0 where the IceCat build system requires at least 1.0.1. So download yasm-1.2.0.tar.gz from the Yasm project page and compile/install it by

 tar -xzf yasm-1.2.0.tar.gz
 cd yasm-1.2.0
 ./configure -prefix=/usr
 sudo make install
 cd ..

The last issue which must be adressed is related to gNewSense's GCC version 4.2.4 and the current form of IceCat 14.0's source code. The linking would abort with the error message

 libxul.so: hidden symbol `int SortedArrayOf<RangeRecord>::search<unsigned int>(unsigned int const&) const' isn't defined

for which a bug has been filed on Mozilla's bug tracker system with the number 771222. From there, a hint from Oleg Romashin in the initial bug description leads to the patch set 86802:392319d8c1fa, where the removal of

 #if __GNUC__ && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
 // work around GCC 4.3 bug where the search() function gets improperly
 // optimized away from some instantiations of this template
 #pragma GCC visibility push(default)


 #if __GNUC__ && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
 #pragma GCC visibility pop

probably rendered the code linkable for some newer GCC versions, but unlinkable for the version that comes with gNewSense 2.3. To solve the problem, one has to edit the file $/gfx/harfbuzz/src/hb-open-type-private.hh at line 693 and place the #pragmas around the SortedArrayOf template declaration like this:

 #if __GNUC__ && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
 // work around GCC 4.3 bug where the search() function gets improperly
 // optimized away from some instantiations of this template
 #pragma GCC visibility push(default)

 /* An array with sorted elements.  Supports binary searching. */
 template <typename Type>
 struct SortedArrayOf : ArrayOf<Type> {
   template <typename SearchType>
   inline int search (const SearchType &x) const {
     struct Cmp {
       static int cmp (const SearchType *a, const Type *b) { return b->cmp (*a); }
     const Type *p = (const Type *) bsearch (&x, this->array, this->len, sizeof (this->array[0]), (hb_compare_func_t) Cmp::cmp);
     return p ? p - this->array : -1;

 #if __GNUC__ && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
 #pragma GCC visibility pop

After having all preparations in place, IceCat should finally compile/install successfully:

 cd icecat-14.0
 ./configure -prefix=/usr
 chmod +x ./build/unix/run-icecat.sh
 sudo make install
 cd ..

IceCat should now come up when invoked by icecat & on the terminal.

GNU Gnash 0.8.10

Download the source code package gnash-0.8.10.tar.gz from the Gnash project, then

 tar -xzf gnash-0.8.10.tar.gz
 cd gnash-0.8.10

Now statisfy some dependencies by

 sudo apt-get install libgconf2-dev
 sudo apt-get install libboost-iostreams-dev
 sudo apt-get install libltdl3-dev
 ./configure -prefix=/usr
 sudo ./deb-attempt-install-dependencies.sh
 sudo apt-get install libboost-serialization-dev

After this preparations, it should compile/install by

 ./configure -prefix=/usr
 sudo make install
 sudo make install-plugin

Creating a Menu Launcher

First, make sure that you have the IceCat icon in place regardless of the current version that defines the path of the original icon file:

 sudo cp /usr/lib/icecat/chrome/icons/default/default32.png /usr/share/pixmaps/icecat.png

Open System > Preferences > Main Menu and, inside the Internet category, create a New Item. On the Create Launcher window, enter the following information:

 Type: Application
 Name: GNU IceCat
 Command: icecat %u
 Comment: GNU IceCat Web Browser

Before clicking on OK, click on the icon square in left and select the icon at /usr/share/pixmaps/icecat.png.

Viewing Flash

You have two free software options for viewing flash, Gnash and Swfdec. Gnash gets automatically installed with GNU IceCat and should work for many flash components. As an alternative, Swfdec currently seems better integrated with the flash standards. So you may want to try it in case Gnash doesn't completely satisfy you.

First, remove and backup the Gnash plugin's symbolic link to IceCat:

 sudo mv /usr/lib/icecat/plugins/libgnashplugin.so /usr/lib/icecat/

Then, append the backported swfdec repository to your apt source list:

 echo "deb http://ppa.launchpad.net/swfdec-team/ppa/ubuntu hardy main" | sudo tee /etc/apt/sources.list.d/swf-ppa

And update your repository content:

 sudo apt-get update

Install the swfdec plugin:

 sudo apt-get install swfdec-mozilla

Then, you will need to create a symbolic link between the installed plugin and the Icecat's plugin folder:

 sudo ln -s /usr/lib/swfdec-mozilla/libswfdecmozilla.so /usr/lib/icecat/plugins/

Restoring Gnash Plugin

In case you want to restore Gnash plugin:

 sudo rm /usr/lib/icecat/plugins/libswfdecmozilla.so
 sudo mv /usr/lib/icecat/libgnashplugin.so /usr/lib/icecat/plugins/

Embedded Video & PDF Viewing

To view embedded videos and pdf files inside IceCat, you need to install mozplugger, which handles the plugins for these jobs:

 sudo apt-get install mozplugger

Then, we symbolically link the plugin the same way we did swfdec:

 sudo ln -s /usr/lib/mozilla/plugins/mozplugger.so /usr/lib/icecat/plugins/

Watching YouTube Videos With In-Browser Movie Player

Watching embedded flash videos with Gnash or Swfdec may still be too processor intensive or may not be giving you enough control. As a YouTube-specific solution, you can use IceCat extensions to automatically replace the embedded flash videos with regular embedded videos. As a result, watching YouTube videos will not slow down your system as much.

To achieve this, we will use a Greasemonkey script. First, install the Greasemonkey extension. Then, install the ''YouTube - Previews, mp4/flash, HQ/HD, download'' script.

General Way For Watching Flash Videos With In-Browser Movie Player

Linterna Mágica is a userscript for the Greasemonkey extension that aims to support many websites and browsers. It replaces Flash objects, so you can watch video with a browser video plugin. There are some patterns common between video sharing and posting sites that Linterna Mágica is using, so it supports a lot of sites. In most cases it will work without modification. Some websites even have high definition support.

Supported video plugins are:

Short list of supported websites:

Supported browsers are:

Enabling the Java plugin

Before enabling the Java plugin (icedtea-gcjwebplugin) you should have it installed:

 sudo apt-get install icedtea-gcjwebplugin

Note: This command will install the OpenJDK Java Runtime (if not yet installed).

To enable the plugin you will need to create a symbolic link between the installed plugin and the Icecat's plugin folder:

 sudo ln -s /usr/lib/jvm/java-6-openjdk/jre/lib/i386/gcjwebplugin.so /usr/lib/icecat/plugins/

Enabling the Totem plugin

To enable the Totem plugin (that should have been installed during the usual system's setup) you will need to create a symbolic link between the installed plugin and the Icecat's plugin folder:

 sudo ln -s /usr/lib/totem/gstreamer/libtotem-complex-plugin.so /usr/lib/icecat/plugins/

Free addons (add-ons)

Free collection of addons

Anonymous Web Searching

GNU IceCat's default search engine for both the search bar and the address bar is Google which actively collects and combines user activities from the Google Inc.'s various services. Although complete anonymity is impossible for any long term internet user, you can enhance your privacy by using Scroogle as a proxy between you and the Google servers.

To add Scroogle as an option in IceCat's search bar, visit http://mycroft.mozdev.org/search-engines.html?name=scroogle and select the search engine of your choice.

Note: The engines with SSL use an encrypted connection between you and Scroogle to prevent third parties from tracking your search queries.

The Address Bar

IceCat submits all non-URL text entered to the address bar to the search engine of choice and directs the users to the results. To change the search engine of this feature, enter about:config to the address bar and set the keyword.URL value to https://ssl.scroogle.org/cgi-bin/nbbw.cgi?Gw= to use Scroogle's SSL connection.

Tip: This also works with the Epiphany Web Browser.

Disabling the Location-Aware Browsing

When you visit a location-aware website, the browser (since version 3.5) will ask you where you are in order to bring you more relevant information, or to save you time while searching. If you consent, Google Location Services is used to determine your location by sending:

Accuracy varies greatly from location to location. In some circumstances the service may be able to provide a location to within a few meters.
Your resulting location data will be finally sent to the location-aware website.
See http://www.mozilla.com/en-US/firefox/geolocation/ for details.

If you are concerned with privacy issues and prefer to enhance your privacy disabling this feature, completely and permanently, then follow this set of steps:

  1. in the URL bar, type: about:config

  2. in the filter bar at the top of the page, type: geo.enabled

  3. double click on the geo.enabled preference row in order to set it to false

  4. (optional) double click on the geo.wifi.uri preference row and set it to localhost

  5. restart GNU IceCat

Location-aware browsing should be now disabled BUT just for your current browser profile (not for any other existing profile or any new profile).

If you want to disable location-aware browsing for ALL browser profiles (existing or new) then you should do some manually editings to the default browser configuration files:

  1. close all the GNU IceCat windows

  2. run: sudo cp /usr/lib/icecat/greprefs/all.js /usr/lib/icecat/greprefs/all.js.bak

  3. run: sudo gedit /usr/lib/icecat/greprefs/all.js

  4. find: pref("geo.enabled", true); and replace it with: pref("geo.enabled", false);

  5. save and close
  6. restart GNU IceCat

optionally do also the next steps:

  1. run: sudo cp /usr/lib/icecat/defaults/pref/firefox.js /usr/lib/icecat/defaults/pref/firefox.js.bak

  2. run: sudo gedit /usr/lib/icecat/defaults/pref/firefox.js

  3. find: pref("geo.wifi.uri", "https://www.google.com/loc/json"); and replace it with: pref("geo.wifi.uri", "localhost");

  4. save and close
  5. restart GNU IceCat


To change the interface language, install the xpi file corresponding to your selected language and IceCat version. You can find the localization files on the GNUzilla webspace.

Alternatively, you can also install the localization package for you language from the Gnuzilla repository (see the "Installation" section above); being xx the country code of the language (it for Italian, for example), run:

 sudo apt-get install icecat-xx

After restarting the IceCat, enter about:config into the address bar and choose the general.useragent.locale string variable. Set it to the country code of the language (it for Italian, for example) and restart the GNU IceCat.

Localization Files

These are mostly for older (<3.5.4) versions of IceCat. For the latest localization files (since GNU IceCat 3.5.4), see the link above.


Documentation/IceCat (last edited 2013-08-30 02:32:09 by FelipeLopez)