A GhostText implementation for the Thunderbird email client.
Ghostbird is a Thunderbird add-on that lets you compose your emails in your favorite text editor - Vim, Neovim, VS Code, Sublime Text, Emacs, or any other editor - with a GhostText add-on installed.
Please visit the website for the original browser add-on, GhostText by Federico Brigante, to get the idea.
Since synchronization uses the GhostText protocol, your text editor needs to have a GhostText server function. This means you need to install a plugin on your text editor's side to listen for connections from Thunderbird.
-
Thunderbird 140 (We will mainly support the latest ESR)
-
A text editor that has a GhostText server add-on installed and running:
The last two implementations can wrap any editor that blocks while editing.
- See the help page in the Mozilla Support Center for details.
You can install Ghostbird in several ways:
- In Thunderbird, open
Add-ons Manager. - Search for "Ghostbird".
- Click the + Add to Thunderbird button.
- Download the latest release from the Thunderbird add-on website or Github Releases.
- In Thunderbird, go to
Add-ons Manager. - Drag and drop the downloaded
.xpifile into theAdd-ons Managerwindow.
Alternatively, you can:
- Press βοΈ button at the top-right.
- Select
Install Add-on From File...from the menu. - Select downloaded
.xpifile.
- Basically, running
makewill do, which is roughly equivalent toyarn install && yarn build. - See CONTRIBUTING.md to get started.
- Launch your favorite text editor.
- Start the GhostText server in your text editor (e.g., with
:GhostTextStartin Vim). - Press the gray Ghostbird button
in the Thunderbird mail compose window. (The default shortcut is ^Ctrl+β§Shift+H)
- If the connection is successful, the button will turn blue
.
- If the connection fails, the button will turn red
. Make sure that the GhostText server is listening. See Troubleshooting page of original GhostText.
- If the connection is successful, the button will turn blue
- Write your email in the text editor.
- Close your text editor to stop Ghostbird.
-
Example using Vim-Ghost
vimghost.webm
-
Example using Notepad++ via GhostText-Any
- See design.md for details.
flowchart LR
subgraph Thunderbird
mailCompose@{label: Compose<br>Window}
gtClient@{label: Ghostbird}
end
subgraph Your favorite text editor
gtServer@{label: GhostText<br>Server}
textEditor@{label: Text editor<br>screen}
end
mailCompose -->|Starts| gtClient
gtClient -->|Connects to| gtServer
gtServer -->|Shows Initial Text| textEditor
textEditor -->|Returns Edited Text| gtServer
gtServer -->|Updates| gtClient
gtClient -->|Updates| mailCompose
See also a list of milestones.
Changelog & Milestones
| Mark | Meaning | Description |
|---|---|---|
| β | Done | Released in previous versions |
| πͺΊ | Experimental | Released recently; please try and tell us if you notice something |
| π§ | WIP | In development but not released |
| β¬ | Planned | Must be implemented to release the version |
| β | Limitation | The version will be released with this limitation |
-
v0.0.1 - Released
- β Prepare the project skeleton (README, build, test, lint, debug, CI)
- β Start button on the toolbar
- β Edit plain text emails
- β Keyboard shortcuts
- β Milestones and Project board
- β Non-bidirectional: Thunderbird becomes read-only while Ghostbird is active
- β No i18n: the UI is only in English*
- β Quirky when editing HTML emails
*GhostText communicates only in UTF-8, so you can safely write emails in any language.
-
v0.1.0 - Released
- β Debug
-
v0.2.0 - Released
-
v0.2.1 - Released
-
v0.3.0 - Released
-
v0.4.0 - Current
-
v0.5.0 - 2025 Q4
-
v0.x.x - 2025 Q4
-
v1.0.0 - 2026 Q2
-
v1.x.x - 2026 Q4
*Requires protocol extension and server-side support. I intend to develop one by forking GhostText-Any.
-
v2.x.x
-
Proper implementation as a GhostText client
- β¬ Cursor and selection synchronization
- β¬ Bidirectional editing; changes in Thunderbird are reflected in the text editor
-
β¬ Better handling of conflicts, disconnection, and reconnection (possibly extending the protocol)
-
- Editing text boxes other than the email compose window in Thunderbird
- WYSIWYG editing for HTML emails
- Thunderbird Mobile support
If you like the idea, please:
- Star the repo.
- Rate the add-on.
- Feel free to open issues and submit pull requests. See CONTRIBUTING.md to get started.
- See our milestones page or issues for tasks you can contribute to, and use the Discussions page for general discussions.
We need help with:
- Website and materials (please post screenshots to the wiki)
- Translations (check
locales.tomland let us know of any issues) - Testing with various text editors
- Testing with various OSes
- Wiki pages for user guides and troubleshooting
- Developing the server counterpart so that this can be used as a replacement for External Editor (GhostText-Any or Helix-Ghost can be a good starting point)
- Creating a checklist for testing and debugging (This page can be a good starting point)
- Automating tests with the actual Thunderbird (See Testing)
- Organization members (we want to increase the organization's bus factor)
- I'd say yes, but save your work frequently since it may contain bugs and eat your email.
- This add-on does not collect any personal data and can only connect to localhost. Attempts to send any data to external servers are blocked by Thunderbird's security model.
- You can look inside the released
.xpifiles (which are just zip files) to verify that they match the build from the source code. - As for trustworthiness, the safest option is to wait until it reaches 1.0.0, as that indicates it has passed Mozilla's manual review.
- See faq.md.
- See CONTRIBUTING.md for details on the development workflow.
- Make sure that the GhostText server is listening. See the Troubleshooting page of original GhostText.
- See doc/faq.md.
Please consider the following options:
- Star the repo
- Rate the add-on
- Donate to Thunderbird (It's financially separate from Firefox)
- Donate to @fregante, the author of the original GhostText
- Contribute to the development
If you've looked at the options above and still want to motivate the maintainer @snipsnipsnip specifically, you can tip some ETH.
- Federico Brigante, the author of GhostText.
- Alexandre Feblot, the original author of External Editor, which I took over maintaining; it is now in a stale state. I intend to incorporate some of its features into Ghostbird.
- The button image is based on a photo of a Grey-headed Bushshrike by Patty McGann (CC-BY-2.0).
Ghostbird is dual-licensed under (MPL-2.0 OR GPL-3.0-or-later). See also NOTICE.