QtWebKit and Webkit2GTK - sgml/signature GitHub Wiki

Environment Variables

GNOME Web / WebKitGTK Environment Variables

  • WEBKIT_DISABLE_DMABUF_RENDERER
    Disables the DMA-BUF renderer path (GPU accelerated rendering). Forces software rendering.

  • WEBKIT_DISABLE_COMPOSITING_MODE
    Turns off accelerated compositing. Useful if GPU drivers cause glitches.

  • WEBKIT_DISABLE_ACCELERATED_2D_CANVAS
    Disables GPU acceleration for <canvas> rendering. Falls back to CPU.

  • WEBKIT_DISABLE_WEBGL
    Disables WebGL entirely. Prevents GPU usage for 3D contexts.

  • WEBKIT_DISABLE_JIT
    Disables the JavaScript JIT compiler. Slower, but sometimes needed for debugging or security.

  • WEBKIT_FORCE_SANDBOX
    Forces WebKitGTK to run with its sandbox enabled, even if disabled by default.

  • WEBKIT_DISABLE_SANDBOX
    Disables the WebKitGTK sandbox (not recommended for security reasons).

  • WEBKIT_DISABLE_X11_ACCELERATION
    Disables X11 hardware acceleration paths (useful if running under X11 with buggy drivers).

  • WEBKIT_DISABLE_WAYLAND_ACCELERATION
    Disables Wayland hardware acceleration paths.

  • WEBKIT_DISABLE_VIDEO_ACCELERATION
    Disables VA-API video decoding acceleration.

Desktop v Laptop

Physical Differences Affecting WebKitGTK (Desktop vs Laptop)

Factor Desktop Impact Laptop Impact
GPU availability Often discrete GPUs with strong VA-API/WebGL support, enabling smoother hardware acceleration. Typically integrated GPUs (Intel/AMD), weaker or inconsistent VA-API support.
Driver maturity Desktop GPUs (AMD/NVIDIA) usually have more mature drivers, improving accelerated compositing and video decoding. Laptop GPUs may lag in driver updates, especially with hybrid graphics setups.
Thermal constraints Better cooling, so sustained GPU acceleration (WebGL, video decode) is stable. Thermal throttling can cause fallback to software rendering under heavy load.
Power management Runs at full power, acceleration can be used aggressively. Battery-saving modes may disable VA-API or GPU paths to conserve energy.
Display outputs External monitors with higher resolutions (4K, ultrawide) stress framebuffers. Built-in displays are lower resolution, but docking can stress scaling.
Hybrid graphics Rare on desktops. Common (Intel + NVIDIA/AMD), WebKitGTK may struggle with GPU selection.
Input devices Mouse/keyboard precision affects UI smoothness. Touchpads/touchscreens require optimized gesture handling and kinetic scrolling.

Key Insight

  • Desktops: WebKitGTK benefits from stronger GPUs, stable drivers, and cooling → hardware acceleration is more reliable.
  • Laptops: WebKitGTK faces constraints from integrated graphics, thermal throttling, and power management → acceleration may be reduced or disabled.

Practical Effects

  • Video playback: smoother on desktops, more likely to stutter on laptops if VA-API isn’t supported.
  • WebGL demos: desktops handle complex 3D scenes better; laptops may fall back to software.
  • Battery vs performance trade-offs: laptops may disable acceleration to conserve energy, desktops run full throttle.

Implementations

[[browser]]
name = "GNOME Web (Epiphany)"
package = "epiphany (WebKitGTK)"
engine = "WebKitGTK / WebKit2"
status = "active"
github = "https://github.com/GNOME/epiphany"
linux_mint_compat = "high"
notes = "GNOME‑integrated browser; primary WebKit implementation on Linux"

[[browser]]
name = "surf (suckless)"
package = "surf (WebKit2GTK)"
engine = "WebKit2GTK"
status = "active"
github = "https://github.com/mrdotx/surf"
linux_mint_compat = "medium"
notes = "Minimal wrapper around WebKit2GTK"

[[browser]]
name = "Midori"
package = "midori (community packages)"
engine = "WebKitGTK"
status = "active"
github = "https://github.com/goastian/midori-desktop"
linux_mint_compat = "medium"
notes = "Lightweight browser; multiple maintained forks"

# QtWebKit-compatible / Qt-focused projects (active; QtWebKit support is legacy, optional, or conditional)
[[browser]]
name = "Otter Browser"
package = "otter-browser"
engine = "Qt (QtWebEngine primary; optional/legacy QtWebKit support in some builds)"
status = "active"
github = "https://github.com/OtterBrowser/otter-browser"
linux_mint_compat = "medium"
notes = "Project aims to recreate classic Opera UI; historically supported QtWebKit and can be built with legacy QtWebKit on some platforms"

[[browser]]
name = "Falkon"
package = "falkon (Qt-based)"
engine = "QtWebEngine (originated from QtWebKit/QupZilla lineage); legacy QtWebKit support historically"
status = "active"
github = "https://github.com/KDE/falkon"
linux_mint_compat = "high"
notes = "Continuation of QupZilla; currently uses QtWebEngine but traces to QtWebKit era; recommended on Mint as a Qt browser option"

Migration from MFC

HexoSys

KDAB

Qt Company (QtWinMigrate)

  • QtWinMigrate enables embedding Qt widgets in MFC apps
  • Supports gradual migration and hybrid UI strategies
  • QtWinMigrate API Docs

Webkit GTK

WebkitJavaScriptBridge

⚠️ **GitHub.com Fallback** ⚠️