├── .github
└── workflows
│ └── npm-publish.yml
├── .gitignore
├── LICENSE
├── README.md
├── bootstrap.bat
├── bootstrap.sh
├── deps.ts
├── examples
├── custom_file_handler
│ ├── assets
│ │ ├── test_app.js
│ │ └── webui.jpeg
│ ├── custom_file_handler.ts
│ └── index.html
├── custom_web_server
│ ├── custom_web_server.ts
│ ├── index.html
│ ├── second.html
│ └── simple_web_server.py
├── hello_world
│ └── hello_world.ts
└── send_raw_binary
│ ├── send_raw_binary.ts
│ └── webui.jpeg
├── img
├── cppcon_2019.png
├── screenshot.png
├── webui.png
├── webui_bun_example.png
└── webui_diagram.png
├── mod.ts
├── package-lock.json
├── package.json
└── src
├── bootstrap.bat
├── bootstrap.sh
├── ffi_worker.ts
├── lib.ts
├── types.ts
├── utils.ts
└── webui.ts
/.github/workflows/npm-publish.yml:
--------------------------------------------------------------------------------
1 | name: Publish NPM Package
2 |
3 | on:
4 | release:
5 | types: [created]
6 |
7 | permissions:
8 | contents: read
9 |
10 | jobs:
11 | publish:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Check out repository
15 | uses: actions/checkout@v3
16 |
17 | - name: Set up Node.js
18 | uses: actions/setup-node@v3
19 | with:
20 | node-version: '18'
21 | registry-url: 'https://registry.npmjs.org/'
22 |
23 | - name: Install dependencies
24 | run: echo "Bun-WebUI has no dependencies for now."
25 |
26 | - name: Publish to NPM
27 | run: npm publish --access public
28 | env:
29 | NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
30 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Bun binaries
2 | src/webui-windows-msvc-x64/
3 | src/webui-windows-msvc-arm/
4 | src/webui-windows-msvc-arm64/
5 | src/webui-macos-clang-x64/
6 | src/webui-macos-clang-arm/
7 | src/webui-macos-clang-arm64/
8 | src/webui-linux-gcc-x64/
9 | src/webui-linux-gcc-arm/
10 | src/webui-linux-gcc-arm64/
11 | *.dll
12 | *.so
13 | *.dylib
14 |
15 | # Archives
16 | *.zip
17 | *.tar
18 | *.gz
19 |
20 | # Build
21 | *.exe
22 | *.ilk
23 | *.pdb
24 | *.exp
25 | *.res
26 | *.out
27 | *.def
28 | *.obj
29 | *.iobj
30 | *.o
31 |
32 | # Logs
33 | *.log
34 | *.logs
35 | *.tlog
36 |
37 | # IDE
38 | .vscode/
39 | .vs/
40 |
41 | # Visual Studio
42 | .idea/
43 | *.recipe
44 | *.idb
45 |
46 | # Visual Studio for Mac
47 | .idea/
48 |
49 | # Visual Studio cache files
50 | ipch/
51 | *.dbmdl
52 | *.dbproj.schemaview
53 |
54 | # Others
55 | .builds
56 | *~*
57 | *.cache
58 | *.swp
59 | *.bak
60 | *.tmp
61 | *.swp
62 | *.userosscache
63 | *.err
64 | *.vspscc
65 | *.vssscc
66 | *.pidb
67 | *.svclog
68 | *.scc
69 |
70 | # NuGet
71 | packages/
72 | !packages/repositories.config
73 | *.nupkg
74 |
75 | # Microsoft Azure Build Output
76 | csx/
77 | *.build.csdef
78 |
79 | # User-specific files
80 | *.suo
81 | *.user
82 | *.userprefs
83 | *.sln.docstates
84 |
85 | # Python
86 | __pycache__/
87 | dist/
88 | webui2.egg-info/
89 |
90 | # Rust
91 | target/
92 | *.lock
93 |
94 | # Broken NTFS
95 | nul
96 |
97 | # Zig
98 | zig-cache/
99 | zig-out/
100 |
101 | # macOS
102 | .DS_Store
103 | .DS_Store?
104 | ._*
105 | .Spotlight-V100
106 | .Trashes
107 | ehthumbs.db
108 | Thumbs.db
109 |
110 | # User-specific private settings
111 | *.DotSettings.user
112 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Hassan Draga
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | 
4 |
5 | # Bun-WebUI v2.5.2 (Beta)
6 |
7 | [last-commit]: https://img.shields.io/github/last-commit/webui-dev/webui?style=for-the-badge&logo=github&logoColor=C0CAF5&labelColor=414868
8 | [release-version]: https://img.shields.io/github/v/tag/webui-dev/webui?style=for-the-badge&logo=webtrees&logoColor=C0CAF5&labelColor=414868&color=7664C6
9 | [license]: https://img.shields.io/github/license/webui-dev/webui?style=for-the-badge&logo=opensourcehardware&label=License&logoColor=C0CAF5&labelColor=414868&color=8c73cc
10 |
11 | [![][last-commit]](https://github.com/webui-dev/bun-webui/pulse)
12 | [![][release-version]](https://github.com/webui-dev/bun-webui/releases/latest)
13 | [![][license]](https://github.com/webui-dev/bun-webui/blob/main/LICENSE)
14 |
15 | > Use any web browser or WebView as GUI, with Bun in the backend and modern web technologies in the frontend, all in a lightweight portable library.
16 |
17 | 
18 |
19 |
20 |
21 | ## Features
22 |
23 | - Portable (*Needs only a web browser or a WebView at runtime*)
24 | - Lightweight (*Few Kb library*) & Small memory footprint
25 | - Fast binary communication protocol
26 | - Multi-platform & Multi-Browser
27 | - Using private profile for safety
28 | - Cross-platform WebView
29 |
30 | ## Screenshot
31 |
32 | This [hello world example](https://github.com/webui-dev/bun-webui/tree/main/examples/hello_world)
33 | is written in Bun using WebUI as the GUI library.
34 |
35 | 
36 |
37 | ## NPM Installation
38 |
39 | ```sh
40 | npm install @webui-dev/bun-webui
41 | ```
42 |
43 | ## Import Package
44 |
45 | ```js
46 | import { WebUI } from '@webui-dev/bun-webui';
47 | ```
48 |
49 | ## Minimal Example
50 |
51 | ```js
52 | import { WebUI } from '@webui-dev/bun-webui';
53 |
54 | const myWindow = new WebUI();
55 | myWindow.show(' Hello World! ');
56 | await WebUI.wait();
57 | ```
58 |
59 | ```sh
60 | bun run minimal.ts
61 | ```
62 |
63 | [More examples](https://github.com/webui-dev/bun-webui/tree/main/examples)
64 |
65 | ## Documentation
66 |
67 | - [Online Documentation](https://webui.me/docs/2.5/#/) (_Deno section is the same as Bun_)
68 |
69 | ## CppCon 2019 Presentation
70 |
71 | [Borislav Stanimirov](https://ibob.bg/) explained at
72 | [C++ Conference 2019 (_YouTube_)](https://www.youtube.com/watch?v=bbbcZd4cuxg)
73 | how beneficial it is to use the web browser as GUI.
74 |
75 |
78 |
79 | 
80 |
81 | ## UI & The Web Technologies
82 |
83 | Web application UI design is not just about how a product looks but how it
84 | works. Using web technologies in your UI makes your product modern and
85 | professional, And a well-designed web application will help you make a solid
86 | first impression on potential customers. Great web application design also
87 | assists you in nurturing leads and increasing conversions. In addition, it makes
88 | navigating and using your web app easier for your users.
89 |
90 | ## Why Use Web Browser?
91 |
92 | Today's web browsers have everything a modern UI needs. Web browsers are very
93 | sophisticated and optimized. Therefore, using it as a GUI will be an excellent
94 | choice. While old legacy GUI lib is complex and outdated, a WebView-based app is
95 | still an option. However, a WebView needs a huge SDK to build and many
96 | dependencies to run, and it can only provide some features like a real web
97 | browser. That is why WebUI uses real web browsers to give you full features of
98 | comprehensive web technologies while keeping your software lightweight and
99 | portable.
100 |
101 | ## How does it work?
102 |
103 | 
104 |
105 | Think of WebUI like a WebView controller, but instead of embedding the WebView
106 | controller in your program, which makes the final program big in size, and
107 | non-portable as it needs the WebView runtimes. Instead, by using WebUI, you use
108 | a tiny static/dynamic library to run any installed web browser and use it as
109 | GUI, which makes your program small, fast, and portable. **All it needs is a web
110 | browser**.
111 |
112 | ## Runtime Dependencies Comparison
113 |
114 | | | Tauri / WebView | Qt | WebUI |
115 | | ------------------------------- | ----------------- | -------------------------- | ------------------- |
116 | | Runtime Dependencies on Windows | _WebView2_ | _QtCore, QtGui, QtWidgets_ | **_A Web Browser_** |
117 | | Runtime Dependencies on Linux | _GTK3, WebKitGTK_ | _QtCore, QtGui, QtWidgets_ | **_A Web Browser_** |
118 | | Runtime Dependencies on macOS | _Cocoa, WebKit_ | _QtCore, QtGui, QtWidgets_ | **_A Web Browser_** |
119 |
120 | ## Supported Web Browsers
121 |
122 | | Browser | Windows | macOS | Linux |
123 | | --------------- | --------------- | ------------- | --------------- |
124 | | Mozilla Firefox | ✔️ | ✔️ | ✔️ |
125 | | Google Chrome | ✔️ | ✔️ | ✔️ |
126 | | Microsoft Edge | ✔️ | ✔️ | ✔️ |
127 | | Chromium | ✔️ | ✔️ | ✔️ |
128 | | Yandex | ✔️ | ✔️ | ✔️ |
129 | | Brave | ✔️ | ✔️ | ✔️ |
130 | | Vivaldi | ✔️ | ✔️ | ✔️ |
131 | | Epic | ✔️ | ✔️ | _not available_ |
132 | | Apple Safari | _not available_ | _coming soon_ | _not available_ |
133 | | Opera | _coming soon_ | _coming soon_ | _coming soon_ |
134 |
135 | ## Supported Languages
136 |
137 | | Language | v2.4.0 API | v2.5.0 API | Link |
138 | | --------------- | --- | -------------- | --------------------------------------------------------- |
139 | | Python | ✔️ | _not complete_ | [Python-WebUI](https://github.com/webui-dev/python-webui) |
140 | | Go | ✔️ | _not complete_ | [Go-WebUI](https://github.com/webui-dev/go-webui) |
141 | | Zig | ✔️ | _not complete_ | [Zig-WebUI](https://github.com/webui-dev/zig-webui) |
142 | | Nim | ✔️ | _not complete_ | [Nim-WebUI](https://github.com/webui-dev/nim-webui) |
143 | | V | ✔️ | _not complete_ | [V-WebUI](https://github.com/webui-dev/v-webui) |
144 | | Rust | _not complete_ | _not complete_ | [Rust-WebUI](https://github.com/webui-dev/rust-webui) |
145 | | TS / JS (Deno) | ✔️ | _not complete_ | [Deno-WebUI](https://github.com/webui-dev/bun-webui) |
146 | | TS / JS (Bun) | _not complete_ | _not complete_ | [Bun-WebUI](https://github.com/webui-dev/bun-webui) |
147 | | Swift | _not complete_ | _not complete_ | [Swift-WebUI](https://github.com/webui-dev/swift-webui) |
148 | | Odin | _not complete_ | _not complete_ | [Odin-WebUI](https://github.com/webui-dev/odin-webui) |
149 | | Pascal | _not complete_ | _not complete_ | [Pascal-WebUI](https://github.com/webui-dev/pascal-webui) |
150 | | Purebasic | _not complete_ | _not complete_ | [Purebasic-WebUI](https://github.com/webui-dev/purebasic-webui)|
151 | | - | | |
152 | | Common Lisp | _not complete_ | _not complete_ | [cl-webui](https://github.com/garlic0x1/cl-webui) |
153 | | Delphi | _not complete_ | _not complete_ | [WebUI4Delphi](https://github.com/salvadordf/WebUI4Delphi) |
154 | | C# | _not complete_ | _not complete_ | [WebUI4CSharp](https://github.com/salvadordf/WebUI4CSharp) |
155 | | WebUI.NET | _not complete_ | _not complete_ | [WebUI.NET](https://github.com/Juff-Ma/WebUI.NET) |
156 | | QuickJS | _not complete_ | _not complete_ | [QuickUI](https://github.com/xland/QuickUI) |
157 | | PHP | _not complete_ | _not complete_ | [PHPWebUiComposer](https://github.com/KingBes/php-webui-composer) |
158 |
159 | ## Supported WebView
160 |
161 | | WebView | Status |
162 | | --------------- | --------------- |
163 | | Windows WebView2 | ✔️ |
164 | | Linux GTK WebView | ✔️ |
165 | | macOS WKWebView | ✔️ |
166 |
167 | ### License
168 |
169 | > Licensed under MIT License.
170 |
171 | ### Stargazers
172 |
173 | [](https://github.com/webui-dev/bun-webui/stargazers)
174 |
--------------------------------------------------------------------------------
/bootstrap.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | cd src
3 | call bootstrap.bat %*
4 | cd ..
5 |
--------------------------------------------------------------------------------
/bootstrap.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | cd src
3 | sh bootstrap.sh "$@"
4 | cd ..
5 |
--------------------------------------------------------------------------------
/deps.ts:
--------------------------------------------------------------------------------
1 | // Bun WebUI
2 | // Dependences needed by webui.ts
3 |
4 | import {
5 | fileExists,
6 | downloadCoreLibrary,
7 | currentModulePath,
8 | } from "./src/utils.ts";
9 |
10 | /**
11 | * Determines the correct library filename based on the current operating system and CPU architecture.
12 | * Checks for the library locally and, if not found, constructs the full path and downloads it if necessary.
13 | *
14 | * @returns A promise that resolves to the path of the dynamic library.
15 | */
16 | async function getLibName() {
17 | let fileName = "";
18 | let localFileName = "";
19 |
20 | // Select the appropriate library file based on platform and architecture.
21 | switch (process.platform) {
22 | // Windows platform
23 | case "win32":
24 | switch (process.arch) {
25 | case "x64":
26 | fileName = "webui-windows-msvc-x64/webui-2.dll";
27 | localFileName = "./webui-2.dll";
28 | break;
29 | case "arm64":
30 | fileName = "webui-windows-msvc-arm64/webui-2.dll";
31 | localFileName = "./webui-2.dll";
32 | break;
33 | default:
34 | throw new Error(`Unsupported architecture ${process.arch} for Windows`);
35 | }
36 | break;
37 |
38 | // macOS platform
39 | case "darwin":
40 | switch (process.arch) {
41 | case "x64":
42 | fileName = "webui-macos-clang-x64/libwebui-2.dylib";
43 | localFileName = "./libwebui-2.dylib";
44 | break;
45 | case "arm64":
46 | fileName = "webui-macos-clang-arm64/libwebui-2.dylib";
47 | localFileName = "./libwebui-2.dylib";
48 | break;
49 | default:
50 | throw new Error(`Unsupported architecture ${process.arch} for macOS`);
51 | }
52 | break;
53 |
54 | // Other platforms (Linux, etc.)
55 | default:
56 | switch (process.arch) {
57 | case "x64":
58 | fileName = "webui-linux-gcc-x64/libwebui-2.so";
59 | localFileName = "./libwebui-2.so";
60 | break;
61 | case "arm64":
62 | fileName = "webui-linux-gcc-arm64/libwebui-2.so";
63 | localFileName = "./libwebui-2.so";
64 | break;
65 | default:
66 | throw new Error(`Unsupported architecture ${process.arch} for ${process.platform}`);
67 | }
68 | break;
69 | }
70 |
71 | // Check if the dynamic library already exists locally.
72 | const localExists = await fileExists(localFileName);
73 | if (localExists) {
74 | return localFileName;
75 | }
76 |
77 | // Construct the full path to the dynamic library using the current module path.
78 | const srcFullPath = currentModulePath;
79 | const fullPath = srcFullPath + fileName;
80 |
81 | // Verify if the library exists at the computed path.
82 | const exists = await fileExists(fullPath);
83 | if (!exists) {
84 | // If not found, download the core library.
85 | await downloadCoreLibrary();
86 | }
87 |
88 | // Return the final resolved path to the dynamic library.
89 | return fullPath;
90 | }
91 |
92 | // Export the resolved library name for use in other parts of the application.
93 | export const libName = await getLibName();
94 |
--------------------------------------------------------------------------------
/examples/custom_file_handler/assets/test_app.js:
--------------------------------------------------------------------------------
1 |
2 | function test_app() {
3 | alert('Hello from test_app.js');
4 | }
5 |
--------------------------------------------------------------------------------
/examples/custom_file_handler/assets/webui.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webui-dev/bun-webui/bf16e4f9413f16dce2b87dfed11dfe0fec91af73/examples/custom_file_handler/assets/webui.jpeg
--------------------------------------------------------------------------------
/examples/custom_file_handler/custom_file_handler.ts:
--------------------------------------------------------------------------------
1 | // To run this script:
2 | // bun run custom_file_handler.ts
3 |
4 | // To import from local (Debugging and Development)
5 | // import { WebUI } from "../../mod.ts";
6 |
7 | // To import from NPM (Production)
8 | import { WebUI } from '@webui-dev/bun-webui';
9 |
10 | // Return HTTP header + file raw binary content
11 | const getFile = async (contentType: string, filename: string): Promise => {
12 | const content = new Uint8Array(await Bun.file(filename).arrayBuffer());
13 | const header = `HTTP/1.1 200 OK\r\nContent-Type: ${contentType}\r\n\r\n`;
14 | const headerBytes = new TextEncoder().encode(header);
15 | const response = new Uint8Array(headerBytes.length + content.length);
16 | response.set(headerBytes);
17 | response.set(content, headerBytes.length);
18 | return response;
19 | };
20 |
21 | // Set a custom files handler
22 | async function myFileHandler(myUrl: URL) {
23 | console.log(`File: ${myUrl.pathname}`);
24 | // Index example
25 | if (myUrl.pathname === '/index.html' || myUrl.pathname === '/') {
26 | return await getFile('text/html', 'index.html');
27 | }
28 | // Custom text string example
29 | if (myUrl.pathname === '/test') {
30 | return "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nHello";
31 | }
32 | // File examples
33 | if (myUrl.pathname === '/assets/test_app.js') {
34 | return await getFile('application/javascript', 'assets/test_app.js');
35 | }
36 | if (myUrl.pathname === '/assets/webui.jpeg') {
37 | return await getFile('image/jpeg', 'assets/webui.jpeg');
38 | }
39 | // Error 404 example
40 | return "HTTP/1.1 404 Not Found";
41 | };
42 |
43 | // Create new window
44 | const myWindow = new WebUI();
45 |
46 | // Bind Exit
47 | myWindow.bind("exit", () => {
48 | // Close all windows and exit
49 | WebUI.exit();
50 | });
51 |
52 | // Set files handler
53 | // Note: Should be called before `.show()`
54 | myWindow.setFileHandler(myFileHandler);
55 |
56 | // Show the window
57 | await myWindow.show('index.html');
58 |
59 | // Wait until all windows get closed
60 | await WebUI.wait();
61 |
62 | console.log("Thank you.");
63 |
64 | process.exit(0);
65 |
--------------------------------------------------------------------------------
/examples/custom_file_handler/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | WebUI 2 - Bun File Handler Example
7 |
8 |
9 |
WebUI 2 - Bun File Handler Example
10 |
11 |
12 |
13 | -
14 |
15 |
16 |
--------------------------------------------------------------------------------
/examples/custom_web_server/custom_web_server.ts:
--------------------------------------------------------------------------------
1 | // To run this script:
2 | // python simple_web_server.py
3 | // bun run custom_web_server.ts
4 |
5 | // To import from local (Debugging and Development)
6 | // import { WebUI } from "../../mod.ts";
7 |
8 | // To import from NPM (Production)
9 | import { WebUI } from '@webui-dev/bun-webui';
10 |
11 | async function allEvents(e: WebUI.Event) {
12 | /*
13 | e.window: WebUI;
14 | e.eventType: WebUI.EventType;
15 | e.element: string;
16 | */
17 | console.log(`\nallEvents: window = '${e.window}'`);
18 | console.log(`allEvents: eventType = '${e.eventType}'`);
19 | console.log(`allEvents: element = '${e.element}'`);
20 | switch (e.eventType) {
21 | case WebUI.EventType.Disconnected:
22 | // Window disconnection event
23 | console.log(`Window closed.`);
24 | break;
25 | case WebUI.EventType.Connected:
26 | // Window connection event
27 | console.log(`Window connected.`);
28 | break;
29 | case WebUI.EventType.MouseClick:
30 | // Mouse click event
31 | console.log(`Mouse click.`);
32 | break;
33 | case WebUI.EventType.Navigation:
34 | // Window navigation event
35 | const url = e.arg.string(0);
36 | console.log(`Navigation to '${url}'`);
37 | // Because we used `webui_bind(MyWindow, "", events);`
38 | // WebUI will block all `href` link clicks and sent here instead.
39 | // We can then control the behaviour of links as needed.
40 | e.window.navigate(url);
41 | break;
42 | case WebUI.EventType.Callback:
43 | // Function call event
44 | console.log(`Function call.`);
45 | break;
46 | }
47 | }
48 |
49 | async function myBackendFunc(e: WebUI.Event) {
50 | const a = e.arg.number(0); // First argument
51 | const b = e.arg.string(1); // Second argument
52 | const c = e.arg.boolean(2); // Third argument
53 | console.log(`\nFirst argument: ${a}`);
54 | console.log(`Second argument: ${b}`);
55 | console.log(`Third argument: ${c}`);
56 | }
57 |
58 | // Create new window
59 | const myWindow = new WebUI();
60 |
61 | // Bind All Events
62 | myWindow.bind("", allEvents);
63 |
64 | // Bind Backend Function
65 | myWindow.bind("myBackendFunc", myBackendFunc);
66 |
67 | // Bind Exit Function
68 | myWindow.bind("exit", () => {
69 | // Close all windows and exit
70 | WebUI.exit();
71 | });
72 |
73 | // Set the web-server/WebSocket port that WebUI should
74 | // use. This means `webui.js` will be available at:
75 | // http://localhost:MY_PORT_NUMBER/webui.js
76 | myWindow.setPort(8081);
77 |
78 | // Show a new window and point to our custom web server
79 | // Assuming the custom web server is running on port
80 | // 8080...
81 | myWindow.show("http://localhost:8080/");
82 |
83 | // Wait until all windows get closed
84 | await WebUI.wait();
85 |
86 | console.log("Thank you.");
87 |
88 | process.exit(0);
89 |
--------------------------------------------------------------------------------
/examples/custom_web_server/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | WebUI - Custom Web-Server Example (C)
6 |
7 |
8 |
9 |
10 |
Custom Web-Server Example (C)
11 |
12 | This HTML page is handled by a custom Web-Server other than WebUI.
13 | This window is connected to the back-end because we used: