Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 6 days ago
JSON representation
๐ธ A modern, cross-platform C++ webview library
- Host: GitHub
- URL: https://github.com/saucer/saucer
- Owner: saucer
- License: mit
- Created: 2021-08-13T18:06:34.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-12-29T19:09:39.000Z (14 days ago)
- Last Synced: 2024-12-30T09:05:11.372Z (13 days ago)
- Topics: 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
- Language: C++
- Homepage: https://saucer.github.io/
- Size: 2.08 MB
- Stars: 315
- Watchers: 11
- Forks: 21
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-electron-alternatives - Saucer - gen desktop apps with web-frontend in C++. (๐ Alternatives to the [Electron.js](https://electronjs.org) โ / C/C++)
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
* ๐พ 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](https://github.com/saucer/desktop)
> ๐ File-Picker and URI-Launch support
* ๐จ๏ธ [saucer/pdf](https://github.com/saucer/pdf)
> ๐ Print current page as PDF* ๐๏ธ [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
* ๐งจ 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
* [... and more!](https://saucer.github.io/)
## โ๏ธ Code Example
```cpp
#includeint 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("Math.random()").get();
return number + random;
},
saucer::launch::async);webview.set_file("index.html");
webview.show();
app->run();return 0;
}
```## ๐ Who's using saucer?