How to make applications start faster after installing pipelight

Pipelight is an excellent solution to bring numerous Windows only plugins to Linux & Firefox users. After installing pipelight the following plugins can be enabled:

  • silverlight5.1,  silverlight5.0, silverlight4
  • Adobe Flash
  • unity3d
  • widevine

A number of other experimental Windows based plugins are also available – shockwave and adobe-reader in particular, plus a few others; run pipelight-plugin to see the full list

However, it does have an unwelcome side-effect. A number of applications can appear to hang, or slowly start.  If an application depends on something called WebKit then you’ll certainly see this.  My Rhythmbox plugin called CoverArt Browser uses WebKit to display some of its information.  When starting the plugin you can see a 5 or more seconds of delay.  This is because pipelight is also starting when WebKit is started.

To test this – run the application from a terminal – if you see something like this then you know pipelight is also being enabled:

[PIPELIGHT:LIN:unknown] attached to process.
[PIPELIGHT:LIN:unknown] checking environment variable PIPELIGHT_SILVERLIGHT5_0_CONFIG.
[PIPELIGHT:LIN:unknown] searching for config file pipelight-silverlight5.0.
[PIPELIGHT:LIN:unknown] trying to load config file from '/home/foss/.config/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] unrecognized configuration key 'diagnosticmode'.
[PIPELIGHT:LIN:unknown] sandbox not found or not installed!
[PIPELIGHT:LIN:silverlight5.0] using wine prefix directory /home/foss/.wine-pipelight.

What is WebKit.

WebKit is web-based technology – it enables (amongst other things) applications to display HTML based information as if its native to the application as opposed through a browser.  WebKit loads the same plugins that you have installed in Firefox.

In my particular case, I’m using pipelight’s Silverlight plugin capability to view movies.  Obviously I have no interest in pipelight & Siliverlight in my music based Rhythmbox plugin!

So how do I use pipelight only for Firefox and not for other WebKit based applications?

First disable any pipelight plugin you may have enabled.

pipelight-plugin --list-enabled-all

If you had enabled, for example, Silverlight5.0 globally you would disable it using:

sudo pipelight-plugin --disable silverlight5.0

If you had enabled for the local user, then:

pipelight-plugin --disable silverlight5.0

Repeat for other plugins displayed using pipelight-plugin --list-enabled-all

Next create a local folder called myplugins

mkdir ~/myplugins

re-enable silverlight but only for this folder:

MOZ_PLUGIN_PATH=$HOME/myplugins pipelight-plugin --enable silverlight5.0

Repeat for your other pipelight plugins. Now you can start firefox like this to use these locally created plugins:

MOZ_PLUGIN_PATH=$HOME/myplugins firefox

Starting any WebKit based application now no longer starts pipelight – it is limited only to Firefox.

Starting Firefox from the command line gets tedious after a while, so I created a locally based launcher for Firefox as follows:

cd ~/.local/share/applications
cp /usr/share/applications/firefox.desktop .

Next give this local desktop file execute permissions:

chmod +x firefox.desktop

Edit this text based desktop file using your favourite text editor – for example:

gedit firefox.desktop

Search for lines beginning with “Exec=”
For example – Exec=firefox %u

Change this to look like sh -c "MOZ_PLUGIN_PATH=$HOME/myplugins firefox %u"

Change the other lines similarly, save and launch Nautilus

nautilus .

Unlock firefox from your current launcher and then drag and drop the new locally based firefox.desktop file

That’s it.

Thanks for the authors of pipelight for this MOZ_PLUGIN_PATH tip