Libxfce4panel.PanelPlugin

g Atk.ImplementorIface Atk.ImplementorIface Gtk.Widget Gtk.Widget Atk.ImplementorIface->Gtk.Widget GObject.GInterface GObject.GInterface GObject.GInterface->Atk.ImplementorIface Gtk.Buildable Gtk.Buildable GObject.GInterface->Gtk.Buildable Libxfce4panel.PanelPluginProvider Libxfce4panel.PanelPluginProvider GObject.GInterface->Libxfce4panel.PanelPluginProvider GObject.InitiallyUnowned GObject.InitiallyUnowned GObject.InitiallyUnowned->Gtk.Widget GObject.Object GObject.Object GObject.Object->GObject.InitiallyUnowned Gtk.Bin Gtk.Bin Gtk.EventBox Gtk.EventBox Gtk.Bin->Gtk.EventBox Gtk.Buildable->Gtk.Widget Gtk.Container Gtk.Container Gtk.Container->Gtk.Bin Libxfce4panel.PanelPlugin Libxfce4panel.PanelPlugin Gtk.EventBox->Libxfce4panel.PanelPlugin Gtk.Widget->Gtk.Container Libxfce4panel.PanelPluginProvider->Libxfce4panel.PanelPlugin

Subclasses:

None

Methods

Inherited:

Gtk.EventBox (5), Gtk.Bin (1), Gtk.Container (35), Gtk.Widget (278), GObject.Object (37), Gtk.Buildable (10), Libxfce4panel.PanelPluginProvider (18)

Structs:

Gtk.ContainerClass (5), Gtk.WidgetClass (12), GObject.ObjectClass (5)

class

position_menu (menu, push_in, panel_plugin)

add_action_widget (widget)

arrow_type ()

block_autohide (blocked)

block_menu ()

focus_widget (widget)

get_arguments ()

get_comment ()

get_display_name ()

get_expand ()

get_icon_size ()

get_locked ()

get_mode ()

get_name ()

get_nrows ()

get_orientation ()

get_property_base ()

get_screen_position ()

get_shrink ()

get_size ()

get_small ()

get_unique_id ()

lookup_rc_file ()

menu_destroy ()

menu_insert_item (item)

menu_show_about ()

menu_show_configure ()

popup_menu (menu, widget, trigger_event)

position_widget (menu_widget, attach_widget)

register_menu (menu)

remove ()

save_location (create)

set_expand (expand)

set_shrink (shrink)

set_small (small)

take_window (window)

unblock_menu ()

Virtual Methods

Inherited:

Gtk.Container (10), Gtk.Widget (82), GObject.Object (7), Gtk.Buildable (10), Libxfce4panel.PanelPluginProvider (17)

do_about ()

do_configure_plugin ()

do_construct ()

do_free_data ()

do_mode_changed (mode)

do_nrows_changed (rows)

do_orientation_changed (orientation)

do_remote_event (name, value)

do_removed ()

do_save ()

do_screen_position_changed (position)

do_size_changed (size)

Properties

Inherited:

Gtk.EventBox (2), Gtk.Container (3), Gtk.Widget (39)

Name

Type

Flags

Short Description

arguments

[str]

r/w/co

Startup arguments for the plugin

comment

str

r/w/co

Plugin comment

dark-mode

bool

r/w

Whether or not to request the Gtk dark theme variant

display-name

str

r/w/co

Plugin display name

icon-size

int

r

Size of the plugin’s icon

mode

Libxfce4panel.PanelPluginMode

r

Disply mode of the plugin

nrows

int

r

Number of rows of the panel

orientation

Gtk.Orientation

r

Orientation of the plugin’s panel

screen-position

Libxfce4panel.ScreenPosition

r

xlib.Screen position of the plugin’s panel

shrink

bool

r/w

Whether this plugin can shrink

size

int

r

Size of the plugin’s panel

small

bool

r/w

Is this plugin small, e.g. a single button?

unique-id

int

r/w/co

Unique plugin ID

Style Properties

Inherited:

Gtk.Widget (17)

Signals

Inherited:

Gtk.Container (4), Gtk.Widget (69), GObject.Object (1), Libxfce4panel.PanelPluginProvider (1)

Name

Short Description

about

