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;
}