Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/saucer/saucer

ðŸ›ļ A modern, cross-platform C++ webview library
https://github.com/saucer/saucer

cocoa cpp cpp-library cpp23 cpp23-library cpplibrary cross-platform gtk4 libadwaita lightweight qt5 qt6 qwebengine saucer webkitgtk webkitgtk-6 webview webview-library webview2 wkwebview

Last synced: 4 days ago
JSON representation

ðŸ›ļ A modern, cross-platform C++ webview library

Awesome Lists containing this project

README

        





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

---

### Documentation

The documentation can be found [here](https://saucer.github.io/).

### Examples

Examples can be found [here](./examples).

### Getting started

Learn how to create your first _saucer_ app [here](https://saucer.github.io/docs/getting-started).

---

## ðŸ‘― 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](https://github.com/saucer/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!](https://saucer.github.io/)

## ✍ïļ Code Example

```cpp
#include

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("Math.random()").get();
return number + random;
},
saucer::launch::async);

webview.set_file("index.html");

webview.show();
app->run();

return 0;
}
```