A simplified approach to GJS for Node.JS and JavaScript developers.
Clone or download
Latest commit 38c7250 Nov 8, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
archive
examples
experiments
jsgtk_modules
tests when in debug mode, warnings from GJS are shown too May 5, 2016
utils
.gitignore
.gitmodules cleaned up documentation, not used anymore Dec 12, 2015
.npmignore
LICENSE
Makefile
PKGBUILD
README.md
jsgtk
package-lock.json
package.json
postinstall.sh

README.md

JSGtk+ [ DEPRECATED ]

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) )

Platforms

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.

Dependencies

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');
Gtk.init(null);
const win = new Gtk.Window({
  title: 'jsgtk',
  type: Gtk.WindowType.TOPLEVEL,
  windowPosition: Gtk.WindowPosition.CENTER
})
  .once('show', () => {
    win.setKeepAbove(true);
    Gtk.main();
  })
  .on('destroy', Gtk.mainQuit)
;
win.add(new Gtk.Label({label: 'Hello jsGtk+'}));
win.setDefaultSize(200, 80);
win.showAll();

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 ^_^;;