Development

Kite is written in Rust, with its interface in QML using Kirigami, on top of QtWebEngine. It's modelled on Falkon and reads Falkon's bookmark and history formats.

Source code Issues Developer docs

Building

You need:

git clone https://github.com/n4n0GH/Kite.git
cd Kite
cargo build --release
./target/release/kite            # --profile NAME, --private

Running the tests

cargo test --workspace
node --test crates/kite-core/src/webext/js/*.test.js crates/kite/qml/*.test.js crates/kite/plugins/*/*.test.js

Building an AppImage

packaging/appimage/build-appimage.sh            # → dist/Kite-<version>-<arch>.AppImage
packaging/appimage/build-appimage.sh --no-build # bundle an existing target/release/kite

The script downloads linuxdeploy and its Qt plugin on first use, then asks whether to keep the result in dist/ or install it for your user.

How it's put together

crates/kite-core
Pure Rust, unit-tested, no Qt: history, bookmarks, sessions, search and address bar logic, site settings, downloads, content blocking, privacy features and the WebExtensions runtime.
crates/kite
The application: the QML interface and its bridge to QtWebEngine and Plasma.

The developer docs covers the architecture in detail, where each part of the interface is defined, and how to write native plugins.

Contributing