[[PageOutline]] = Hacker's guide to WebKit/GTK+ = == Quick links == * Project web site: [http://webkitgtk.org/] * [wiki:StartHacking How to start hacking on WebKitGTK+] * [wiki:BuildingGtk Build instructions] * [wiki:WebKitGtkLayoutTests Running tests] * [http://build.webkit.org/waterfall Buildbot waterfall] * [wiki:"WebKitGTK/AddingNewWebKit2API" 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 === * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WTF/wtf/gobject WTF//wtf/gobject]: GObject helpers for WTF * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WTF/wtf/gtk WTF/wtf/gtk]: GTK+ helpers for WTF * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebCore/platform/gtk WebCore/platform/gtk]: GTK+-specific theme rendering, events, clipboard access, etc * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebCore/platform/graphics/gtk WebCore/platform/graphics/gtk] and [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebCore/platform/graphics/cairo WebCore/platform/graphics/cairo]: Cairo and GTK+-specific graphics context, images, fonts, etc * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebCore/page/gtk WebCore/page/gtk]: GTK+-specific code for the "page" subdirectory * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebCore/platform/network/soup WebCore/platform/network/soup]: The libsoup networking layer * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebKit/gtk WebKit/gtk]: WebKit GTK+ * [http://trac.webkit.org/browser/trunk/Source/WebKit/gtk/webkit webkit] Public API implementation and headers files * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebKit/gtk/WebCoreSupport WebCoreSupport]: GTK+-specific glue layer between WebKit and WebCore * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebKit/gtk/docs docs]: API documentation * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebKit/gtk/tests tests]: API functional and unit tests * [http://trac.webkit.org/projects/webkit/browser/trunk/WebKit/gtk/po po]: String localization * [http://trac.webkit.org/projects/webkit/browser/trunk/Tools/GtkLauncher 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: * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WTF/wtf/gobject WTF/wtf/gobject] * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebCore/platform/network/soup WebCore/platform/network/soup] * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebCore/platform/graphics/cairo WebCore/platform/graphics/cairo] * [http://trac.webkit.org/projects/webkit/browser/trunk/Source/WebCore/platform/graphics/gstreamer 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) * [http://trac.webkit.org/browser/trunk/Source/WebCore/plugins/gtk WebCore/plugins/gtk]: gtk2xtbin.c, gtk2xtbin.h, xembed.h