I am still playing with Firebird as I type...I played around all night and figured out alot about XUL and quite a few of my misgivings were evaporated.
My experience with Firebird / XUL goes like this so far...
1. I thought XUL was inherently sluggish due to poor design and layout. I was mistaken in that raw XUL (i.e., without all the hundreds of xbl bindings and without 500+ style rules) is very quick given a decent machine.
Case in point (this renders fine in KM, BTW), enter this in the URL bar:
javascript:document.write('<a href="javascript:window.open(\'
http://www.infodraft.com/~faser/mab/content/mab.xul\',\'MAB\', \'chrome,centerscreen,resizable\');">Mozilla Amazon Browser 0.9.9.0</a>'); document.close();
After the page loads and is cached locally, try out all the widgets and such and notice the access and response speed and the repaint delay, &c. Much quicker than I anticipated. I also found out that Gecko keeps an XUL cache of precompiled code so that it loads much faster than it used to on a "warm" start.
2. I thought "chrome"s were some kind of archaic labrynth. They aren't. they are really simple actually. A complete overview of the chrome package structure is here:
http://books.mozdev.org/html/mozilla-chp-2-sect-5.html
Plus
http://lxr.mozilla.org has an expression search that is indespensible in finding out the locations of different functions and definitions and such.
3. I was able to implement all my KM macros I've tried so far (signature, new tab from prompt, new win f/ prompt, Neptune plugin, dictionary lookup, selected text as link with corresponding context menu item), as javascript functions and XUL elements from a file attached to the main window. I also created a function to hide and show the search bar (plus select it or the main location bar, alternately, whether it is showing or hiding) and bound it to a key definition for the window (Ctrl+Shift+S).
4. I added a couple search engine plugins (rdf definitions) for use in the search bar.
5. I hid the close tab button on the right side of the tabbrowser box with a single attribute in tabbrowser.xbl; I installed the tabextensions extension so I don't need one over there taking up space.
6. I turned off the stupid checking if the skin version is new enough (which prevents it reverting back to the old skin correctly 'cause of some bug or other). It changes back to the default skin not matter what now, so I can always forcibly uninstall other skins now and won't be left with a text-only skin.
7. I added key definitions and functions for showing and hiding, respectively, or altogether, the menu / toolbar / locationbar and &| or the 'tabstrip' -- "real" fullscreen, or with just tabs showing.
8. I created a "Quick Notes" Firebird sidebar panel with the ability to save notes to the prefs file and load them back (once I figure out JSLib and XPCOM then I can save to and load from an external file
). I'm using it now to write this.
9. Added a pref and elements to the main window for having the sidebar on the right or left side of the content window and modified the browser startup function so that it reads the pref and enables the corresponding element for which side it should be on. I'm still figuring out exactly how it should appear in the prefs window, probably on the navigator page.
All of this without compiling, without debuging and tracing, just by using stuff I asically already know (javascript and XUL (which is basically UI oriented HTML)). Because of this...*sigh* ...you were all wondering when then other shoe was going to fall off...I might as well let it drop... Firebird has won a convert in me.
I'm still going to host my builds and KM pages and such, but I will not be actively building or working on KM anymore. I'm going to dedicate my time to making my "roll-your-own" version of Firebird. I'll probably open a mozdev project and release a "custom chrome" package with all the afforementioned stuff and more (e.g., built in sidebar dictionary panel that will take the HTML stream of a page and fill in the results panel with nice uniform colors, and do cross-dictionary seaches).
If anyone needs me to build KM -- i.e., they have patches, they can email me or post a note on the forums, which I am still going to be visiting to keep up on KM's progress. Thanks for bearing with me everyone, thanks devs for an awsome browsing experience!
KM is the browser you control for the native UI, I grant that much, and the macroing system is awsome...but with a bit of time and reading (where have we heard that before? makes you think, huh?
), Firebird is by far the most flexible and extensive, because the whole innerds of Gecko are transparent to the all-powerful javascript saddle!!! And it is mising a good portion of the bloat, with a great portion of the speed.
That is my conversion story...it "happened overnight" as they say, lol...
Shelumi`El
Jordan
S.D.G