All Projects → bamilab → browser-window

bamilab / browser-window

Licence: MIT license
A simple, cross-platform, async/await aware browser GUI toolkit for Rust.

Programming Languages

rust
11053 projects
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to browser-window

Journey
JCEF-powered cross-platform web browser
Stars: ✭ 85 (+304.76%)
Mutual labels:  cef, chromium-embedded-framework
nimCEF
Nim wrapper for the Chromium Embedded Framework
Stars: ✭ 27 (+28.57%)
Mutual labels:  cef, chromium-embedded-framework
chromium-swt
Create and render web UIs in Java SWT and Eclipse RCP applications.
Stars: ✭ 121 (+476.19%)
Mutual labels:  cef, chromium-embedded-framework
jcefbuild
Binary builds of java-cef
Stars: ✭ 160 (+661.9%)
Mutual labels:  cef, chromium-embedded-framework
cefau3
Chromium Embedded Framework for AutoIt3
Stars: ✭ 23 (+9.52%)
Mutual labels:  cef, chromium-embedded-framework
Bas
BrowserAutomationStudio can automate everything that Chrome can.
Stars: ✭ 203 (+866.67%)
Mutual labels:  cef
WebKitX
Chromium Embedded Framework (CEF1) ActiveX Wrapper
Stars: ✭ 52 (+147.62%)
Mutual labels:  cef
Go Wingui
本项目是golang在windows上用户图形界面gui解决方案,本项目可以不用对你的go写的网站程序做任何修改,就可以实现本地化,使用go+html+css+js写windows本地应用
Stars: ✭ 199 (+847.62%)
Mutual labels:  cef
Nacollector
⚔ 一个采集工具箱,据说是一个用于采集各种 WEB 资源的工作站?!你可以认为这是一个框架,可拓展。淘宝、天猫、苏宁、国美 等电商平台数据采集... 一键邀请 一键打包 账号登录获取Cookie 任务多线程 下载内容管理 实时日志 dll 热更新 无边框窗体 Web App, CefSharp, WebDriver
Stars: ✭ 158 (+652.38%)
Mutual labels:  cef
boletosimples-docs
Documentação da API do Boleto Simples - Sistema para emissão de boletos com registro
Stars: ✭ 23 (+9.52%)
Mutual labels:  cef
wecbrtc-WPFDemo
iConfRTC WebRTC Video Conferencing WPF Demo (c#).
Stars: ✭ 19 (-9.52%)
Mutual labels:  cef
MBPython
MBPython is an open source project founded by lochen to provide Python bindings for the miniblink. python miniblink
Stars: ✭ 45 (+114.29%)
Mutual labels:  cef
Pywebview
Build GUI for your Python program with JavaScript, HTML, and CSS
Stars: ✭ 2,649 (+12514.29%)
Mutual labels:  cef
mlapptools
MATLAB class containing methods for programmatic uifigure modification
Stars: ✭ 23 (+9.52%)
Mutual labels:  cef
Cefpython
Python bindings for the Chromium Embedded Framework (CEF)
Stars: ✭ 2,498 (+11795.24%)
Mutual labels:  cef
gstcefsrc
A simple gstreamer wrapper around Chromium Embedded Framework
Stars: ✭ 46 (+119.05%)
Mutual labels:  cef
Webviewane
WebView Adobe Air Native Extension for macOS 10.10+, Windows Desktop, iOS 9.0+ and Android 19+. This ANE provides access to a more modern webview from AIR.
Stars: ✭ 169 (+704.76%)
Mutual labels:  cef
cefgo
Go bindings for the Chromium Embedded Framework (CEF)
Stars: ✭ 20 (-4.76%)
Mutual labels:  cef
nsyslog-parser
Syslog Parser. Accepts RFC 3164 (BSD) and RFC 5424 formats
Stars: ✭ 14 (-33.33%)
Mutual labels:  cef
cef-mixer
High Performance off-screen rendering (OSR) demo using CEF
Stars: ✭ 183 (+771.43%)
Mutual labels:  cef

Browser Window

Browser Window is a simple Rust crate for utilizing a browser engine to create a graphical user interface. Just like Electron.js, you can build your GUI with HTML, CSS & JS, or simply have some browser functionality at your disposal.

Browser Window was born from the lack of a good and simple Electron alternative for Rust. There are other crates out there doing a similar thing, but they lack a few important key features.

Other alternatives tend to depend on the target platform's native browser engine(s), initially intended to have something that works out-of-the-box. However, nowadays that is really only true for macOS. Moreover, claims of small memory footprints are being made, with no actual evidence to back that up. This is quite deceiving really, as when you are using your platform's browser engine, this may only mean that the engine's memory resides in another process.

And then you still run into issues of portability because different browser engines support different HTML/JS/CSS features. So using one browser engine for all platforms should actually be desired if portability is of a concern. If you don't use platform dependent JavaScript (or Rust), and it works, it works everywhere. End of story.

Design Principles

Browser Window is designed to be simple to use, and to work cross-platform. It is built to utilize Rust's async/await syntax fully, so that exchanging data between the browser and your application can be straightforward, instead of using messy callbacks.

With other alternative crates, you can't just simply invoke a JavaScript function and return its output in one line like this:

let js_return_value = my_window.eval_js("my_js_func()").await.unwrap();

Something similar is available in Electron as well, and this is just something that is paramount to making two-way communication between the host-code (Rust) and client-code (JavaScript) comfortable.

Moreover, if you wish to use it in a multi-threaded environment, you can do that as well. There are thread-safe handles available for easy exchange of data & work between the GUI thread and others.

You can view some example to get some ideas of what is possible with Browser Window. There is an example of a basic terminal emulator, and an example of an authentication dialog that fetches the session cookie.

Requirements

Browser Window relies on the Chromium Embedding Framework, or CEF in short. Browser Window works on any platform that is also supported by CEF. Currently those are Linux, macOS and Windows, but macOS needs some testing.

However, that does mean it requires a bit of effort to set things up. Also, due to CEF's frequent release schedule, be sure to pick a version that is known to work, or try a new version at your own risk.

Getting Started

Click here for a manual on how to set up everything to be able to compile and run you app with Browser Window.

License

This software is available as open source software under a MIT license, for maximum freedom and minimum restrictions.

Development

If you want to help out, you're more than welcome!

Future Plans

At the moment, there is a decent set of functionality available, but if something is lacking, please submit an issue, and I'll take a look at it.

Otherwise, there are some things that are yet to come:

  • Events [underway]
  • Servo engine support (currently missing good embedding support)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].