Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


A simplified approach to GJS for Node.JS and JavaScript developers.

Subscribe to updates I use jsgtk

Statistics on jsgtk

Number of watchers on Github 87
Number of open issues 0
Average time to close an issue 2 months
Main language JavaScript
Average time to merge a PR about 23 hours
Open pull requests 0+
Closed pull requests 4+
Last commit over 2 years ago
Repo Created over 4 years ago
Repo Last Updated over 2 years ago
Size 17.8 MB
Homepage https://webreflec...
Organization / Authorwebreflection
Page Updated
Do you use jsgtk? Leave a review!
View jsgtk activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating jsgtk for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


This project is death. Long live cgjs.

This project has not received enough support to be sustainable Open Source Software and it was too big to be maintained by a single developer.

The new alternative, based on modern js52+ SpiderMonkey engine, dropped 90% of the useless crap I've implemented in here.

Lesson learned, move on and switch to CGJS today.

Project Ideas

Following the current list of project ideas and achievements:

  • a CommonJS-like module loader, compatible with any npm module
  • a Node.JS like environment with process, console, require and most common Node.JS core modules
  • an automatically transformed ECMAScript 2015 syntax for GJS SpiderMonkey environment via babel-standalone and loaded modules
  • a camelCase imported namespace to make GJS modules look more JavaScripty
  • a cross platform, lightweight, yet powerful namespace that brings Gtk native Widgets to every compatible OS
  • a Node.JS and _Web.JS_ friendly way to attach/detach signals ( obj.on(signal, listener) )


Currently developed and tested on Linux (ArchLinux, Debian, Fedora, Ubuntu) and Darwin (OSX) platforms.

How To Install

On ArchLinux you can simply use yaourt -S --needed jsgtk installing from AUR.

On other common Linux distros, and also on OSX, you can use the following terminal command and follow its instructions:

# optionally you can export WEBKIT=true upfront
sh -c "$(curl -fsSL https://webreflection.github.io/jsgtk/install)"

If you would like to know what that script does, feel free to read the used install file content.

There is also a jsgtk package on npm and it is possible to install it via npm install -g jsgtk. However, in this case, please be sure you have installed dependencies first. Some hint about best way to install them might be printed on the terminal once installed.


This project trusts and uses 100% GJS, which is usually available through one of the following procedures:

  • on ArchLinux: pacman -S --needed gjs and optionally webkit2gtk for the browser.js example
  • on Debian and Ubuntu: apt-get install gjs and optionally libwebkit2gtk-4.0 or higher for the browser.js example
  • on Fedora: pretty much everything is already installed (both gjs and webkitgtk4 are available)
  • on OSX Homebrew: brew install gtk+3 gjs and optionally webkitgtk for the browser.js example (although right now there is some problem)
  • on OSX MacPorts: port install gjs adwaita-icon-theme xorg-server xinit and optionally webkit2-gtk for the browser.js example. Please note xorg-server requires to log out and back in again before it can work.

Please remember using the installer brings in all dependencies so most likely there's nothing else to do.

Gtk/UI Examples

To test if everything is fine, you can create a test.js file and run it via jsgtk test.js or, after chmod +x test.js, directly via ./test.js:

#!/usr/bin/env jsgtk
const Gtk = require('Gtk');
const win = new Gtk.Window({
  title: 'jsgtk',
  type: Gtk.WindowType.TOPLEVEL,
  windowPosition: Gtk.WindowPosition.CENTER
  .once('show', () => {
  .on('destroy', Gtk.mainQuit)
win.add(new Gtk.Label({label: 'Hello jsGtk+'}));
win.setDefaultSize(200, 80);

There is also a jsgtk-examples repository which includes most common GJS examples, readapted for jsgtk.

Tests and other examples

If you clone this repository, npm test is the way to test few functionalities. Once cloned locally, you can also try ./jsgtk examples/base.js or any other file.

If you'd like to debug an application, pass a -d or a --debug argument to the app.

Optionally, you can set GDK_DEBUG=all to have all possible info about the app.

Why not node-gir or node-gtk?

Well, apparently both projects are stuck/abandoned and unfortunately there's no other option _;;

jsgtk list of languages used
Other projects in JavaScript