Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| dev:howto:panel_plugins [2017/04/18 04:27] – Fix panel plugins path andreldm | dev:howto:panel_plugins [2024/03/26 18:11] (current) – [Testing and Releasing the plugin] gael | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Xfce Panel Plugins How To ====== | ====== Xfce Panel Plugins How To ====== | ||
| - | <note tip>You can get the sample plugin | + | <note tip>You can find the sample plugin [[https://gitlab.xfce.org/ |
| ===== Introduction ===== | ===== Introduction ===== | ||
| Line 6: | Line 6: | ||
| Starting from version 4.4 the Xfce Panel support two types of plugins: internal and external. | Starting from version 4.4 the Xfce Panel support two types of plugins: internal and external. | ||
| The internal plugins are loadable modules, using the | The internal plugins are loadable modules, using the | ||
| - | [[http:// | + | [[https:// |
| interface. External plugins are separate programs that are embedded into the panel using the | interface. External plugins are separate programs that are embedded into the panel using the | ||
| - | [[http:// | + | [[https:// |
| - | [[http:// | + | [[https:// |
| In order to handle these plugins the plugin system was entirely rewritten, along with the rest | In order to handle these plugins the plugin system was entirely rewritten, along with the rest | ||
| of the panel framework. This file describes the way plugin writers should interact with this system. | of the panel framework. This file describes the way plugin writers should interact with this system. | ||
| - | The API documentation is installed with the panel and also available from | + | The [[: |
| http:// | http:// | ||
| + | |||
| Line 53: | Line 54: | ||
| line like this: | line like this: | ||
| - | XDT_CHECK_PACKAGE ([LIBXFCE4PANEL], | + | XDT_CHECK_PACKAGE ([LIBXFCE4PANEL], |
| The above assumes that you are using the xfce4-dev-tools package, which you really should, | The above assumes that you are using the xfce4-dev-tools package, which you really should, | ||
| Line 63: | Line 64: | ||
| required headers ('' | required headers ('' | ||
| - | #include < | + | #include < |
| ===== Plugin Registration ===== | ===== Plugin Registration ===== | ||
| - | To register a plugin with the plugin system there are two macros | + | To register a plugin with the plugin system there is one macro available that should be used, instead of using the library functions directly. |
| - | instead of using the library functions directly; one for internal plugins and one for external plugins. | + | XFCE_PANEL_PLUGIN_REGISTER(construct); |
| + | |||
| + | Older versions use the following two deprecated macros, | ||
| XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL(construct); | XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL(construct); | ||
| Line 275: | Line 278: | ||
| For creating a release you need to run '' | For creating a release you need to run '' | ||
| - | To help development, | + | To help development, |
| + | |||
| + | You can also directly run plugins from the source so you don't need to overwrite a plugin version from your distribution. To accomplish this, build the plugin with make and then follow these steps: | ||
| * Create a symbolic link from your plugin binary to the panel' | * Create a symbolic link from your plugin binary to the panel' | ||
| * Copy ''/ | * Copy ''/ | ||
| - | * Edit the latter to point at ' | + | * Edit the latter to point at ' |
| * If you're porting a plugin to GTK+ 3, make sure to add '' | * If you're porting a plugin to GTK+ 3, make sure to add '' | ||
| + | |||
| + | An example: | ||
| + | |||
| + | < | ||
| + | $cat / | ||
| + | [Xfce Panel] | ||
| + | Type=X-XFCE-PanelPlugin | ||
| + | Encoding=UTF-8 | ||
| + | Name=Disk Performance Monitor (git) | ||
| + | Comment=Show disk performance | ||
| + | Icon=drive-harddisk | ||
| + | X-XFCE-Internal=FALSE | ||
| + | X-XFCE-Module=diskperf-git | ||
| + | X-XFCE-API=2.0 | ||
| + | </ | ||
| Now the ' | Now the ' | ||