1# Linux Plugins 2 3## Background reading materials 4 5### Plugins in general 6 7* [Gecko Plugin API reference](https://developer.mozilla.org/en/Gecko_Plugin_API_Reference) 8 -- most important to read 9* [Mozilla plugins site](http://www.mozilla.org/projects/plugins/) 10* [XEmbed extension](https://developer.mozilla.org/en/XEmbed_Extension_for_Mozilla_Plugins) 11 -- newer X11-specific plugin API 12* [NPAPI plugin guide](http://gplflash.sourceforge.net/gplflash2_blog/npapi.html) 13 from GPLFlash project 14 15### Chromium-specific 16 17* [Chromium's plugin architecture](https://dev.chromium.org/developers/design-documents/plugin-architecture) 18 -- may be out of date but will be worth reading 19 20## Code to reference 21 22* [Mozilla plugin code](http://mxr.mozilla.org/firefox/source/modules/plugin/base/src/) 23 -- useful reference 24* [nspluginwrapper](http://gwenole.beauchesne.info//en/projects/nspluginwrapper) 25 -- does out-of-process plugins itself 26 27## Terminology 28 29* _Internal plugin_: "a plugin that's implemented in the chrome dll, i.e. 30 there's no external dll that services that mime type. For Linux you'll just 31 have to worry about the default plugin, which is what shows a puzzle icon 32 for content that you don't have a plugin for. We use that to allow the user 33 to download and install the missing plugin." 34 35## Flash 36 37* [Adobe Flash player dev center](http://www.adobe.com/devnet/flashplayer/) 38* [penguin.swf](http://blogs.adobe.com/penguin.swf/) -- blog about Flash on 39 Linux 40* [tips and tricks](http://macromedia.mplug.org/) -- user-created page, with 41 some documentation of special flags in `/etc/adobe/mms.cfg` 42* [official Adobe bug tracker](https://bugs.adobe.com/flashplayer/) 43 44## Useful Tools 45 46* `xwininfo -tree` -- lets you inspect the window hierarchy of a window and 47 get the layout of child windows. 48* "[DiamondX](http://multimedia.cx/diamondx/) is a simple NPAPI plugin built 49 to run on Unix platforms and exercise the XEmbed browser extension." 50 * To build a 32-bit binary: 51 `./configure CFLAGS='-m32' LDFLAGS='-L/usr/lib32 -m32'` 52