2011-11-29 08:43:16 -08:00
|
|
|
[Mozprofile](https://github.com/mozilla/mozbase/tree/master/mozprofile)
|
|
|
|
is a python tool for creating and managing profiles for Mozilla's
|
|
|
|
applications (Firefox, Thunderbird, etc.). In addition to creating profiles,
|
|
|
|
mozprofile can install [addons](https://developer.mozilla.org/en/addons)
|
2011-12-23 09:46:37 -08:00
|
|
|
and set
|
|
|
|
[preferences](https://developer.mozilla.org/En/A_Brief_Guide_to_Mozilla_Preferences).
|
2011-11-29 08:43:16 -08:00
|
|
|
Mozprofile can be utilized from the command line or as an API.
|
|
|
|
|
|
|
|
|
|
|
|
# Command Line Usage
|
|
|
|
|
|
|
|
mozprofile may be used to create profiles, set preferences in
|
|
|
|
profiles, or install addons into profiles.
|
|
|
|
|
|
|
|
The profile to be operated on may be specified with the `--profile`
|
|
|
|
switch. If a profile is not specified, one will be created in a
|
|
|
|
temporary directory which will be echoed to the terminal:
|
|
|
|
|
2011-12-23 09:46:37 -08:00
|
|
|
(mozmill)> mozprofile
|
2011-11-29 08:43:16 -08:00
|
|
|
/tmp/tmp4q1iEU.mozrunner
|
|
|
|
(mozmill)> ls /tmp/tmp4q1iEU.mozrunner
|
|
|
|
user.js
|
|
|
|
|
|
|
|
To run mozprofile from the command line enter:
|
|
|
|
`mozprofile --help` for a list of options.
|
|
|
|
|
|
|
|
|
|
|
|
# API Usage
|
|
|
|
|
|
|
|
To use mozprofile as an API you can import
|
|
|
|
[mozprofile.profile](https://github.com/mozilla/mozbase/tree/master/mozprofile/mozprofile/profile.py)
|
|
|
|
and/or the
|
2011-12-23 09:46:37 -08:00
|
|
|
[AddonManager](https://github.com/mozilla/mozbase/tree/master/mozprofile/mozprofile/addons.py).
|
2011-11-29 08:43:16 -08:00
|
|
|
|
|
|
|
`mozprofile.profile` features a generic `Profile` class. In addition,
|
|
|
|
subclasses `FirefoxProfile` and `ThundebirdProfile` are available
|
|
|
|
with preset preferences for those applications.
|
|
|
|
|
2011-12-23 09:46:37 -08:00
|
|
|
`mozprofile.profile:Profile`:
|
|
|
|
|
|
|
|
def __init__(self,
|
|
|
|
profile=None, # Path to the profile
|
|
|
|
addons=None, # String of one or list of addons to install
|
|
|
|
addon_manifests=None, # Manifest for addons, see http://ahal.ca/blog/2011/bulk-installing-fx-addons/
|
|
|
|
preferences=None, # Dictionary or class of preferences
|
|
|
|
locations=None, # locations to proxy
|
|
|
|
proxy=False, # setup a proxy
|
|
|
|
restore=True # If true remove all installed addons preferences when cleaning up
|
|
|
|
):
|
|
|
|
|
|
|
|
def reset(self):
|
|
|
|
"""reset the profile to the beginning state"""
|
|
|
|
|
|
|
|
def set_preferences(self, preferences, filename='user.js'):
|
|
|
|
"""Adds preferences dict to profile preferences"""
|
|
|
|
|
|
|
|
def clean_preferences(self):
|
|
|
|
"""Removed preferences added by mozrunner."""
|
|
|
|
|
|
|
|
def cleanup(self):
|
|
|
|
"""Cleanup operations for the profile."""
|
|
|
|
|
|
|
|
|
|
|
|
`mozprofile.addons:AddonManager`:
|
|
|
|
|
|
|
|
def __init__(self, profile):
|
|
|
|
"""profile - the path to the profile for which we install addons"""
|
|
|
|
|
|
|
|
def install_addons(self, addons=None, manifests=None):
|
|
|
|
"""
|
|
|
|
Installs all types of addons
|
|
|
|
addons - a list of addon paths to install
|
|
|
|
manifest - a list of addon manifests to install
|
|
|
|
"""
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def get_amo_install_path(self, query):
|
|
|
|
"""
|
|
|
|
Return the addon xpi install path for the specified AMO query.
|
|
|
|
See: https://developer.mozilla.org/en/addons.mozilla.org_%28AMO%29_API_Developers%27_Guide/The_generic_AMO_API
|
|
|
|
for query documentation.
|
|
|
|
"""
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def addon_details(cls, addon_path):
|
|
|
|
"""
|
|
|
|
returns a dictionary of details about the addon
|
|
|
|
- addon_path : path to the addon directory
|
|
|
|
Returns:
|
|
|
|
{'id': u'rainbow@colors.org', # id of the addon
|
|
|
|
'version': u'1.4', # version of the addon
|
|
|
|
'name': u'Rainbow', # name of the addon
|
|
|
|
'unpack': False } # whether to unpack the addon
|
|
|
|
"""
|
|
|
|
|
|
|
|
def clean_addons(self):
|
|
|
|
"""Cleans up addons in the profile."""
|
|
|
|
|
2011-11-29 08:43:16 -08:00
|
|
|
|
|
|
|
# Installing Addons
|
|
|
|
|
|
|
|
Addons may be installed individually or from a manifest.
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
from mozprofile import FirefoxProfile
|
|
|
|
|
|
|
|
# create new profile to pass to mozmill/mozrunner
|
|
|
|
profile = FirefoxProfile(addons=["adblock.xpi"])
|
|
|
|
|
|
|
|
|
|
|
|
# Setting Preferences
|
|
|
|
|
|
|
|
Preferences can be set in several ways:
|
|
|
|
|
|
|
|
- using the API: You can pass preferences in to the Profile class's
|
|
|
|
constructor: `obj = FirefoxProfile(preferences=[("accessibility.typeaheadfind.flashBar", 0)])`
|
|
|
|
- using a JSON blob file: `mozprofile --preferences myprefs.json`
|
|
|
|
- using a `.ini` file: `mozprofile --preferences myprefs.ini`
|
|
|
|
- via the command line: `mozprofile --pref key:value --pref key:value [...]`
|
|
|
|
|
|
|
|
When setting preferences from an `.ini` file or the `--pref` switch,
|
|
|
|
the value will be interpolated as an integer or a boolean
|
|
|
|
(`true`/`false`) if possible.
|
|
|
|
|
|
|
|
# Setting Permissions
|
|
|
|
|
|
|
|
mozprofile also takes care of adding permissions to the profile.
|
|
|
|
See https://github.com/mozilla/mozbase/blob/master/mozprofile/mozprofile/permissions.py
|
|
|
|
|
|
|
|
|
|
|
|
# Resources
|
|
|
|
|
|
|
|
Other Mozilla programs offer additional and overlapping functionality
|
|
|
|
for profiles. There is also substantive documentation on profiles and
|
|
|
|
their management.
|
|
|
|
|
|
|
|
- [ProfileManager](https://developer.mozilla.org/en/Profile_Manager) :
|
|
|
|
XULRunner application for managing profiles. Has a GUI and CLI.
|
|
|
|
- [python-profilemanager](http://k0s.org/mozilla/hg/profilemanager/) : python CLI interface similar to ProfileManager
|
|
|
|
- profile documentation : http://support.mozilla.com/en-US/kb/Profiles
|