Rated 5 out of 5 stars

Thanks for this addon. I had userchrome.js v1.7 (by Alice0775 and zeniko) in an older Thunderbird with several script buttons and yours has allowed me to bring all of them back into these newer TB versions. I prefer this option than relying on developers who may or may not get around to updating their button addons. Now we just have to hope this one doesn’t break, a common occurrence with the updates that wasn’t supposed to happen.

Rated 4 out of 5 stars

Well, it works, but not without problems (I think so)...

I have some little scripts for custom buttons, they work fine with the setup in thunderbirds 68.x folders described here:

I switched full to this AddOn (have deleted all added extra files from above).

Now only userChrome.js is loaded. Scripts in this file works well. But no extra userscript named as *.uc.js will work.
It is not possible to set userChrome.import("*", "UChrm").
And I can't figure out how to run the userscripts.

So I deleted this add-on, but:
Don't know for sure, but after deleting this addon I had trouble to clear the profile. I had duplicate custom buttons (no double scripts) in the menu and the positions of the buttons won't save.

I copied a backup profile and worked on, everything is fine again.

This review is for a previous version of the add-on (0.0.5). 

This add-on has nothing to do with the problems you had after deleting it.

This add-on is not a full replacement for the old one. It doesn't claim to be. As the description says, all this add-on does is load userChrome.js in every window.

I'm happy to accept pull requests to add additional functionality. See jikamens/userChromeJS on github.

Here's an example of how to implement the *.uc.js functionality yourself in your userChrome.js file:

let protocolHandler = Services.io.getProtocolHandler("file").
let userChromeDirectory = Services.dirsvc.get("UChrm", Ci.nsIFile);
for (let file of userChromeDirectory.directoryEntries) {
if (! file.leafName.endsWith(".uc.js"))
let url = protocolHandler.getURLSpecFromFile(file);
Services.scriptloader.loadSubScriptWithOptions(url, {
target: document.defaultView,
charset: "UTF-8",
ignoreCache: true