This signal is emmitted when the About entry in the right-click menu is clicked.

configure-plugin

This signal is emmitted when the Properties entry in the right-click menu is clicked.

free-data

This signal is emmitted when the plugin is closing.

mode-changed

This signal is emmitted whenever the mode of the panel the plugin is on changes.

nrows-changed

This signal is emmitted whenever the nrows of the panel the plugin is on changes.

orientation-changed

This signal is emmitted whenever the orientation of the panel the plugin is on changes.

remote-event

This signal is emmitted by the user by running xfce4-panel –plugin-event=plugin-name:name:py:data::type<Libxfce4panel.PanelPlugin.props.type>:value.

removed

This signal is emmitted when the plugin is permanently removed from the panel configuration by the user.

save

This signal is emitted when the plugin should save it’s configuration.

screen-position-changed

This signal is emmitted whenever the screen position of the panel the plugin is on changes.

size-changed

This signal is emmitted whenever the size of the panel the plugin is on changes.

Fields

Inherited:

Gtk.Container (4), Gtk.Widget (69), GObject.Object (1), Libxfce4panel.PanelPluginProvider (1)

Class Details

class Libxfce4panel.PanelPlugin(**kwargs)
Bases:

Gtk.EventBox, Libxfce4panel.PanelPluginProvider

Abstract:

No

Structure:

Libxfce4panel.PanelPluginClass

This struct contain private data only and should be accessed by the functions below.

classmethod position_menu(menu, push_in, panel_plugin)
Parameters:
Returns:

x:

return location for the x coordinate.

y:

return location for the y coordinate.

Return type:

(x: int, y: int)

Function to be used as Gtk.MenuPositionFunc in a call to Gtk.Menu.popup(). As data argument it needs an Libxfce4panel.PanelPlugin.

The menu is normally positioned relative to panel_plugin. If you want the menu to be positioned relative to another widget, you can use Gtk.Menu.attach_to_widget() to explicitly set a ‘parent’ widget.

As a convenience, Libxfce4panel.PanelPlugin.position_menu() calls Libxfce4panel.PanelPlugin.register_menu() for the menu.

void myplugin_popup_menu (Libxfce4panel.PanelPlugin *plugin, Gtk.Menu *menu, Gdk.EventButton *ev) { Gtk.Menu.popup (menu, None, None, Libxfce4panel.PanelPlugin.position_menu, plugin, ev->button, ev->time ); }

For a custom widget that will be used as a popup menu, use Libxfce4panel.PanelPlugin.position_widget() instead.

See also: Gtk.Menu.popup().

Deprecated since version 4.17.2: Use Libxfce4panel.PanelPlugin.popup_menu() instead.

add_action_widget(widget)
Parameters:

widget (Gtk.Widget) – a Gtk.Widget that receives mouse events.

Attach the plugin menu to this widget. Plugin writers should call this for every widget that can receive mouse events. If you forget to call this the plugin will not have a right-click menu and the user won’t be able to remove it.

arrow_type()
Returns:

the Gtk.ArrowType to use.

Return type:

Gtk.ArrowType

Determine the Gtk.ArrowType for a widget that opens a menu.

block_autohide(blocked)
Parameters:

blocked (bool) – new blocking state of this plugin.

Whether this plugin blocks the autohide functionality of the panel. Use this when you ‘popup’ something that is visually attached to the plugin at it will look weird for a user if the panel will hide while he/she is working in the popup.

Be sure to use this function as lock/unlock pairs, as a counter is incremented/decremented under the hood. For menus, you can use Libxfce4panel.PanelPlugin.register_menu() which will take care of this.

block_menu()

Block configuring the plugin. This will make the “Properties” menu item insensitive.

focus_widget(widget)
Parameters:

widget (Gtk.Widget) – a Gtk.Widget inside the plugins that should be focussed.

Grab the focus on widget. Asks the panel to allow focus on its items and set the focus to the requested widget.

get_arguments()
Returns:

the argument vector. The vector is owned by the plugin and should not be freed.

Return type:

[str]

Argument vector passed to the plugin when it was added. Most of the time the return value will be None, but if could for example contain a list of filenames when the user added the plugin with

xfce4-panel –add=launcher *.desktop

