Drake c4c0436634
update Deno branch to 0.10.0 (#31)
* cdp: add internal close api

* inject: add Window.close() api

* typedef: add Window.close()

* roadmap: add close api for 0.8.0

* release: 0.8.0

* readme: update project age

* paths: add more linux browsers

* readme: update screenshot

* readme: move trying gluon to earlier up

* inject: add useSessionId to Window.cdp.send()

* typedef: add useSessionId to CDPApi.send()

* idle: rewrite to use CDP to get processes instead of exec

* index: remove now unneeded parameters for idle creation

* chore: bump version to 0.9.0-alpha.0

* inject: pass IPC browser engine

* api: add Window.versions

* typedef: add future BrowserEngine and update Browser values

* typedef: add Window.versions

* index: rename internal variable

* idle: v2 - added sleep, utils, documenting, and more

* typedef: update for IdleApi v2

* roadmap: update

* chore: bump version to 0.9.0-alpha.2

* readme: add more feature specific statuses

* readme: make specific feature statuses into a table

* cdp: return protocol errors

* idle: move to new api dir

* controls: new Window.controls API

* darwin: full support (#4)

* meta: add pnpm-lock.yaml to .gitignore for my own sanity

* darwin: preliminary support

* chore: disable menubar key in firefox

* Add support new browsers Mac OS (#20)

Co-authored-by: a.artamonov <a.artamonov@sftpro.ru>

* roadmap: tweak

* roadmap: update done

* roadmap: remove overall

* typedef: change some voids to Promise<void>s

* typedef: add Window.controls

* release: 0.9.0

* add .vscode to gitignore

* assets: new logo

* readme: tweak features

* readme: fancy header

* readme: tweak description

* paths>win: add alternate appdata paths

* paths: add new browsers, refactor windows to auto append env

* readme: update npm link

* readme: fix license badge link

* paths: add brave

* chore: bump version to 0.10.0-alpha.2

* index: redo browser finding logging

* index: rewrite data path gen (#6)

* Added `.DS_Store` in .gitignore (#28)

* `.DS_Store` Removed

* Update .gitignore

* roadmap: update

* roadmap: add intended release date for 0.10

* launcher/inject: get browser info first, and always await

* roadmap: update

* cdp: make logging available via optional cli flag

* chore: bump version to 0.10.0-alpha.3

* chore: update alpha version in package

* inject: make eval return just result

* inject: add window.loaded promise

* ipc: add expose APIs

* roadmap: update

* gitignore: ignore gluon_data

* inject: rename Window.window -> Window.page

* typedef: rename Window.window -> page

* typedef: add PageApi.loaded

* typedef: add new IPC expose APIs

* idle: minor cleanup

* fix: hopefully remove all references to nodejs `process`

* idle: add close handler (also move API creation into inject)

* chore: bump version to alpha.5

* launcher: run Window.close on process close too

* fix: firefox was still refering to node's `process`

* gluworld: update to newest version from examples repo, fully convert to Deno

* typedefs: fix errors that deno lsp was complaining about

* release: v0.10.0

* deno: re-export src/index.ts in mod.ts to fit typical deno usage

Co-authored-by: CanadaHonk <oj@oojmed.com>
Co-authored-by: Beef <beefers@riseup.net>
Co-authored-by: Alexander Artamonov <47431914+artamonovtech@users.noreply.github.com>
Co-authored-by: a.artamonov <a.artamonov@sftpro.ru>
Co-authored-by: Mantresh Khurana <120998049+mantreshkhurana@users.noreply.github.com>
2023-01-12 16:37:37 +00:00
2022-12-14 19:50:40 +00:00
2023-01-12 16:37:37 +00:00
2023-01-12 16:37:37 +00:00
2023-01-12 16:37:37 +00:00
2023-01-12 16:37:37 +00:00
2022-12-14 10:31:12 +00:00
2023-01-12 16:37:37 +00:00
2023-01-12 16:37:37 +00:00
2023-01-12 16:37:37 +00:00

Gluon

License: MIT NPM version GitHub Sponsors Discord

Gluon is a new framework for creating desktop apps from websites, using system installed browsers (not webviews) and NodeJS, differing a lot from other existing active projects - opening up innovation and allowing some major advantages. Instead of other similar frameworks bundling a browser like Chromium or using webviews (like Edge Webview2 on Windows), Gluon just uses system installed browsers like Chrome, Edge, Firefox, etc. Gluon supports Chromium and Firefox based browsers as the frontend, while Gluon's backend uses NodeJS to be versatile and easy to develop (also allowing easy learning from other popular frameworks like Electron by using the same-ish stack).

Features

  • Uses normal system installed browsers - allows user choice by supporting most Chromium and Firefox based browsers, no webviews
  • Tiny bundle sizes - <1MB using system Deno
  • Chromium and Firefox supported as browser engine, unlike any other active framework
  • Minimal and easy to use - Gluon has a simple yet powerful API to make apps with a Node backend
  • Also supports Deno (experimental) - Deno is also being worked as an option (developer choice) in replacement of NodeJS for the backend (you're here right now)
  • Fast build times - Gluon has build times under 1 second on most machines for small projects
  • Actively developed and listening to feedback - new updates are coming around weekly, quickly adding unplanned requested features if liked by the community (like Firefox support!)
  • Cross-platform - Gluon works on Windows, Linux, and macOS (WIP)

Gluworld Screenshot showing Chrome Canary and Firefox Nightly being used at once using Deno.


Status

Gluon is currently barely 1 week old, so is still in an early and experimental state. But it works and shows (in my opinion) potential! I am open to opinions, suggestions, feedback, ideas, etc. Currently you cannot easily test it yourself. If you're interested and want to talk to me and others about Gluon, you can join our Discord server.

Specific feature statuses

  • Using Chromium based browsers: Stable
  • Using Firefox based browsers: Experimental
  • Web-Deno IPC: Stable

Ecosystem

  • Gluon: the Gluon framework (Deno)
  • Glugun: builds Gluon apps into releasable builds with optional bundling (soon)

Apps

  • Gluworld: Hello World demo app with version info shown
  • Gludoom: Doom running as WASM, made into a native looking app with Gluon
  • Glucord: minimal desktop Discord client loading official webapp (demo/example)

Trying Gluon

  1. Clone the deno branch of this repo (git clone --branch deno https://github.com/gluon-framework/gluon.git)
  2. deno run -A gluworld/index.js
Shell example
$ git clone --branch deno https://github.com/gluon-framework/gluon.git
$ cd gluon
$ deno run -A gluworld/index.js

Comparisons

Internals

Part Gluon Electron Tauri Neutralinojs
Frontend System installed Chromium or Firefox Self-contained Chromium System installed webview System installed webview
Backend System installed Deno Self-contained Node.JS Native (Rust) Native (Any)
IPC Window object Preload Window object Window object
Status Early in development Production ready Usable Usable
Ecosystem Integrated Distributed Integrated Integrated

Benchmark / Stats

Basic (plain HTML) Hello World demo, measured on up to date Windows 10, on my machine (your experience will probably differ). Used latest stable versions of all frameworks as of 9th Dec 2022. (You shouldn't actually use random stats in benchmarks to compare frameworks, this is more so you know what Gluon is like compared to other similar projects.)

Stat Gluon Electron Tauri Neutralinojs
Build Size <1MB123 ~220MB ~1.8MB1 ~2.6MB1
Memory Usage ~80MB2 ~100MB ~90MB ~90MB
Backend4 Memory Usage Not measured2 (Deno) ~22MB (Node) ~3MB (Native) ~3MB (Native)
Build Time ~0.7s5 ~20s6 ~120s7 ~2s58

Extra info: All HTML/CSS/JS is unminified (including Gluon). Built in release configuration. All binaries were left as compiled with common size optimizations enabled for that language, no stripping/packing done.


  1. Does not include system installed components. ↩︎

  2. Using Chrome as system browser. Early/WIP data, may change in future. ↩︎

  3. How is Gluon so small? Since Deno is expected as a system installed component, it is "just" bundled and minified Deno code. ↩︎

  4. Backend like non-Web (not Chromium/WebView2/etc). ↩︎

  5. Includes Node.JS spinup time. ↩︎

  6. Built for win32 zip (not Squirrel) as a fairer comparison. ↩︎

  7. Cold build (includes deps compiling) in release mode. ↩︎

  8. Using neu build -r. ↩︎

Description
A new framework for creating desktop apps from websites, using system installed browsers and NodeJS 使用系统浏览器打包程序
Readme 1.2 MiB
Languages
JavaScript 100%