doc/reference/libpurple/plugin_ids.md

Thu, 21 Jul 2022 01:10:22 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 21 Jul 2022 01:10:22 -0500
changeset 41454
7cc69bde919d
parent 41164
d861b10105fb
permissions
-rw-r--r--

Update pidgin for the purple_account_manager_get_(in)active deprecations

Testing Done:
Compiled and made sure the menus still functioned as expected.

Reviewed at https://reviews.imfreedom.org/r/1536/

41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
1 Title: Plugin IDs
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
2 Slug: plugin-ids
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
4 ## Plugin IDs
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
5
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
6 ### Introduction
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
7
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
8 Every plugin contains a unique identifier. Third-party plugins (that is,
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
9 plugins written by anyone who is not a libpurple, Pidgin, or Finch developer)
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
10 are expected to use a plugin ID that follows a specific format. This format
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
11 categorizes plugins and makes duplicate IDs highly unlikely.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
13 ### Format
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
14
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
15 The basic format of a plugin ID is as follows:
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
17 ```
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
18 type-username-pluginname
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
19 ```
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
21 The ***type*** indicator specifies the type of plugin. This must be one
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
22 of the following:
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
24 #### Types Of Plugins
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
25
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
26 core
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
27 : A core libpurple plugin, capable of being loaded in any program using
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
28 libpurple. Core plugins may not contain any UI-specific code.
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
29
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
30 prpl
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
31 : A protocol plugin. This is a core plugin which provides libpurple the ability
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
32 to connect to another IM or chat network.
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
33
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
34 gtk
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
35 : A GTK+ (a.k.a. Pidgin) plugin. These plugins may use GTK+ code, but may not
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
36 use window toolkit code, such as X11, Win32, Cocoa, or Carbon.
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
37
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
38 gtk-x11
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
39 : A GTK+ plugin that uses X11 code. These plugins may use both GTK+ code and
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
40 X11 code, allowing to hook into features specific to X11.
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
41
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
42 gtk-win32
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
43 : A GTK+ plugin that uses Win32 code. These plugins may use both GTK+ code and
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
44 Win32 code, allowing to hook into features available on Windows.
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
45
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
46 gnt
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
47 : A GNT (a.k.a. Finch) plugin. These plugins may use GNT code.
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
48
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
49 The ***username*** must be a unique identifier for you. It
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
50 ***should*** be your https://developer.pidgin.im Trac user ID. Failing that, you
40967
d7b082e438b5 Update IRC channel references to Libera.chat
Jonathan Champ <jrchamp@ncsu.edu>
parents: 40962
diff changeset
51 could use your SourceForge user ID or your Libera.chat IRC nickname, if you
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
52 have either. The https://developer.pidgin.im Trac user ID is preferred.
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
53 Do ***not*** leave this field blank!
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
54
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
55 The ***pluginname*** is the name of your plugin. It is usually all
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
56 lowercase letters and matches the static plugin ID (the first argument to
40962
19e53c9cab73 Remove `PURPLE_PLUGIN_INIT` from docs.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 37097
diff changeset
57 the GPLUGIN_NATIVE_PLUGIN_DECLARE() macro call), although it can be anything you
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
58 like. Do ***not*** include version information in the plugin ID--the
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
59 `PurplePluginInfo` object already has a property for this.
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
60
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
61 ### One Last Rule For Plugin IDs
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
62
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
63 Plugin IDs may ***NOT*** contain spaces. If you need a space, use another
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
64 hyphen (-).
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
65
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
66 ### Exceptions To The Rule
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
67
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
68 As with any rule there are exceptions. If you browse through the source
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
69 tree you will see that the plugins we distribute with the Pidgin source
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
70 do not contain a username field. This is because while one developer may
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
71 have written each specific plugin, the plugins are maintained
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
72 collectively by the entire development team. This lack of a username
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
73 field is also an indicator that the plugin is one of our plugins and not
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
74 a third-party plugin.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
75
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
76 Another exception to the rule is the
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
77 [Purple Plugin Pack](https://keep.imfreedom.org/pidgin/purple-plugin-pack/).
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
78 All plugins whose lives started in the Purple Plugin Pack use
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
79 `"plugin_pack"` for the username field to indicate origination in
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
80 the Purple Plugin Pack.
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
81
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
82 These two exceptions are mentioned here for completeness. We don't
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
83 encourage breaking the conventions set forth by the rules outlined above.
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
84
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
85 ### Examples Of Well-Chosen Plugin IDs
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
86
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
87 The following is a list of well-chosen Plugin IDs listing a few good examples.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
88
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
89 gtk-amc_grim-guifications
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
90 : This is the plugin ID for the Guifications 2.x plugin.
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
91
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
92 gtk-rlaager-album
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
93 : This is the plugin ID for the Album plugin, which is now part of the
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
94 Purple Plugin Pack. Its ID follows the rules because its life started prior
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
95 to its inclusion in the Plugin Pack.
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
96
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
97 core-rlaager-irchelper
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
98 : This is the plugin ID for the IRC Helper plugin, which is now part of the
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
99 Purple Plugin Pack. Its ID follows the rules because its life started prior
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
100 to its inclusion in the Plugin Pack.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
101
41164
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
102 ### Plugin Database
d861b10105fb Convert the libpurple docs to gi-docgen
Gary Kramlich <grim@reaperworld.com>
parents: 40967
diff changeset
103
35490
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
104 Although it doesn't exist yet, in time there will be a plugin database
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
105 on the Pidgin website, where users can download and install new plugins.
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
106 Plugins will be accessed by your plugin ID, which is one reason why it
1c4efce838f6 gtk-doc-ify C-HOWTO, plugin-i18n, plugin-ids, plugin-signals
Ankit Vani <a@nevitus.org>
parents: 33955
diff changeset
107 must be unique.

mercurial