Screencast: https://www.youtube.com/watch?v=IBzrCmGVDkA
Firefox.html is an experiment, a proof of concept: trying to re-implement the Firefox UI in HTML, as an app (à la B2G).
Rationale: We are working hard on making HTML fast and rich enough to build a whole operating system (Firefox OS) and a browser (Firefox OS' browser is built in HTML). Firefox Desktop is built in a different way (XUL). With a UI in HTML leveraging the Browser API, we could drop XUL and close the gap between B2G and Firefox Desktop. And eventually be able to render Firefox Desktop with Servo (which will never support XUL). And maybe, one day, host the Firefox UI online (trusted app?).
Setup
- Clone this repository somewhere on your computer using
git clone --recursive https://github.com/paulrouget/firefox.html
- Download HTMLRunner runtime: http://people.mozilla.org/~prouget/htmlrunner/ (package is named
firefox-XX.XX
); - Run HTMLRunner runtime (binary name is
firefox
); - HTMLRunner will ask (only once) the location of the
firefox.html
directory you cloned in step 1; - You should now see the browser running.
Note: If you have cloned without --recursive
, you may find out that lib/require.js
is empty. To fix this:
git submodule update --init
Contribute
See HACKING.md
.
The App
Firefox.html is a HTML app (like any B2G app). It is based on the
Browser API
and works the same way Gaia's browser and system apps work.
Even though it includes tags like vbox, hbox, spacer, …, it's all HTML
(see layout.css
to see how they mimic xul layout).
Current priority is to re-implement the basic features of Firefox Desktop to make Firefox.html a usable browser, and understand what's missing at the platform level for a perfect integration to the OS.
The Runtime
Firefox.html requires a runtime: a special build of Gecko we call "htmlrunner".
The runtime code is based on Firefox.
See the htmlrunner branch
branch on my gecko-dev
repository.
It uses a xul:window
that loads the Firefox.html app into an iframe. The
xul:window
is still required to build a native window (draw in title bar,
support opening animations, native colors, …). Eventually, I want to kill
this window and bring these native features to HTML. This window is nothing
but a window with window controls (close, minimize, maximize).