see the code of the launcher plugin how to use this.

New in version 4.8.

get_comment()
Returns:

the (translated) comment of the plugin.

Return type:

str

This returns the translated comment of the plugin set in the .desktop file of the plugin.

New in version 4.8.

get_display_name()
Returns:

the (translated) display name of the plugin.

Return type:

str

This returns the translated name of the plugin set in the .desktop file of the plugin.

get_expand()
Returns:

True when the plugin should expand, False otherwise.

Return type:

bool

Whether the plugin is expanded or not. This set by the plugin using Libxfce4panel.PanelPlugin.set_expand().

get_icon_size()
Return type:

int

Returns either the icon size defined in the panel’s settings or a preferred icon size.

New in version 4.14.

get_locked()
Returns:

True if the user is not allowed to modify the plugin, False is customization is allowed.

Return type:

bool

Whether the plugin is locked (not allowing customization). This is emitted through the panel based on the Xfconf locking of the panel window the plugin is embedded on.

It is however possible to send a fake signal to the plugin to override this propery, so you should only use this for interface elements and (if you use Xfconf) check the locking yourself before you write any values or query the kiosk mode using the api in libxfce4util.

New in version 4.8.

get_mode()
Returns:

the current Libxfce4panel.PanelPluginMode of the panel.

Return type:

Libxfce4panel.PanelPluginMode

The mode of the panel in which the plugin is embedded.

New in version 4.10.

get_name()
Returns:

the name of the panel plugin.

Return type:

str

The internal name of the panel plugin.

get_nrows()
Returns:

the current number of rows of the panel.

Return type:

int

The number of rows of the panel in which the plugin is embedded.

New in version 4.10.

get_orientation()
Returns:

the current Gtk.Orientation of the panel.

Return type:

Gtk.Orientation

The orientation of the panel in which the plugin is embedded.

get_property_base()
Returns:

the property base for the xfconf channel userd by a plugin.

See also: xfconf_channel_new_with_property_base. XFCE_PANEL_PLUGIN_CHANNEL_NAME and Libxfce4panel.panel_get_channel_name

Return type:

str

The property base for this plugin in the xfce4-panel XfconfChannel, this name is something like /plugins/plugin-1.

get_screen_position()
Returns:

the current Libxfce4panel.ScreenPosition of the panel.

Return type:

Libxfce4panel.ScreenPosition

The screen position of the panel in which the plugin is embedded.

get_shrink()
Returns:

True when the plugin can shrink, False otherwise.

Return type:

bool

Whether the plugin can shrink if the size on the panel is limited. This is effective with plugins that do not have expand set, but can accept a smaller size when needed.

New in version 4.10.

get_size()
Returns:

the current size of the panel.

Return type:

int

The size of the panel in which the plugin is embedded.

get_small()
Returns:

True when the plugin is small, False otherwise.

Return type:

bool

Whether the plugin is small enough to fit in a single row of a multi-row panel. E.g. if it is a button-like applet.

New in version 4.10.

get_unique_id()
Returns:

the unique id of the plugin.

Return type:

int

The internal unique id of the plugin. Each plugin in the panel has a unique number that is for example used for the config file name or property base in the xfconf channel.

lookup_rc_file()
Returns:

The path to a config file or None if no file was found. The returned string must be freed using GLib.free()

Return type:

str

Looks for the plugin resource file. This should be used to get the plugin read location of the config file. You should only use the returned path to read information from, since it might point to a not-writable file (in kiosk mode for example).

See also: Libxfce4panel.PanelPlugin.save_location() and Libxfce4util.resource_lookup()

menu_destroy()

Remove all custom menu items added through Libxfce4panel.PanelPlugin.menu_insert_item from the menu.

menu_insert_item(item)
Parameters:

item (Gtk.MenuItem) – a Gtk.MenuItem.

Insert a custom menu item to the plugin’s right click menu. This item is packed below the first item in the menu, which displays the plugin’s name.

menu_show_about()

Show the “About” item in the menu. Clicking on the menu item will emit the “about” signal.

menu_show_configure()

Show the “Properties” item in the menu. Clicking on the menu item will emit the “configure-plugin” signal.

popup_menu(menu, widget, trigger_event)
Parameters:

