Add-on Converter for SeaMonkey

About this converter

The purpose of this tool is to make Firefox and Thunderbird extensions compatible with SeaMonkey. It will run a couple of automatic conversions based on most commonly known differences between Firefox and SeaMonkey. There is no guarantee that every extension will work in SeaMonkey — it will usually install but how and if it will work depends on the code. The simpler the extension the more likelihood of succeess — visit the list of compatible extensions that have been tested. To learn more about this tool read the discussion on MozillaZine Forum.

For trying out an extension in most cases it is best to leave the default options unchanged. Sometimes, this tool can do too much so in case of problems you may try to play with the options — remember this tool is mostly dumb and except for updating install.rdf it does not parse nor interpret the source code — it only does some basic string replacements. In most cases this will work, but sometimes it can produce broken code and unusable add-on. However, after the conversion you will be able to see the diff of changed files — handy for the more experienced users.

Warning! While there are some non-SeaMonkey extensions that can be automatically made compatible with SeaMonkey there is no guarantee what will actually happen. If you are unsure, it is strongly suggested you test the modded extension in a separate profile first as it can behave unexpectedly. Such modifications are neither supported by Mozilla nor by add-on authors so remember you are doing this at your own risk!

Converter

Upload add-on installer file (with .xpi filename extension):
or paste direct link to xpi file or full URL of add-on page at https://addons.mozilla.org/:

Advanced Options:

Add SeaMonkey to install.rdf and set maxVersion to:
Append to the name of converted extension ? The name of the converted extension will have this additional string appended. This will make it easy for you to distinguish which of your installed extensions have been converted. If you want the original name to remain intact then empty this field.
? This option will port extension features into the View -> Page Info window — if there are any. The Page Info window is a bit different from that in Firefox, therefore porting stuff in that window may not be fully successful. If the Page Info window is broken after installing the extension then try another conversion with this option disabled.

Technical explanation: this feature will prevent chrome://navigator/content/pageinfo/pageInfo.xul from being added to chrome.manifest.
? Replaces:
menu_ToolsPopup to taskPopup
menu_viewPopup to menu_View_Popup
menu_HelpPopup to helpPopup
msgComposeContext to contentAreaContextMenu
? Replaces strings:
@mozilla.org/browser/sessionstore;1 to @mozilla.org/suite/sessionstore;1
@mozilla.org/steel/application;1 to @mozilla.org/smile/application;1
@mozilla.org/fuel/application;1 to @mozilla.org/smile/application;1
blockedPopupOptions to popupNotificationMenu
menu_ToolsPopup to taskPopup
menu_HelpPopup to helpPopup
getBrowserSelection(...) to ContextMenu.searchSelected(...)
There are also many others potential things replaced in javascript, which are too long to list here.
? Replace Firefox specific shortcuts for Cc, Ci, Cr and Cu to Components.classes, Components.interfaces, Components.results and Components.utils. It does its best not to replace if the shortcuts are defined as constants in the javascript file. Also, these shortcuts are not replaced in bootstrapped (restartless) extensions.

Feedback and Support

There's no formal support for this tool but you are welcome to share your experience, discuss and ask questions in this MozillaZine thread.

The source code of the converter is available on GitHub.