|Paradigm||Declarative (markup language)|
XUL ( ZOOL), which stands for XML User Interface Language, is a user interface markup language developed by Mozilla. XUL is implemented as an XML dialect, enabling graphical user interfaces to be written in a similar manner to web pages. Such applications must be created using the Mozilla codebase (or a fork of it); the most prominent example is the Firefox web browser.
In recent years, Mozilla has been reducing the usage of XUL in Firefox. 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. Several forks of Firefox, such as Pale Moon,Basilisk, and Waterfox, retain support for XUL add-ons.
XUL was devised at Netscape in 1997 as part of the development effort that eventually became the Mozilla codebase. 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, 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. This was a key step in the organization's long-term goal of reducing XUL usage in Firefox and replacing it with HTML5 alternatives. However, the UXP fork of the codebase maintains the traditional XUL capabilities.
Application programmers need to define a XUL interface as three discrete sets of components:
XUL defines a wide range of elements, which roughly belong to the following types:
The default behavior of XUL widgets can be altered with XBL bindings.
This example shows three buttons stacked on top of each other in a vertical box container:
<?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>
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". 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.