• Skip to main content
  • Select language
  • Skip to search
mozilla
Mozilla Developer Network
  • Sign in
    • Persona
    • GitHub
  • Web Platform
    Technologies
    • HTML
    • CSS
    • JavaScript
    • Graphics
    • APIs / DOM
    • Apps
    • MathML
    References & Guides
    • Learn the Web
    • Tutorials
    • References
    • Developer Guides
    • Accessibility
    • ...more docs
  • Mozilla Docs
    • Add-ons
    • Firefox
    • Firefox Marketplace
    • Firefox OS
    • Persona
  • Developer Tools
  • Feedback
    • Get Firefox help
    • Get web development help
    • Join the MDN community
    • Report a content problem
    • Report a bug
  •  
Add-ons
    • No translations exist for this article.
    • Add a translation
  • Edit
  • Advanced
    • History
    • Print this article
  1. MDN
  2. Mozilla
  3. Add-ons
  4. Add-on SDK
  5. High-Level APIs
  6. system
Your Search Results

    system

    In This Article
    1. Usage
      1. Querying Your Environment
      2. Quit the host application
    2. Globals
      1. Functions
        1. exit(code)
        2. pathFor(id)
      2. Properties
        1. env
        2. platform
        3. architecture
        4. compiler
        5. build
        6. id
        7. name
        8. version
        9. platformVersion
        10. vendor

    This article needs a technical review. How you can help.

    Unstable

    Query the add-on's environment and access arguments passed to it.

    Usage

    Querying Your Environment

    Using the system module you can access environment variables (such as PATH), find out which operating system your add-on is running on and get information about the host application (for example, Firefox or Fennec), such as its version.

    var system = require("sdk/system");
    // PATH environment variable
    console.log(system.env.PATH);
    // operating system
    console.log("platform = " + system.platform);
    // processor architecture
    console.log("architecture = " + system.architecture);
    // compiler used to build host application
    console.log("compiler = " + system.compiler);
    // host application build identifier
    console.log("build = " + system.build);
    // host application UUID
    console.log("id = " + system.id);
    // host application name
    console.log("name = " + system.name);
    // host application version
    console.log("version = " + system.version);
    // host application vendor
    console.log("vendor = " + system.vendor);
    // host application profile directory
    console.log("profile directory = " + system.pathFor("ProfD"));

    Quit the host application

    To quit the host application, use the exit() function.

    var system = require("sdk/system");
    system.exit();

    Globals

    Functions

    exit(code)

    Quits the host application with the specified code. If code is omitted, exit() uses the success code 0. To exit with failure use 1.

    var system = require("sdk/system");
    system.exit();
    Parameters

    code : integer
    To exit with failure, set this to 1. To exit with success, omit this argument.

    pathFor(id)

    Firefox enables you to get the path to certain "special" directories, such as the desktop or the profile directory. This function exposes that functionality to add-on authors.

    For the full list of "special" directories and their IDs, see "Getting_files in special directories".

    For example:

    // get Firefox profile path
    var profilePath = require('sdk/system').pathFor('ProfD');
    // get OS temp files directory (/tmp)
    var temps = require('sdk/system').pathFor('TmpD');
    // get OS desktop path for an active user (~/Desktop on linux
    // or C:\Documents and Settings\username\Desktop on windows).
    var desktopPath = require('sdk/system').pathFor('Desk');
    Parameters

    id : String
    The ID of the special directory.

    Returns

    String : The path to the directory.

    Properties

    env

    This object provides access to environment variables.

    You can get the value of an environment variable by accessing the property with that name:

    var system = require("sdk/system");
    console.log(system.env.PATH);

    You can test whether a variable exists by checking whether a property with that name exists:

    var system = require("sdk/system");
    if ('PATH' in system.env) {
      console.log("PATH is set");
    }

    You can set a variable by setting the property:

    var system = require("sdk/system");
    system.env.FOO = "bar";
    console.log(system.env.FOO);

    You can unset a variable by deleting the property:

    var system = require("sdk/system");
    delete system.env.FOO;

    You can't enumerate environment variables.

    platform

    The type of operating system you're running on. This will be one of the values listed as OS_TARGET, converted to lower case.

    var system = require("sdk/system");
    console.log("platform = " + system.platform);

    architecture

    The type of processor architecture you're running on. This will be one of: "arm"``,"ia32", or"x64"`.

    var system = require("sdk/system");
    console.log("architecture = " + system.architecture);

    compiler

    The type of compiler used to build the host application. For example: "msvc", "n32", "gcc2", "gcc3", "sunc", "ibmc"

    var system = require("sdk/system");
    console.log("compiler = " + system.compiler);

    build

    An identifier for the specific build, derived from the build date. This is useful if you're trying to target individual nightly builds. See nsIXULAppInfo's appBuildID.

    var system = require("sdk/system");
    console.log("build = " + system.build);

    id

    The UUID for the host application. For example, "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" for Firefox. This has traditionally been in the form "{AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE}" but for some applications it may be in the form "appname@vendor.tld".

    See nsIXULAppInfo's ID.

    var system = require("sdk/system");
    console.log("id = " + system.id);

    name

    The human-readable name for the host application. For example, "Firefox".

    var system = require("sdk/system");
    console.log("name = " + system.name);

    version

    The version of the host application.

    See nsIXULAppInfo's version.

    var system = require("sdk/system");
    console.log("version = " + system.version);

    platformVersion

    The version of XULRunner that underlies the host application.

    See nsIXULAppInfo's platformVersion.

    var system = require("sdk/system");
    console.log("XULRunner version = " + system.platformVersion);

    vendor

    The name of the host application's vendor, for example: "Mozilla".

    var system = require("sdk/system");
    console.log("vendor = " + system.vendor);
    Share:
    • Twitter
    • Facebook
    • Google+

    Document Tags and Contributors

    Tags: 
    • Add-on SDK
     Contributors to this page: snyderp, wbamberg
     Last updated by: snyderp, Jan 20, 2016, 2:40:19 AM
    See also
    1. WebExtensions
    2. Getting started
      1. Prerequisites
      2. Anatomy of a WebExtension
      3. Packaging and Installation
      4. Walkthrough
      5. Examples
    3. Guides
      1. Content scripts
      2. Porting from Google Chrome
      3. Match patterns
      4. Debugging
      5. Chrome incompatibilities
    4. JavaScript APIs
      1. alarms
      2. bookmarks
      3. browserAction
      4. contextMenus
      5. cookies
      6. events
      7. extension
      8. extensionTypes
      9. i18n
      10. idle
      11. notifications
      12. pageAction
      13. runtime
      14. storage
      15. tabs
      16. webNavigation
      17. webRequest
      18. windows
    5. Manifest keys
      1. applications
      2. background
      3. browser_action
      4. content_scripts
      5. default_locale
      6. description
      7. icons
      8. manifest_version
      9. name
      10. page action
      11. permissions
      12. version
      13. web_accessible_resources
    6. Add-on SDK
    7. Getting started
      1. Installation
      2. Getting started
      3. Troubleshooting
    8. High-Level APIs
      1. addon-page
      2. base64
      3. clipboard
      4. context-menu
      5. hotkeys
      6. indexed-db
      7. l10n
      8. notifications
      9. page-mod
      10. page-worker
      11. panel
      12. passwords
      13. private-browsing
      14. querystring
      15. request
      16. selection
      17. self
      18. simple-prefs
      19. simple-storage
      20. system
      21. tabs
      22. timers
      23. ui
      24. url
      25. widget
      26. windows
    9. Low-Level APIs
      1. /loader
      2. chrome
      3. console/plain-text
      4. console/traceback
      5. content/content
      6. content/loader
      7. content/mod
      8. content/symbiont
      9. content/worker
      10. core/heritage
      11. core/namespace
      12. core/promise
      13. dev/panel
      14. event/core
      15. event/target
      16. frame/hidden-frame
      17. frame/utils
      18. fs/path
      19. io/byte-streams
      20. io/file
      21. io/text-streams
      22. lang/functional
      23. lang/type
      24. loader/cuddlefish
      25. loader/sandbox
      26. net/url
      27. net/xhr
      28. places/bookmarks
      29. places/favicon
      30. places/history
      31. platform/xpcom
      32. preferences/event-target
      33. preferences/service
      34. remote/child
      35. remote/parent
      36. stylesheet/style
      37. stylesheet/utils
      38. system/child_process
      39. system/environment
      40. system/events
      41. system/runtime
      42. system/unload
      43. system/xul-app
      44. tabs/utils
      45. test/assert
      46. test/harness
      47. test/httpd
      48. test/runner
      49. test/utils
      50. ui/button/action
      51. ui/button/toggle
      52. ui/frame
      53. ui/id
      54. ui/sidebar
      55. ui/toolbar
      56. util/array
      57. util/collection
      58. util/deprecate
      59. util/list
      60. util/match-pattern
      61. util/object
      62. util/uuid
      63. window/utils
    10. Firefox for Android
    11. Getting started
      1. Walkthrough
      2. Debugging
      3. Code snippets
    12. APIs
      1. Accounts.jsm
      2. BrowserApp
      3. HelperApps.jsm
      4. Home.jsm
      5. HomeProvider.jsm
      6. JavaAddonManager.jsm
      7. NativeWindow
      8. Notifications.jsm
      9. PageActions.jsm
      10. Prompt.jsm
      11. Snackbars.jsm
      12. Sound.jsm
      13. Tab
    13. Legacy
    14. Restartless extensions
      1. Overview
    15. Overlay extensions
      1. Overview
    16. Themes
    17. Lightweight themes
      1. Overview
    18. Complete themes
      1. Overview
    19. Publishing add-ons
    20. Guides
      1. Signing and distribution overview
      2. Submit an add-on
      3. Review policies
      4. Developer agreement
      5. Featured add-ons
      6. Contact addons.mozilla.org
    21. Community and support
    22. Channels
      1. Add-ons blog
      2. Add-on forums
      3. Stack Overflow
      4. Development newsgroup
      5. IRC Channel

    © 2005-2016 Mozilla Developer Network and individual contributors.

    Content is available under these licenses.

    • About MDN
    • Terms
    • Privacy
    • Cookies
    • Contribute to the code