webui-dev / v-webui

Use any web browser as GUI, with V in the backend and modern web technologies in the frontend.
https://webui.me
MIT License
112 stars 11 forks source link
brave-browser browser chrome chromium cross-platform firefox gui javascript safari ui vivaldi vwebui web webui
![Logo](https://raw.githubusercontent.com/webui-dev/webui-logo/main/webui_v.png) # V-WebUI #### [Features](#features) · [Installation](#installation) · [Usage](#usage) · [Documentation](#documentation) · [WebUI](https://github.com/webui-dev/webui) [build-status]: https://img.shields.io/github/actions/workflow/status/webui-dev/v-webui/ci.yml?branch=main&style=for-the-badge&logo=V&labelColor=414868&logoColor=C0CAF5 [last-commit]: https://img.shields.io/github/last-commit/webui-dev/v-webui?style=for-the-badge&logo=github&logoColor=C0CAF5&labelColor=414868 [release-version]: https://img.shields.io/github/v/release/webui-dev/v-webui?style=for-the-badge&logo=webtrees&logoColor=C0CAF5&labelColor=414868&color=7664C6 [license]: https://img.shields.io/github/license/webui-dev/v-webui?style=for-the-badge&logo=opensourcehardware&label=License&logoColor=C0CAF5&labelColor=414868&color=8c73cc [![][build-status]](https://github.com/webui-dev/v-webui/actions?query=branch%3Amain) [![][last-commit]](https://github.com/webui-dev/v-webui/pulse) [![][release-version]](https://github.com/webui-dev/v-webui/releases/latest) [![][license]](https://github.com/webui-dev/v-webui/blob/main/LICENSE) > Use any web browser or WebView as GUI.\ > With V in the backend and modern web technologies in the frontend. ![Screenshot](https://raw.githubusercontent.com/webui-dev/webui-logo/main/screenshot.png)

Features

Installation

v install https://github.com/webui-dev/v-webui

Usage

[!NOTE] It is recommended to use GCC or Clang to compile a WebUI V program. TCC is currently not working due to missing header files. E.g.:

v -cc gcc run .

Example

import vwebui as ui

const html = '<!DOCTYPE html>
<html>
   <head>
      <script src="https://github.com/webui-dev/v-webui/raw/main/webui.js"></script>
      <style>
         body {
            background: linear-gradient(to left, #36265a, #654da9);
            color: AliceBlue;
            font: 16px sans-serif;
            text-align: center;
            margin-top: 30px;
         }
      </style>
   </head>
   <body>
      <h1>Welcome to WebUI!</h1>
      <br>
      <input type="text" id="name" value="Neo">
      <button onclick="handleVResponse();">Call V</button>
      <br>
      <br>
      <div><samp id="greeting"></samp></div>
      <script>
         async function handleVResponse() {
            const inputName = document.getElementById("name");
            const result = await webui.greet(inputName.value);
            document.getElementById("greeting").innerHTML = result;
         }
      </script>
   </body>
</html>'

fn greet(e &ui.Event) string {
    name := e.get_arg[string]() or { panic('expected an argument') }
    println('${name} has reached the backend!')
    return 'Hello ${name} 🐇'
}

fn main() {
    mut w := ui.new_window()
    w.bind('greet', greet)
    w.show(html)!
    ui.wait()
}

Find more examples in the examples/ directory.

Documentation

[!TIP] Until our online documentation is finished, you can refer to src/lib.v or use V's built-in v doc -comments vwebui in the terminal for the latest overview of exported functions.

Supported Web Browsers

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

License

Licensed under the MIT License.