Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I publish a Greasemonkey script as a Firefox add-on?

I recently have worked on a script in Greasemonkey and would like to publish it as an add-on for Firefox. What is the easiest way to do this?

like image 684
CSadosky Avatar asked Jul 26 '12 10:07

CSadosky


People also ask

How do I run a Greasemonkey script in Firefox?

Installing the Greasemonkey Extension. Click on the Firefox drop-down menu at the top left of the browser and select Add-ons. Type Greasemonkey into the add-ons search box at the top right of the browser. Find Greasemonkey in the list and click on Install.

Does Greasemonkey work on Firefox?

Compatibility. Greasemonkey is available for Firefox, Flock and GNOME Web (formerly called Epiphany).

Where are Greasemonkey scripts stored?

They're stored in an IndexedDB ( https://github.com/greasemonkey/greasemonkey/blob/master/src/bg/user-script-registry.js#L287 ) which is a format with very little (AFAIK?) tooling.


2 Answers

While you can "compile" a GreaseMonkey script (see Brock's answer), this solution isn't exactly well-supported. The more reliable option would be using the Add-on SDK and JPM. Your lib/main.js file can be really simple (page-mod module documentation):

var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
  include: "*.example.com",
  contentScriptWhen: 'end',
  contentScriptFile: data.url("contentScript.js")
});

This is equivalent to the following GreaseMonkey script header:

// @include http://example.com/*
// @include http://*.example.com/*

And then you add your GreaseMonkey script as data/contentScript.js (Add-on SDK will ignore the GreaseMonkey header, the info is specified elsewhere) and build the extension. In most cases it will just work - unless your GreaseMonkey script uses any special GreaseMonkey API of course, in which case you will need to find a replacement. unsafeWindow is supported by the way (usual warnings apply).

like image 56
Wladimir Palant Avatar answered Nov 09 '22 10:11

Wladimir Palant


Just post your script at userscripts.org1OpenUserJS.org (Or one of the other userscripts.org replacements).
Trying to repackage it as an add-on is usually more trouble than it is worth.


If you really must, you can use the Greasemonkey script compiler to turn your script into an "add-on", and then submit that add-on to Mozilla, via the normal add-on process.

Note that Wladimir's answer is better than the Greasemonkey script compiler.



1Userscripts.org is now long dead.

like image 42
Brock Adams Avatar answered Nov 09 '22 10:11

Brock Adams