Use any web browser or WebView as GUI, with Nim in the backend and modern web technologies in the frontend, all in a lightweight portable lib.
- Fully Independent (Only needs a web browser or a WebView at runtime)
- Lightweight & Small memory footprint
- Fast binary communication protocol between WebUI and the browser
- Multi-platform & Multi-Browser
- Using private profile for safety
- Cross-platform WebView
This text editor example is written in Nim using WebUI as the GUI library.
Install via Nimble:
nimble install webui
Online documentation can be found here:
- https://webui.me/docs/2.4.0/#/nim_api
- https://neroist.github.io/webui-docs/ (same thing but made in nimib)
I suggest to get started using some examples or WebUI's own examples or documentation.
Heres a very minimal example of using the wrapper:
import webui
let window = newWindow() # Create a new Window
window.show("<html>Hello</html>") # Show the window with html content
wait() # Wait until the window gets closed
Examples can be found here at examples/
.
If you're trying to run the examples remember to clone the repository recursively, as it depends on the WebUI repo as a submodule. Here's the command to do so for the truly lazy:
git clone --recursive https://github.com/webui-dev/nim-webui.git
The Nim library exposes two files: webui.nim
and webui/bindings.nim
.
webui/bindings.nim
are low-level bindings for WebUI, generated by
c2nim. webui.nim
is a high-level wrapper for
WebUI, using native Nim types and avoiding pointers.
The wrapper and bindings also allow to to control whether or not to statically compile WebUI's C sources into your application, compile with a static library, or to depend on a DLL. Static compilation is the default behavior.
To compile with a static library, pass -d:useWebviewStaticLib
or
-d:useWebviewStaticLibrary
to the Nim compiler. To depend on a DLL, pass
-d:useWebviewDll
instead. If neither of these flags are passed to the Nim
compiler, static compilation will take place instead. Static libraries and DLLs can
be found in WebUI's website here.
In addition, you can also enable WebUI's logging via -d:webuiLog
but that flag
only works for static compilation.
Language | Status | Link |
---|---|---|
Go | ✔️ | Go-WebUI |
Nim | ✔️ | Nim-WebUI |
Pascal | ✔️ | Pascal-WebUI |
Python | ✔️ | Python-WebUI |
Rust | ✔️ | Rust-WebUI |
TypeScript / JavaScript | ✔️ | Deno-WebUI |
V | ✔️ | V-WebUI |
Zig | ✔️ | Zig-WebUI |
Odin | not complete | Odin-WebUI |
Delphi | ✔️ | WebUI4Delphi |
QuickJS | ✔️ | QuickUI |
Browser | Windows | macOS | Linux |
---|---|---|---|
Mozilla Firefox | ✔️ | ✔️ | ✔️ |
Google Chrome | ✔️ | ✔️ | ✔️ |
Microsoft Edge | ✔️ | ✔️ | ✔️ |
Chromium | ✔️ | ✔️ | ✔️ |
Yandex | ✔️ | ✔️ | ✔️ |
Brave | ✔️ | ✔️ | ✔️ |
Vivaldi | ✔️ | ✔️ | ✔️ |
Epic | ✔️ | ✔️ | not available |
Apple Safari | not available | coming soon | not available |
Opera | coming soon | coming soon | coming soon |
WebView | Status |
---|---|
Windows WebView2 | ✔️ |
Linux GTK WebView | ✔️ |
macOS WKWebView | ✔️ |
MIT License. See LICENSE
Original WebUI library is licensed under MIT. See LICENSE.