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

The documentation can be found here.
Examples can be found here.
Learn how to create your first saucer app here.
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.
-
π» Cross Platform
Windows Linux MacOS Backend Win32 & WebView2 GTK4 & WebKitGtk Cocoa & WKWebView Qt5 / Qt6 & QWebEngine -
πΎ Feature-Rich
Supports custom schemes, script injection, favicons, and much more!
-
π 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
- Official Modules
-
π₯οΈ saucer/desktop
π File-Picker and URI-Launch support
-
π¨οΈ saucer/pdf
π Print current page as PDF
-
- Official Modules
-
ποΈ Bindings
Saucer also exposes a C-Interface, thus making it possible to write bindings for it in your favorite language!
-
π¦Ί Thread-Safe
-
𧨠No Exceptions
Compiles with
-fno-exceptions
! -
π No RTTI
Compiles with
-fno-rtti
! -
βοΈ FOSS
Licensed under MIT!
-
πͺ Built-in support for frame-less windows and transparency
#include <saucer/smartview.hpp>
int main()
{
auto app = saucer::application::init({
.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;
}