Skip to content

saucer/saucer

Repository files navigation


Build cross-platform desktop apps with C++ & Web Technologies


Documentation

The documentation can be found here.

Examples

Examples can be found here.

Getting started

Learn how to create your first saucer app here.


👽 Introduction

Saucer is a modern C++ webview library that allows you to build cross-platform desktop applications with ease.
It supports all three major desktop operating systems (Windows, Linux, MacOS) and has several backend implementations.

🛸 Features

  • 💻 Cross Platform

    Windows Linux MacOS
    Backend Win32 & WebView2 GTK4 & WebKitGtk Cocoa & WKWebView
    Qt5 / Qt6 & QWebEngine
  • 🔀 Seamless C++ / JavaScript interoperability

  • 📦 Supports Embedding Frontend into binary

  • 🪶 Lightweight

    By using the operating systems native web renderer (or a commonly used one), it is possible to create binaries as small as ~250KB

  • 🧰 Customizability

    Modules allow access to platform specific implementations, making it possible to tweak the library to your hearts content

  • 🏗️ Bindings

    Saucer also exposes a C-Interface, thus making it possible to write bindings for it in your favorite language!

  • 🦺 Thread-Safe

  • ⚖️ FOSS

    Licensed under MIT!

  • 🪟 Built-in support for frame-less windows and transparency

  • ... and more!

✍️ Code Example

#include <saucer/smartview.hpp>

int main()
{
    auto app = saucer::application::acquire({
        .id = "example",
    });

    saucer::smartview webview{{
        .application = app,
    }};

    webview.set_size(900, 700);
    webview.set_title("Hello World!");

    webview.expose(
        "add_random",
        [&](float number)
        {
            auto random = webview.evaluate<float>("Math.random()").get();
            return number + random;
        },
        saucer::launch::async);

    webview.set_file("index.html");
    
    webview.show();
    app->run();

    return 0;
}