Platform Team/Sweets Distribution/Features/Plugins
Jump to navigation
Jump to search
Plugins are pluggable Sugar Shell code. By design, plugins are not isolated from the rest of shell code and each other, thus, they are assumed to be setup by Sugar distributors or experienced users.
A plugin is a Python module placed in a /opt/sweets/sugar/src/jarabe/plugins/PLUGIN_NAME
directory. To make a plugin module useful, it should contain the following variables and functions:
ORDER
Required. Variable with plugin order. Plugins with smallerORDER
will be initiated and started earlier.
TITLE
Optional. This title will appear in the Sweets Distribution Control Panel component in order to provide a user the opportunity to enable/disable the plugin. IfTITLE
is omitted, the plugin will be enabled unconditionally.
init()
Required. Initialize the plugin. This function will be called before the Shell initialization phase, so, it is possible to put monkey patching code here.
start()
Required. Start the plugin. Actual starting the plugin. This function will be called when Shell starts heavy code like Journal.
binding()
Optional. Posix shell commands to source before starting the Sugar Shell. Function should return a list of strings. Resulting lines will be sourced before starting the Sugar Shell process. Note that sourcing will happen before starting DBus session and after X session.
control_panel_section()
Optional. If it exists, it should return a widget to place as a sub-section in the Sweets Distribution Control Panel section. The returning widget should take care of reading/writing the plugin configuration on its own, and should assume the application of configuration changes right after making them, i.e., without any apply buttons. The regular way to handle plugin configuration is usingOption
class like the example code does below.
Use example plugin source as a template for new ones.