Skip to content
tinywrkb edited this page Jun 24, 2022 · 2 revisions

QtWebEngine BaseApp

This base application provides Qt's WebEngine module, which is missing from the KDE runtime, and makes it possible to quickly and easily package applications the depend on this module.

If you just found this, then you might also be interested in the PyQt base application.

Features

Included libraries

  • QtWebEngine
  • QtWebView
  • krb5: Just the minimal needed for Kerberos authentication with Chromium
  • libevent
  • minizip
  • pciutils: libpci without utilities
  • re2
  • snappy

Dictionaries

QtWebEngine dictionaries that are built from the Hunspell dictionaries are included in this base application.
These dictionaries will be packaged in the Flatpak applications's locale extensions, and that's as long as the maintainer didn't disable locale extensions with the separate-locales property.

Applications are expected to set the environment variable QTWEBENGINE_DICTIONARIES_PATH to /app/qtwebengine_dictionaries.

Sandboxing support (Qt6 only)

Support for spawning sandboxed Flatpak instances is included, and will be used by QtWebEngine to sandbox Chromium's render processes.

This feature requires a D-Bus session bus socket in the Flatpak sandbox, but it doesn't need unfiltered access to the session bus, and will work fine without any extra xdg-dbus-proxy permissions.

Important to note that without an working session bus socket Chromium/QtWebEngine process will fail to start.

During packaging of a Flatpak application there is no session bus socket in the sandbox, and if build process need to run QtWebEngine, then the build process will fail.
The workaround is to disable sandboxing like this:

build-options:
  env:
    QTWEBENGINE_DISABLE_SANDBOX: '1'

    # Or alternatively
    QTWEBENGINE_CHROMIUM_FLAGS: --no-sandbox

Flatpak sandboxing support for Chromium was developed by Ryan Gonzalez for Chromium Flatpak applications.

Example QtWebEngine Application

app-id: org.kde.QtWebEngine.SampleApplication
runtime: org.kde.Platform
runtime-version: '6.3'
sdk: org.kde.Sdk
base: io.qt.qtwebengine.BaseApp
base-version: '6.3'
command: qtwebengine-sample-application
finish-args:
  - --device=dri
  - --env=QTWEBENGINEPROCESS_PATH=/app/bin/QtWebEngineProcess
  - --share=ipc
  - --share=network
  - --socket=fallback-x11
  - --socket=pulse
  - --socket=wayland
cleanup-commands:
  - /app/cleanup-BaseApp.sh
modules:
  - name: sample-application
  ...