Pops up menu at widget if widget is non-None and if appropriate given the panel position, otherwise pops up menu at pointer.

As a convenience, Libxfce4panel.PanelPlugin.popup_menu() calls Libxfce4panel.PanelPlugin.register_menu() for the menu.

For a custom widget that will be used as a popup menu, use Libxfce4panel.PanelPlugin.position_widget() instead.

See also: Gtk.Menu.popup_at_widget() and Gtk.Menu.popup_at_pointer().

New in version 4.17.2.

position_widget(menu_widget, attach_widget)
Parameters:
Returns:

x:

return location for the x coordinate.

y:

return location for the y coordinate.

Return type:

(x: int, y: int)

Computes the x and y coordinates to position the menu_widget relative to attach_widget. If attach_widget is None, the computed position will be relative to self.

Note that if the panel is hidden (autohide), you should delay calling this function until the panel is shown, so that it returns the correct coordinates.

This function is intended for custom menu widgets. For a regular Gtk.Menu you should use Libxfce4panel.PanelPlugin.popup_menu() instead.

See also: Libxfce4panel.PanelPlugin.popup_menu().

register_menu(menu)
Parameters:

menu (Gtk.Menu) – a Gtk.Menu that will be opened

Register a menu that is about to popup. This will make sure the panel will properly handle its autohide behaviour. You have to call this function every time the menu is opened (e.g. using Gtk.Menu.popup_at_widget()).

If you want to open the menu aligned to the side of the panel (and the plugin), you should use Libxfce4panel.PanelPlugin.popup_menu(). This function will take care of calling Libxfce4panel.PanelPlugin.register_menu() as well.

See also: Libxfce4panel.PanelPlugin.popup_menu() and Libxfce4panel.PanelPlugin.block_autohide().

remove()

Remove this plugin from the panel and remove all its configuration.

Plugins should not use this function to implement their own menu item or button to remove theirselfs from the panel, but only in case the there are problems with the plugin in the panel. Always try to inform the user why this occured.

New in version 4.8.

save_location(create)
Parameters:

create (bool) – whether to create missing directories.

Returns:

The path to a config file or None if no file was found. The returned string must be freed u sing GLib.free().

Return type:

str

Returns the path that can be used to store configuration information. Don’t use this function if you want to read from the config file, but use Libxfce4panel.PanelPlugin.lookup_rc_file() instead.

See also: Libxfce4panel.PanelPlugin.lookup_rc_file() and Libxfce4util.resource_save_location()

set_expand(expand)
Parameters:

expand (bool) – whether to expand the plugin.

Whether the plugin should expand of not

set_shrink(shrink)
Parameters:

shrink (bool) – whether the plugin can shrink.

Whether the plugin can shrink if the size on the panel is limited. This does not work if the plugin is expanded.

set_small(small)
Parameters:

small (bool) – whether the plugin is a small button-like applet.

Whether the plugin is small enough to fit in a single row of a multi-row panel. E.g. if it is a button-like applet.

take_window(window)
Parameters:

window (Gtk.Window) – a Gtk.Window.

Connect a dialog to a plugin. When the self is closed, it will destroy the window.

New in version 4.8.

unblock_menu()

Unblock configuring the plugin. This will make the “Properties” menu item sensitive.

do_about() virtual
do_configure_plugin() virtual
do_construct() virtual
do_free_data() virtual
do_mode_changed(mode) virtual
Parameters:

mode (Libxfce4panel.PanelPluginMode) –

do_nrows_changed(rows) virtual
Parameters:

rows (int) –

do_orientation_changed(orientation) virtual
Parameters:

orientation (Gtk.Orientation) –

do_remote_event(name, value) virtual
Parameters:
Return type:

bool

do_removed() virtual
do_save() virtual
do_screen_position_changed(position) virtual
Parameters:

position (Libxfce4panel.ScreenPosition) –

do_size_changed(size) virtual
Parameters:

size (int) –

Return type:

bool

Signal Details

Libxfce4panel.PanelPlugin.signals.about(panel_plugin)
Signal Name:

about

Flags:

RUN_LAST

Parameters:

panel_plugin (Libxfce4panel.PanelPlugin) – The object which received the signal

