„Prerequisites“ - „GNU Gnash 0.8.10“ maintained by skreutzer and „Creating a Menu Launcher“ - „Localization“ by gnufs
Contents
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.
Prerequisites
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 make 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) #endif
...
#if __GNUC__ && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)) #pragma GCC visibility pop #endif
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)
#endif
/* 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
#endifAfter having all preparations in place, IceCat should finally compile/install successfully:
cd icecat-14.0 ./configure -prefix=/usr make 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 make 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:
- Totem plugin
- VLC plugin
- Xine plugin
Short list of supported websites:
- youtube.com
- video.google.com
- dailymotion.com
- metacafe.com
- vimeo.com
- blip.tv
Supported browsers are:
GNU IceCat
- Epiphany
- Midori
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)
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.
The Search Bar
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:
- your computer's IP address,
- information about the nearby wireless access points, and
- a random client identifier (a cookie), which is assigned by Google, that expires every 2 weeks.
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:
in the URL bar, type: about:config
in the filter bar at the top of the page, type: geo.enabled
double click on the geo.enabled preference row in order to set it to false
(optional) double click on the geo.wifi.uri preference row and set it to localhost
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:
close all the GNU IceCat windows
run: sudo cp /usr/lib/icecat/greprefs/all.js /usr/lib/icecat/greprefs/all.js.bak
run: sudo gedit /usr/lib/icecat/greprefs/all.js
find: pref("geo.enabled", true); and replace it with: pref("geo.enabled", false);
- save and close
restart GNU IceCat
optionally do also the next steps:
run: sudo cp /usr/lib/icecat/defaults/pref/firefox.js /usr/lib/icecat/defaults/pref/firefox.js.bak
run: sudo gedit /usr/lib/icecat/defaults/pref/firefox.js
find: pref("geo.wifi.uri", "https://www.google.com/loc/json"); and replace it with: pref("geo.wifi.uri", "localhost");
- save and close
restart GNU IceCat
Localization
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.
Arabic: icecat-3.5.1.ar.xpi
Esperanto: icecat-3.5.1.eo.xpi
French: icecat-3.5.1.fr.xpi
German: icecat-3.5.1.de.xpi
Italian: icecat-3.5.3.it.xpi icecat-3.5.2.it.xpi icecat-3.5.1.it.xpi icecat-3.5.it.xpi icecat-3.0.7-g1.it.xpi (works from the release 3.0.7-g1 to 3.0.11-g1) icecat-3.5.1.it.xpi
Polish: icecat-3.5.1.pl.xpi
Portuguese: icecat-3.5.1.pt-BR.xpi icecat-3.5.1.pt-PT.xpi
Spanish: icecat-3.0.8-g1.es-AR.xpi icecat-3.0.8-g1.es-ES.xpi icecat-3.5.1.es-AR.xpi icecat-3.5.1.es-CL.xpi icecat-3.5.1.es-ES.xpi icecat-3.5.1.es-MX.xpi
Malayalam: icecat-3.5.ml.xpi
