Hacker's guide to WebKit/GTK+
Quick links
- Project web site: http://webkitgtk.org/
- How to start hacking on WebKitGTK+
- Build instructions
- Running tests
- Buildbot waterfall
- Guidelines for adding new API
Code layout
The GTK+ port targets the cross-platform GLib and GTK+ APIs as well as related libraries. This means that it can be built against any of the windowing systems supported by GTK+ and Cairo without modification -- those tested so far are X11 and DirectFB. Windows should work too.
Code specific to any one backend should be conditionally compiled only when that windowing system is available. One examples of this kind of feature might be direct X11/Win32 use for plugin support. This can be done at configure time or with a switch passed to the build system, or even just using the definitions provided by the gdk headers.
Main port components
- WTF/wtf/gobject: GObject helpers for WTF
- WTF/wtf/gtk: GTK+ helpers for WTF
- WebCore/platform/gtk: GTK+-specific theme rendering, events, clipboard access, etc
- WebCore/platform/graphics/gtk and WebCore/platform/graphics/cairo: Cairo and GTK+-specific graphics context, images, fonts, etc
- WebCore/page/gtk: GTK+-specific code for the "page" subdirectory
- WebCore/platform/network/soup: The libsoup networking layer
- WebKit/gtk: WebKit GTK+
- webkit Public API implementation and headers files
- WebCoreSupport: GTK+-specific glue layer between WebKit and WebCore
- docs: API documentation
- tests: API functional and unit tests
- po: String localization
- Tools/GtkLauncher: Barebones example application
Shared code modules
While the GTK+ port is the primary consumer of these backends, we aim to keep them portable, avoiding even ifdef'd sections specific to the Gtk+ port:
- WTF/wtf/gobject
- WebCore/platform/network/soup
- WebCore/platform/graphics/cairo
- WebCore/platform/graphics/gstreamer
Bundled code modules
Bundled code is code checked into WebKit SVN that is developed and maintained primarily in some other source code repository.
- Don't change the coding style of bundled code to match the WebKit guidelines
- Avoid making needless changes to bundled code
- Don't change the copyright headers without permission
- Contribute modifications back to the originating project promptly where relevant
These files are bundled from other projects:
- Xt Plugin support (from Mozilla)
- WebCore/plugins/gtk: gtk2xtbin.c, gtk2xtbin.h, xembed.h