PLUGINS ======= A plugin is a shared object that implements a set of callback functions. To a user this essentially means that a plugin is a .so file that they load inside of their golemrc file to add functionality to golem. A few plugins are included with this distribution; for instance, the root menus are in a loaded plugin called simple_menus. When loading a plugin from your rc file, it is convention that the plugin be loaded from a seperate file that is included by the main rcfile. For instance, a plugin loading in a user's rcfile may look like this: .include "plugins/box_iconify/rc" .include "plugins/simple_menus/rc" The included files can provide a tree-shaped data of name-value pairs to the plugin it is going to load (which is the reason to seperate it from the main golemrc). At any point in the load statement, you may either terminate it with a semi-colon (;) or open a subparam block with { and }. The following examples should explain this better: # example 1, just loading it load "plugin_name"; # example 2, passing in two params load "plugin_name" { param "text" "heh"; param "text2" "heh2"; fileparam "test" "test.xpm"; # fileparam means to convert to a path # and is neccesary for any filename # parameter. } # example 3, passing in a tree of params load "plugin_name" { param "text" "heh"; param "tree" "tree" { param "asdf" "asdf"; param "subtree" "subtree" { param "hehe" "haha"; } } } A good example of how this works in practice is too look at the sample configuration file for the simple_menus plugin, which is included with this distribution. Plugins may also recieve parameters from forplug includes. Forplug includes are described in the file THEMES included with this distribution; and are intended to allow themes to pass parameters such as pixmaps to plugins.