XUL
XUL (/ˈzuːl/ ZOOL), which stands for XML User Interface Language, is a user interface markup language developed by Mozilla. XUL is an XML dialect for writing graphical user interfaces, enabling developers to write user interface elements in a manner similar to web pages.
Paradigm | Declarative (markup language) |
---|---|
Developer | Mozilla Foundation |
Implementation language | C++ |
Platform | Gecko |
OS | Cross-platform |
License | MPL |
Filename extensions | .xul MIME type: application/vnd.mozilla.xul+xml |
Website | Official documentation |
Major implementations | |
Mozilla | |
Influenced by | |
HTML, XML |
XUL applications rely on the Mozilla codebase (or a fork of it); the most prominent example is the Firefox web browser. However, in recent years, Mozilla has been reducing the usage of XUL in Firefox.[1][2] The most notable example is the removal of add-on customization. Firefox originally permitted add-ons to extensively alter its user interface via custom XUL code, but this capability was removed in Firefox 57 and replaced with the less-permissive WebExtensions API.[3][4] Several forks of Firefox, such as Pale Moon,[5] Basilisk,[6] and Waterfox,[7] retain support for XUL add-ons.
History
XUL was devised at Netscape in 1997 as part of the development effort that eventually became the Mozilla codebase.[8] It never gained much traction outside of Mozilla or its forks. In the early 2000s there was some interest in using XUL by other parties, including Amazon,[9] but that dried up with the advent of HTML5.
With the release of Firefox 57 in 2017, Mozilla removed support for legacy add-ons, including the use of custom XUL code.[3][4] This was a key step in the organization's long-term goal of reducing XUL usage in Firefox and replacing it with HTML5 alternatives.[1][2] However, the UXP fork of the codebase maintains the traditional XUL capabilities.[10][11]
Usage
XUL can only be used with the Mozilla codebase (or a fork of it) because the Gecko engine does the XUL rendering.[12]
Application programmers need to define a XUL interface as three discrete sets of components:
- Content: the XUL document(s), whose elements define the layout of the user interface
- Skin: the CSS and image files, which define the appearance of an application
- Locale: the files containing user-visible strings for easy software localization
XUL defines a wide range of elements, which roughly belong to the following types:
- Top-level elements: window, page, dialog, wizard, etc.
- Widgets: label, button, text box, list box, combo box, radio button, check box, tree, menu, toolbar, group box, tab box, color-picker, spacer, splitter, etc.
- Box model: box, grid, stack, deck, etc.
- Events and scripts: script, command, key, broadcaster, observer, etc.
- Data source: template, rule, etc.
- Others: overlay, iframe, browser, editor, etc.
The default behavior of XUL widgets can be altered with XBL bindings.
Example
This example shows three buttons stacked on top of each other in a vertical box container:[13]
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="vbox example" title="Example 3...."
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<layout>
<button id="yes1" label="Yes"/>
<button id="no1" label="No"/>
<button id="maybe1" label="Maybe"/>
</layout>
</window>
Ghostbusters reference
The villain of the 1984 film Ghostbusters was a deity called Zuul who possesses the character Dana Barrett and declares, "There is no Dana. There is only Zuul".[14] The creators of XUL, which is pronounced the same as Zuul, made the slogan "There is no data. There is only XUL!", part of which became the XML namespace.[15]
References
- "Life After XUL". Mozilla. Retrieved 28 November 2018.
- "Problems with XUL". mozilla.github.io. Retrieved 2019-06-07.
- Firefox 57 release notes
- Kev Needham (2015-08-21). "The Future of Developing Firefox Add-ons". blog.mozilla.org. Retrieved 2018-04-02.
- "Pale Moon future roadmap". Pale Moon. Retrieved 2018-04-02.
- "Pale Moon team releases first version of Basilisk browser". ghacks.net. 2017-11-17. Retrieved 2018-04-02.
- "Waterfox, Its Legacy and Looking to the Future". Waterfox blog. 2018-04-28. Retrieved 2018-06-20.
- Jorge O. Castro (2004-06-15). "Ars Technica sits down with Scott Collins from Mozilla.org". Ars Technica. Retrieved 2018-11-28.
- "Remote Application Development with Mozilla, Part 2: A Case Study of the Mozilla Amazon Browser (MAB)". Oreillynet. 2003-02-05.
- "UXP vs goanna".
- "There is only XUL". Retrieved 18 September 2018.
- "Gecko FAQ | MDN". developer.mozilla.org. Retrieved 2021-01-05.
- "The Box Model - Mozilla | MDN". web.archive.org. 2017-12-09. Retrieved 2021-01-05.
- Ghostbusters clip
- Mozilla XML Namespace