# Linux Plugins ## Background reading materials ### Plugins in general * [Gecko Plugin API reference](https://developer.mozilla.org/en/Gecko_Plugin_API_Reference) -- most important to read * [Mozilla plugins site](http://www.mozilla.org/projects/plugins/) * [XEmbed extension](https://developer.mozilla.org/en/XEmbed_Extension_for_Mozilla_Plugins) -- newer X11-specific plugin API * [NPAPI plugin guide](http://gplflash.sourceforge.net/gplflash2_blog/npapi.html) from GPLFlash project ### Chromium-specific * [Chromium's plugin architecture](http://dev.chromium.org/developers/design-documents/plugin-architecture) -- may be out of date but will be worth reading ## Code to reference * [Mozilla plugin code](http://mxr.mozilla.org/firefox/source/modules/plugin/base/src/) -- useful reference * [nspluginwrapper](http://gwenole.beauchesne.info//en/projects/nspluginwrapper) -- does out-of-process plugins itself ## Terminology * _Internal plugin_: "a plugin that's implemented in the chrome dll, i.e. there's no external dll that services that mime type. For Linux you'll just have to worry about the default plugin, which is what shows a puzzle icon for content that you don't have a plugin for. We use that to allow the user to download and install the missing plugin." ## Flash * [Adobe Flash player dev center](http://www.adobe.com/devnet/flashplayer/) * [penguin.swf](http://blogs.adobe.com/penguin.swf/) -- blog about Flash on Linux * [tips and tricks](http://macromedia.mplug.org/) -- user-created page, with some documentation of special flags in `/etc/adobe/mms.cfg` * [official Adobe bug tracker](https://bugs.adobe.com/flashplayer/) ## Useful Tools * `xwininfo -tree` -- lets you inspect the window hierarchy of a window and get the layout of child windows. * "[DiamondX](http://multimedia.cx/diamondx/) is a simple NPAPI plugin built to run on Unix platforms and exercise the XEmbed browser extension." * To build a 32-bit binary: `./configure CFLAGS='-m32' LDFLAGS='-L/usr/lib32 -m32'`