The goal of this repository is to provide additional tools, modules, custom elements, Experiment APIs and other resources, to simplify the development of WebExtensions for Thunderbird.
To get started with WebExtensions for Thunderbird, we suggest to first read our Thunderbird WebExtension Guide and follow the "Hello World" Example.
You will learn, how WebExtensions use a set of well-defined APIs (called WebExtension APIs), which will be mostly stable, even if the underlying Thunderbird code base is changed. In the past, these internal changes have led to heavy add-on breakages on each new Thunderbird release and the WebExtension API approach aims to minimize that.
You will also learn, that the current set of available WebExtension APIs for Thunderbird is far from being complete. Many aspects of Thunderbird which are of interest for add-ons, cannot be accessed by them. To overcome this limitation, add-on developers can write Experiment APIs, which have direct access to internal Thunderbird functions and can make them available to WebExtensions. Their usage should be minimized. In this repository we provide Experiments, which are currently not planned to be merged into core, but are useful to overcome some of the current limitations. In the webext-experiments repository you will find additional Experiment APIs, which are planned to be merged into core.
The experiments
folder contains the following Experiment APIs, which may be useful while converting legacy extensions to modern WebExtensions:
Description | |
---|---|
FileSystem | Grant read/write access to a folder in the users profile folder (file system level). |
ImapTools | Extract the IMAP UID from a message. |
LegacyHelper | Register legacy chrome://*/content/ and resource://*/ urls, and open legacy XUL dialogs. |
LegacyCSS | Add CSS files to Thunderbird windows. |
LegacyPrefs | Access Thunderbird's system preferences. |
The images
folder contains the following resources:
Description | |
---|---|
A nice looking get-the-add-on badge to be used on websites to promote your Thunderbird Add-on. |
The modules
folder contains the following helper modules:
Description | |
---|---|
i18n | Replace __MSG_*__ i18n placeholders in HTML files. |
messageLists | Convenient wrapper functions for handling MessageLists and the pagination mechanism, simplifying the process of looping over messages |
preferences | Convenient wrapper functions to manager add-on preferences. |
The tools
folder contains the following tools:
Description | |
---|---|
locale converter | A python script to convert legacy DTD and property files to i18n JSON files. |
The ui
folder contains the following elements:
Description | |
---|---|
data-tables | Set of 3rd party libraries to present data in tables. |
mail-folder-picker | A custom element which allows to select one of the user's mail folders (IMAP, POP, Local, ...). |