File Type Mode Size
.gitignore file 644 43
Config.cs file 644 10024
Makefile file 644 808
PluginManager.cs file 644 3422
README file 644 5579
SearchHandler.cs file 644 3585
SoupSettings.c file 644 572
WebThing file 755 305
WebThing.cs file 644 8209
WebThing.dll.config file 644 95
WebThingMain.cs file 644 227
WebThingPlugin.cs file 644 1532
WebThingView.cs file 644 363
plugins.conf file 644 89
plugins/ dir 0 0
searchplugins/ dir 0 0
README
WebThing - A modular webkit browser

I. A HISTORICAL TREATISE ON WEB BROWSERS

=====
  |
  |
===== N THE BEGINNING the Web was void and without form.  Then came
Mosaic, which was the first of the graphical web browsers.  Descended
from Mosaic was Mozilla, oft known as Netscape, and their heretical
offshoot Spyglass Mosaic.  Netscape grew in power to become the dominant
browser, but Microsoft used Spyglass to create Internet Explorer, which
later Netscape's thunder through underhanded means.  This would not be
the last of Netscape, though.

    The world entered a dark age as Internet Explorer's influence grew
throughout the land.  But in a far away corner of the world, the legacy
of Mozilla continued.  Dwarves toiled in the darkest caves re-tooling
Mozilla to challenge Internet Explorer, and it was through them that it
was reborn as Phoenix.  Er, Firebird.  Wait, no, Firefox.  Yes,
definetly Firefox.  As Firefox began to strike back, others emerged from
the shadows to help fight.

    From the brightly colored fields of KDE came KHTML, which was
transformed into WebKit by Apple's elves, and packaged into Safari by
Apple's turtlenecked humans.  From the wild north of Norway came Opera,
which had actually been around since 1996, but nobody noticed it was
there even though it was small and quick and generally better than
everything else at the time.  And from these a thousand fold have
spawned:  Chrome, Midori, Shiira, Camino, Arora, Epiphany, iCab,
K-Meleon, Galeon, and many, many others.


II. AN INFORMAL INTRODUCTION TO WEBTHING

=====
  |
  |
===== T IS FROM the WebKit line that WebThing descends.  It is inspired
largely by the Firefox add-on Vimperator, and the hyper-minimal WebKit
browser uzbl.  WebThing's strength is that it is highly modular -- parts
of WebThing can be swapped out for others, or removed entirely.
WebThing is a browser for tinkerers and hackers, for people who want to
be able to customize things to the limit, and for anyone who believes
they could do it better themselves.


III. ON THE PROCUREMENT, ASSEMBLAGE, AND EXECUTION OF WEBTHING

=====
  |
  |
  |  HE SOURCE FOR WebThing is currently only available from a git
repository.  If you're reading this, you can probably figure out how to
check out the code.

    There is currently no support for compile-time configuration or
installation.  I'm not a fan of automake, and the project's complexity
currently doesn't merit such finaglery.

    To compile WebThing, you will need:

* A C compiler (configuration of libsoup cannot yet be done from .NET)
* Mono 2.0+ (the adventurous may find that .NET works fine, too)
* GTK# 2.12 (though it may work with previous versions, I have not
  tested them)
* WebKit# built on a recent WebKit-Gtk (I used 1.1.8)
  WebKit requires a lot of things on its own -- you'll have a fun
  adventure getting it compiled, I'm sure.

    When you build WebKit#, you will have to copy webkit-sharp.dll into
the same directory as WebThing.  It does not seem to link properly
otherwise.  If anyone knows what's going on there, I'd be highly
appreciative of a fix.

    Once the dependencies are satisfied, type 'make', and some magic
should happen to produce a WebThingMain.exe with a host of dll files.
From there, you should be able to run the WebThing script and the
browser will launch.  The default set of plugins creates a Vim-like
browsing experience reminiscent of Vimperator (but not nearly as
complete), or uzbl (but slightly less incomplete).


IV. EXPLORING THE DARK DEPTHS OF WEBTHING

=====
  |
  |
  |  HE source is divided roughly into two sections, the WebThing core,
and plugins.  It is my intent to keep the core as minimal as possible,
implementing only the barest functionality.  The functionality that
makes up the user experience should be added into plugins.  Also,
plugins allow code to be separated into clean, easy-to-understand
chunks.  Clean separation of code was a failing of the uzbl project that
in large part inspired WebThing.

The core provides:

* A bare WebKit control
* Simple tab functionality through a GtkNotebook widget
* Option parsing
* Plugin loading
* Facilities for attaching widgets to points in the window

Here is the plugin set so far:

* DefaultPage
    Loads a page specified on the command line, or else a default page
* LoadProgress
    Places a small widget in the upper right corner that shows page
    loading progress
* FFNav
    Implements Firefox-like navigation keys (Alt-Left and Right,
    Backspace, Ctrl-T, Ctrl-Tab, and Ctrl-W)
* Vimish
    Implements Vim-like navigation keys (HJKL) and a command bar that
    allows opening URLs and configuring state


V. THE ARCHITECTURE OF PLUGINS, AND THEIR REQUIREMENTS

 /~\
|   |
|---|
|   | PLUGIN IS a subclass of WebThingPlugin, which defines two
functions that may be of interest to the developer:

* Init(WebThing wt) - Called when WebThing is starting up, and passes a
  WebThing instance to the plugin
* InitWebView(WebView wv) - Called when a new WebView is created, and
  passes a WebView instance to the plugin

The WebThing class contains everything that WebThing is.  Since the
details are still very much in flux, I won't bother describing it just
yet.  At this point I would recommend anyone against writing plugins
until the plugin API stabilizes.  Comments, suggestions, and criticisms
are welcome.


VI. MEANS BY WHICH THE AUTHOR MAY BE CONTACTED

|    |
|\  /|
| \/ |
|    | Y EMAIL ADDRESS is bytex64@bytex64.net.  I'm not yet ready to
accept general patches, but patches for fixing bugs are welcome.

    Have fun!

Clone: https://git.bytex64.net/WebThing.git