[Ext] userChromeJS 2.0 [2015-08-02]

Announce and Discuss the Latest Theme and Extension Releases.

User avatar
Posts: 146
Joined: January 17th, 2008, 8:03 am
Location: Somewhere in Space

Post Posted May 13th, 2017, 2:00 am

Hi alta88.
Will the userchromejs.2.0.xpi add-on survive the transition to webextension
or is it destined to die? Are there any news about this?
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
OS: Windows 7 Home Premium - My Versions Info

Posts: 980
Joined: January 28th, 2006, 3:08 pm

Post Posted May 14th, 2017, 12:06 pm

I haven't looked into it, but from what I understand it won't/can't be as privileged as it is currently. It can likely be made to execute snippets of code but not on chrome or using xpcom apis, ie I doubt it can add an xul statusbar to the dom, etc. so won't be hugely useful. And the xul overlay part is surely dead. For web page manipulation, whatever GreaseMonkey can do is an alternative. I'm also unlikely to take the time to figure it out/convert it, sorry.

The current state of thinking is well described by the door slam on the old bug to implement natively a userChrome.js type file:

Posts: 2610
Joined: February 3rd, 2009, 6:29 pm

Post Posted May 14th, 2017, 5:44 pm

The config file may still work in Firefox 57. You can use the mozilla.cfg file as an alternative to the userChrome.js file.

Customizing Firefox – Advanced Autoconfig Files ... fig-files/

Demo mozilla.cfg file ... 2/demo.cfg

Observer Notifications ... ifications

Deploying Firefox in an enterprise environment ... deployment

Posts: 980
Joined: January 28th, 2006, 3:08 pm

Post Posted May 15th, 2017, 7:15 am

Thanks morat, .cfg is indeed a way to bypass being an xul overlay. However,
1) a web extension would need to write to this file, this ability could be removed in the future.
2) the code executed in .cfg could be limited to just the pref setting/locking for which the file was originally intended.

Posts: 24
Joined: October 23rd, 2017, 1:23 pm

Post Posted October 23rd, 2017, 1:36 pm

Hi everybody.

In a german forum we are talking about the subject: ... 7#p1053287

We make script loading possible with the config file and a folder with three files.

The config file:

Code: Select all

const Cu = Components.utils;

try {


  if (!Services.appinfo.inSafeMode) {
    let path = OS.Constants.Path.libDir;
    if (Services.appinfo.OS == 'Darwin') {  // macOS
      path = OS.Path.join(OS.Path.dirname(path), "Resources");
    var ucjsDirPath = OS.Path.join(path, "userChromeJS");
    path = OS.Path.join(ucjsDirPath, "main.js");
    let mainFileURI = OS.Path.toFileURI(path);
    Services.scriptloader.loadSubScript(mainFileURI, this, "UTF-8");

} catch(e) {

Two files of the folder contain the JS code from the extension with some modifications. The third file is the readme. The folder is named "userChromeJS" and you can download it zipped here: ... 5500264989

Unpack it and then put it into the installation directory.
Take a look at the readme, a new function for imported scripts is added.

Have fun! :)

Edit: config file modified. The old one did not work for macOS.
Last edited by aborix on December 10th, 2017, 2:22 pm, edited 1 time in total.

Posts: 140
Joined: August 30th, 2013, 3:50 pm

Post Posted November 29th, 2017, 2:20 am

Posts: 22
Joined: December 7th, 2011, 8:34 am

Post Posted December 11th, 2017, 3:24 am

Man, a huge, jumbled MozillaZine forum thread is a really poor mechanism for supporting an add-on.

Is anybody still maintaining this add-on?

Even if it stops working in Firefox, it is continuing to work in Thunderbird, and I'd really like to keep using it.

But then there's this error it's currently generating in Thunderbird:

JavaScript error: chrome://userchromejs/content/userChromeJS.js, line 214: TypeError: date.toLocaleFormat is not a function

Sure would be nice if this were fixed.

Posts: 2610
Joined: February 3rd, 2009, 6:29 pm

Post Posted December 11th, 2017, 6:40 am

Many thanks to aborix and pintassilgo.



* content\userChromeJS.js

Code: Select all
get date() {
  let date = new Date();
  try {
    date = date.toLocaleFormat(this.dateFormat);
  } catch (e) {
    date = date.toString();
  return date;

Add-ons Guide for Thunderbird 57

Posts: 2610
Joined: February 3rd, 2009, 6:29 pm

Post Posted January 16th, 2018, 8:14 pm

Someone got the userChrome.js file working with only the userChrome.css file.

It's very possible that at some future time the Firefox team will remove some or all of the functionality that makes this possible, so enjoy it while you can.

Firefox Quantum compatible userChrome.js

Luke Baker customizations

Return to Extension/Theme Releases

Who is online

Users browsing this forum: No registered users and 1 guest