This signal is emmitted when the About entry in the right-click menu is clicked. Plugin writers can use it to show information about the plugin and display credits of the developers, translators and other contributors.

See also: Libxfce4panel.PanelPlugin.menu_show_about().

Libxfce4panel.PanelPlugin.signals.configure_plugin(panel_plugin)
Signal Name:

configure-plugin

Flags:

RUN_LAST

Parameters:

panel_plugin (Libxfce4panel.PanelPlugin) – The object which received the signal

This signal is emmitted when the Properties entry in the right-click menu is clicked. Plugin writers can use this signal to open a plugin settings dialog. It is their responsibility to block/unblock panel autohide when the dialog is shown/hidden.

See also: Libxfce4panel.PanelPlugin.menu_show_configure() and xfce_titled_dialog_new ().

Libxfce4panel.PanelPlugin.signals.free_data(panel_plugin)
Signal Name:

free-data

Flags:

RUN_LAST

Parameters:

panel_plugin (Libxfce4panel.PanelPlugin) – The object which received the signal

This signal is emmitted when the plugin is closing. Plugin writers should use this signal to free any allocated resources.

Libxfce4panel.PanelPlugin.signals.mode_changed(panel_plugin, mode)
Signal Name:

mode-changed

Flags:

RUN_LAST

Parameters:

This signal is emmitted whenever the mode of the panel the plugin is on changes.

New in version 4.10.

Libxfce4panel.PanelPlugin.signals.nrows_changed(panel_plugin, rows)
Signal Name:

nrows-changed

Flags:

RUN_LAST

Parameters:

This signal is emmitted whenever the nrows of the panel the plugin is on changes.

New in version 4.10.

Libxfce4panel.PanelPlugin.signals.orientation_changed(panel_plugin, orientation)
Signal Name:

orientation-changed

Flags:

RUN_LAST

Parameters:

This signal is emmitted whenever the orientation of the panel the plugin is on changes. Plugins writers can for example use this signal to change the order of widgets in the plugin.

Libxfce4panel.PanelPlugin.signals.remote_event(panel_plugin, name, value)
Signal Name:

remote-event

Flags:

RUN_LAST

Parameters:
Returns:

True to stop signal emission to other plugins, False to send the signal also to other plugins with the same name.

Return type:

bool

This signal is emmitted by the user by running xfce4-panel –plugin-event=plugin-name:name:py:data::type<Libxfce4panel.PanelPlugin.props.type>:value. It can be used for remote communication, like for example to popup a menu.

Libxfce4panel.PanelPlugin.signals.removed(panel_plugin)
Signal Name:

removed

Flags:

RUN_LAST

Parameters:

panel_plugin (Libxfce4panel.PanelPlugin) – The object which received the signal

This signal is emmitted when the plugin is permanently removed from the panel configuration by the user. Developers can use this signal to cleanup custom setting locations that for example store passwords.

The free-data signal is emitted after this signal!

Note that if you use the xfconf channel and base property provided by Libxfce4panel.PanelPlugin.get_property_base() or the rc file location returned by Libxfce4panel.PanelPlugin.save_location(), the panel will take care of removing those settings.

New in version 4.8.

Libxfce4panel.PanelPlugin.signals.save(panel_plugin)
Signal Name:

save

Flags:

RUN_LAST

Parameters:

panel_plugin (Libxfce4panel.PanelPlugin) – The object which received the signal

This signal is emitted when the plugin should save it’s configuration. The signal is always emmitted before the plugin closes (before the “free-data” signal) and also once in 10 minutes or so.

See also: Libxfce4panel.PanelPlugin.save_location().

Libxfce4panel.PanelPlugin.signals.screen_position_changed(panel_plugin, position)
Signal Name:

screen-position-changed

Flags:

RUN_LAST

Parameters:

This signal is emmitted whenever the screen position of the panel the plugin is on changes. Plugins writers can for example use this signal to change the arrow direction of buttons.

Libxfce4panel.PanelPlugin.signals.size_changed(panel_plugin, size)
Signal Name:

size-changed

Flags:

RUN_LAST

Parameters:
Return type:

bool

This signal is emmitted whenever the size of the panel the plugin is on changes. Plugins writers can for example use this signal to update their icon size.

