Screenshots first because we all love screenshots:
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?).
Current code is ugly (really). It works on Linux, Windows and Mac. The browser supports basic features (tabs, navigation, history, ssl, devtools, search, zoom, …).
The project is split in two modules: the app and the runtime (HTMLRunner) (see below for details).
Setup
- Clone this repository somewhere on your computer using
git clone --recursive https://github.com/paulrouget/firefox.html
or the github application; - 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
How to change code
- Change code in the
firefox.html
directory - Press
Ctrl/Cmd-Shift-R
to run the new code (doesn't work on Windows. See issue 12) - Submit PR :)
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).