LogoLogo
  • About Thunderbird
  • Contributing to Thunderbird
    • Getting Started Contributing
    • Setting Up A Build Environment
    • Building Thunderbird
      • Windows Build Prerequisites
      • Linux Build Prerequisites
      • macOS Build Prerequisites
      • Artifact Builds
    • Codebase Overview
      • Account Configuration
      • Address Book
      • Chat Core
        • Notifications
        • Message Styles
        • Keyboard shortcuts
        • Chat Core Protocols
        • Contacts
      • Mail Front-End
    • Tutorials and Examples
      • Hello World Example
      • Thunderbird Live Development Videos
    • Fixing a Bug
      • Bug Triaging 101
        • Bug Status Classicification
        • Bug Types
        • Garbage Collection
        • Narrow the Scope
      • Using Mercurial Bookmarks
      • Using Mercurial Queues
      • Lint and Format Code
      • Using ESLint to Format Javascript Code
      • Try Server
      • Landing a Patch
      • Care and Feeding of the Tree
    • Testing
      • Running Tests
      • Adding Tests
      • Writing Mochitest Tests
  • Planning
    • Roadmap
    • Android Roadmap
    • Supported Standards
  • Add-on Development
    • Introduction
    • What's new?
      • Manifest Version 3
    • A "Hello World" Extension Tutorial
      • Using WebExtension APIs
      • Using a Background Page
      • Using Content Scripts
    • A Guide to Extensions
      • Supported Manifest Keys
      • Supported UI Elements
      • Supported WebExtension APIs
      • Thunderbird's WebExtension API Documentation
      • Thunderbird WebExtension Examples
      • Introducing Experiments
    • A Guide to Themes
    • Developer Community
    • Documentation & Resources
      • Tips and Tricks
    • Add-on Update Guides
      • Update for Thunderbird 128
      • Update for Thunderbird 115
        • Adapt to Changes in Thunderbird 103-115
      • Update for Thunderbird 102
        • Adapt to Changes in Thunderbird 92-102
      • Update for Thunderbird 91
        • Adapt to Changes in Thunderbird 79-91
      • Update for Thunderbird 78
        • Adapt to Changes in Thunderbird 69-78
      • Update for Thunderbird 68
        • Adapt to Changes in Thunderbird 61-68
      • How to convert legacy extensions?
        • Convert wrapped WebExtensions to modern WebExtensions
        • Convert legacy WebExtensions to modern WebExtensions
        • Convert legacy overlay extension to legacy WebExtension
        • Convert legacy bootstrapped extension to legacy WebExtension
  • Releases
    • Thunderbird Channels
    • Release Cadence
    • Uplifting Fixes
    • Feature Flags
    • Tracking Fixes for Releases
    • Contributing to Release Notes
Powered by GitBook
On this page
  • Browser Action
  • Compose Action
  • Message Display Action
  • CloudFile Provider Configuration
  • Menu Items

Was this helpful?

Edit on GitHub
Export as PDF
  1. Add-on Development
  2. A Guide to Extensions

Supported UI Elements

Descriptions and examples of MailExtension APIs to interact with Thunderbird's user interface.

PreviousSupported Manifest KeysNextSupported WebExtension APIs

Last updated 8 months ago

Was this helpful?

Browser Action

A browser action adds a button to Thunderbird's main toolbar:

It is controlled by the browser_action manifest key in the extension's manifest.json file:

"browser_action": {
    "default_title": "Restart",
    "default_icon" : "restart.png",
    "default_popup": "browser_popup.html"
},

Compose Action

A compose action adds a button to the toolbar of the composer window:

It is controlled by compose_action manifest key in the extension's manifest.json file:

"compose_action": {
    "default_title": "Expand lists",
    "default_icon" : "lists.png",
    "default_popup": "compose_popup.html"
},

Message Display Action

A message display action adds a button to the toolbar of the message view window:

It is controlled by the message_display_action manifest key in the extension's manifest.json file:

"message_display_action": {
    "default_title": "Copy Patch",
    "default_icon" : "patch.png",
    "default_popup": "message_popup.html"
    },

CloudFile Provider Configuration

Menu Items

Thunderbird menus are accessible through the following context types:

Context
Description

all

Add menu entries to all supported contexts, excluding tab and tools_menu.

all_message_attachments

action, browser_action, compose_action , message_display_action Note: browser_action is available in Manifest V2 and action is available in Manifest V3.

action_menu, browser_action_menu, compose_action_menu, message_display_action_menu, Note: browser_action_menu is available in Manifest V2 and action_menu is available in Manifest V3.

compose_attachments

editable, password

Add entries to the context menu of text/password input fields in WebExtension windows, web tabs or message display tabs.

folder_pane

image, audio, video

link

Add entries to the context menu of links in WebExtension windows, in web tabs or in message display tabs.

message_attachments

message_list

page, frame

Add entries to the context menu of WebExtension windows, web tabs or message display tabs, if none of the other content contexts apply (link, selection, image, audio, video, editable, password).

selection

Add entries to the context menu in WebExtension windows, web tabs or message display tabs, if any text has been selected.

tab

The tab context can also be used to override the context menu of content pages (action popups or content tabs).

tools_menu

If a default_popup is defined, a popup will be opened and the defined html page will be loaded, when the button is clicked. Additionally, you can use the API in your background script to interact with the button to modify badge text, icon, title or its enabled state.

If the action button is defined as a , it will open a drop-down menu when clicked.

Note: The browserAction API has been renamed to action in .

If a default_popup is defined, a popup will be opened and the defined html page will be loaded, when the button is clicked. Additionally, you can use the API in your background script to interact with the button to modify badge text, icon, title or its enabled state.

If the action button is defined as a , it will open a drop-down menu when clicked.

If a default_popup is defined, a popup will be opened and the defined html page will be loaded, when the button is clicked. Additionally, you can use the API in your background script to interact with the button to modify badge text, icon, title or its enabled state.

If the action button is defined as a , it will open a drop-down menu when clicked.

Thunderbird supports cloud providers to upload large attachments to a server, instead of attaching them directly to the email. Extensions can register such cloud providers using the API. These providers can be managed in Thunderbird's Composition options:

The API allows modifying Thunderbird's menus by adding or overriding menu items. The menu items can be added to different menus based on the provided context type. Examples can be found in our .

Add entries to the context menu of the summary area of message attachments. If the message has only one attachment, then the message_attachments context is used instead.

Add entries to the context menu of action buttons.

Add entries to the drop-down menu of .

Add entries to the context menu of attachments in the compose window.

Limited to content areas.

Add entries to the context menu of the folder pane of mail tabs.

Add entries to the context menu of embedded images, audio or video players in WebExtension windows, web tabs or message display tabs. Limited to content areas.

Limited to content areas.

Add entries to the context menu of attachments of messages.

Add entries to the context menu of the message list area of a mail tab.

If the page is loaded inside a frame, the frame context applies, otherwise the page context. Limited to content areas.

Limited to content areas.

Add entries to the context menu of tab ribbons.

See the for more details.

Add entries to Thunderbird's tools menu.

browserAction
menu typed action button
Manifest V3
composeAction
menu typed action button
messageDisplayAction
menu typed action button
CloudFile
menus
example repository
menu typed action buttons
menu example