If the function returns False or is not used, the panel will force a square size to the plugin. If you want non-square plugins and you don’t need this signal you can use something like this:

g_signal_connect (plugin, “size-changed”, G_CALLBACK (Gtk.true), None);

Property Details

Libxfce4panel.PanelPlugin.props.arguments
Name:

arguments

Type:

[str]

Default Value:

[]

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

The arguments the plugin was started with. If the plugin was not started with any arguments this value is None. Plugin writer can use it to read the arguments array, but Libxfce4panel.PanelPlugin.get_arguments() is recommended.

Libxfce4panel.PanelPlugin.props.comment
Name:

comment

Type:

str

Default Value:

None

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

The translated description of the Libxfce4panel.PanelPlugin. This property is set during plugin construction and can’t be set twice. Plugin writer can use it to read the plugin description, but Libxfce4panel.PanelPlugin.get_comment() is recommended.

New in version 4.8.

Libxfce4panel.PanelPlugin.props.dark_mode
Name:

dark-mode

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE

Whether the Libxfce4panel.PanelPlugin shall request the Gtk dark theme variant (based on the panel setting).

New in version 4.14.

Libxfce4panel.PanelPlugin.props.display_name
Name:

display-name

Type:

str

Default Value:

None

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

The translated display name of the Libxfce4panel.PanelPlugin. This property is set during plugin construction and can’t be set twice. Plugin writer can use it to read the plugin display name, but Libxfce4panel.PanelPlugin.get_display_name() is recommended.

Libxfce4panel.PanelPlugin.props.icon_size
Name:

icon-size

Type:

int

Default Value:

0

Flags:

READABLE

The icon-size in pixels of the Libxfce4panel.PanelPlugin. Plugin writers can use it to read the plugin’s icon size, but Libxfce4panel.PanelPlugin.get_icon_size() is recommended.

New in version 4.14.

Libxfce4panel.PanelPlugin.props.mode
Name:

mode

Type:

Libxfce4panel.PanelPluginMode

Default Value:

Libxfce4panel.PanelPluginMode.HORIZONTAL

Flags:

READABLE

xlib.Display mode of the plugin.

New in version 4.10.

Libxfce4panel.PanelPlugin.props.nrows
Name:

nrows

Type:

int

Default Value:

1

Flags:

READABLE

Number of rows the plugin is embedded on.

New in version 4.10.

Libxfce4panel.PanelPlugin.props.orientation
Name:

orientation

Type:

Gtk.Orientation

Default Value:

Gtk.Orientation.HORIZONTAL

Flags:

READABLE

The Gtk.Orientation of the Libxfce4panel.PanelPlugin. Plugin writer can use it to read the plugin orientation, but Libxfce4panel.PanelPlugin.get_orientation() is recommended.

Libxfce4panel.PanelPlugin.props.screen_position
Name:

screen-position

Type:

Libxfce4panel.ScreenPosition

Default Value:

Libxfce4panel.ScreenPosition.NONE

Flags:

READABLE

The Libxfce4panel.ScreenPosition of the Libxfce4panel.PanelPlugin. Plugin writer can use it to read the plugin’s screen position, but Libxfce4panel.PanelPlugin.get_screen_position() is recommended.

Libxfce4panel.PanelPlugin.props.shrink
Name:

shrink

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE

Whether the Libxfce4panel.PanelPlugin can shrink when there is no space left on the panel. Plugin writers can use it to read or set this property, but Libxfce4panel.PanelPlugin.set_shrink() is recommended.

New in version 4.10.

Libxfce4panel.PanelPlugin.props.size
Name:

size

Type:

int

Default Value:

0

Flags:

READABLE

The size in pixels of the Libxfce4panel.PanelPlugin. Plugin writer can use it to read the plugin size, but Libxfce4panel.PanelPlugin.get_size() is recommended.

Libxfce4panel.PanelPlugin.props.small
Name:

small

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE

Whether the Libxfce4panel.PanelPlugin is small enough to fit a single row of a multi-row panel. Plugin writers can use it to read or set this property, but Libxfce4panel.PanelPlugin.set_small() is recommended.

New in version 4.10.

Libxfce4panel.PanelPlugin.props.unique_id
Name:

unique-id

Type:

int

Default Value:

-1

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

Unique plugin ID