Overview
GJSify is organised into four pillars, each implementing standard APIs on top of native GNOME libraries.
| Category | Packages | Description |
|---|---|---|
| Node.js Modules | 41 + 1 meta | fs, net, http, crypto, stream, events, sqlite, ws, and more |
| Web APIs | 19 + 1 native bridge + 1 meta | fetch, XMLHttpRequest, WebSocket, WebRTC, WebAudio, Streams, DOMParser, MessageChannel, WebAssembly, and more |
| DOM & Bridges | 2 DOM + 6 bridges | Canvas2D, WebGL, DOM elements; GTK-backed Canvas/WebGL/Video/IFrame bridges |
| Adwaita for browser | 3 | @gjsify/adwaita-web, @gjsify/adwaita-fonts, @gjsify/adwaita-icons |
93% of Node modules and 58% of web standards covered — see the Node.js Modules and Web APIs subpages for the full interactive breakdown.
DOM ↔ GTK Bridges
Standard DOM elements, rendered natively
App code uses standard HTML elements. Each bridge translates the DOM lifecycle to a GTK widget — Cairo for 2D, OpenGL via libepoxy for WebGL, GStreamer for video, WebKit for iframes.
HTMLCanvasElement (2D) Gtk.DrawingArea @gjsify/canvas2d Cairo + PangoCairo
HTMLCanvasElement (WebGL/WebGL2) Gtk.GLArea @gjsify/webgl Vala/gwebgl + libepoxy
HTMLIFrameElement WebKit.WebView @gjsify/iframe WebKit 6.0
HTMLVideoElement Gtk.Picture @gjsify/video GStreamer + gtk4paintablesink
Native Vala bridges
@gjsify/terminal-native Posix.isatty + ioctl TIOCGWINSZ + termios for @gjsify/tty
@gjsify/sab-native Cross-process shared memory + futex atomics for @gjsify/worker_threads
@gjsify/tls-native Direct OpenSSL access for @gjsify/tls
@gjsify/http-soup-bridge Native Soup integration helpers for @gjsify/http
@gjsify/http2-native nghttp2 bridge for h2c, push streams, flow control
@gjsify/webrtc-native GLib.Idle signal marshalling for webrtcbin's streaming-thread callbacks
Installation
Section titled “Installation”All packages are published to npm under the @gjsify scope:
yarn add @gjsify/fs @gjsify/http @gjsify/fetchIn most cases, you don’t install packages directly — the GJSify Rolldown plugin automatically aliases Node.js and Web API imports to their @gjsify/* counterparts during the GJS build.