ServerGrease is a minimal Mozilla
extension that allows the browser to include configuration and extra functionality (normally
installed via client-side extensions) hosted on a webserver. This allows multiple browsers to be
configured from a central location.
Every time a Mozilla browser starts up with this extension installed, it loads the specified remote
.js file and runs it. It evaluates the script (and therefore bypasses most of
the browser's security), allowing the script to modify the browser's behavior in most of the same ways that
client-side extension code does.
Browser modifications other than .js (eg. XUL GUI changes) aren't currently supported.
- Install servergrease.xpi.
- Type "about:config" in the
location bar. Right click in the settings, select New > String, and fill in the following information:
|Preference name ||servergrease.loadURL
|String value ||(the URL of the .js file to be loaded at startup)
- Restart the browser.
Once server-hosted code is running, it can run the same code as extensions use. In addition, the
following function is provided, so that code can be split across multiple files:
The server-side files are cached by the browser. To reload the newest version of a file without
restarting the browser, open the desired file as a webpage, hard-reload the page (Ctrl+R), open a new window (Ctrl+N),
and close all old windows.
Example: Keyword bookmarks
This script is an implementation of server-hosted keyword bookmarks. It also implements
some features not normally found in keymarks, including the ability to have "default" arguments, and
to modify the arguments.
I'm not completely familiar with Firefox browser security. It's possible that
sgrease_import()'s security could be improved. It's possible it could be a bad idea, or
have large holes in it. If you have input, feel free to contact me.
The source code is available under the GPL.
The name "ServerGrease" is intended to be reminiscent of Greasemonkey, another extension that focuses on
different functions, and the name is hopefully not similar enough to be confusing.