NAME
    XUL::App - Nifty XUL apps in a XUL::App

VERSION
    This document describes XUL::App 0.01 released on Jun 22, 2008.

SYNOPSIS
        $ xulapp app --name YSearchAll

        $ cd YSearchAll

        $ xulapp view --name Overlay --type overlay

        # Edit lib/YSearchAll/App.pm to add the following lines:
        package YSearchAll::App;
        our $VERSION = '0.01';

        use XUL::App::Schema;
        use XUL::App schema {
        +     xulfile 'overlay.xul' =>
        +         generated from 'YSearchAll::View::Overlay',
        +         includes qw( xulapp/jquery.js overlay.js ),
        +         overlays 'chrome://browser/content/browser.xul';
        +
            xpifile 'ysearchall.xpi' =>
                name is 'YSearchAll',

        # Add and edit js/ysearchall.js manually
        $ xulapp overlay -p dev11
        $ xulapp bundle .  # generate XPI ready for deployment

DESCRIPTION
    XUL::App is a nifty Firefox extension development framework based on
    Perl. It has a lot of parallels with Jifty.

    This framework has the following highlights:

    *   Jifty love on the Firefox extension development land.

    *   Building a realworld Firefox extension can be much easier than
        GreaseMonkey hacks.

    *   Use 100% Perl to specify XUL layout via Template::Declare, no XML
        pain.

    *   The resulting XPI file contains 0% Perl and could run everywhere
        (Win32, Mac, Linux, and etc). It's a compiler-style framework.

    Currently the module is in alpha stage and we're in severe lack of
    documentation. But you can get a lot of information from the slides that
    I used in the talk:

        http://agentzh.org/misc/slides/xulapp/xulapp.xul  (a JS-enabled Firefox is required to view these slides)

    If you're having problems in displaying the slides given above, please
    try out the PowerPoint (PPT) version below:

        http://agentzh.org/misc/slides/xulapp.ppt

    or the PDF version:

        http://agentzh.org/misc/slides/xulapp.pdf

CAVEATS
    *   Because XUL::App wites to your ~/.mozilla/firefox directory
        directly, it's always recommended to backup that directory to
        somewhere else to prevent unexpected corruption occurring to your
        Firefox profiles.

    *   After applying Firefox updates or using a new Firefox profile, it's
        required to restart Firefox one more time to load your extensions.
        So please don't fire bug report regarding that.

    *   Only Firefox 2.0.0.* and Firefox 3.0 on Linux has been tested
        against this framework. So you're warned when you're going to do
        XUL::App hacking on other platforms like Windows.

        (BTW, I'm very willing to apply patches for other platforms.)

SOURCE CONTROL
    You can always get the latest source of XUL::App from the following SVN
    repository:

        http://svn.openfoundry.org/xulapp/trunk/

    There's very little POD docs, please read README and the slides for
    details.

    I really need help in improving this module's docs, tests, and
    implementation. If you find this thing useful and feel like contributing
    to it, please write to me and get a commit bit! ;)

SAMPLES
    *   SearchAll is a real-world Firefox extension that is built upon
        XUL::App, which can serve as a big demo for the usage of the
        framework:

            L<http://svn.openfoundry.org/searchall/trunk/>

    *   ExportReader: A Firefox extension to dump entries from Google Reader
        to JSON:

            L<http://svn.openfoundry.org/xulapp/trunk/demo/ExportReader/>

    *   A helloworld sample extension is given in my XUL::App talk's slides:

            L<http://agentzh.org/misc/slides/xulapp.pdf>

INSTALLATION
        perl Makefile.PL
        make
        sudo make install

BUGS
    Sadly XUL::App does not run on Win32 yet. I've only tested it on Ubuntu
    Linux so far. If you have any problems or would love to help, please let
    me know ;)

SEE ALSO
    Jifty.

AUTHOR
    Agent Zhang <agentzh@yahoo.cn>

COPYRIGHT
    Copyright 2007 by Yahoo! China Inc. (http://cn.yahoo.com)

LICENSE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

