A simplified approach to GJS for Node.JS and JavaScript developers.
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.
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 optionallywebkit2gtk
for thebrowser.js
example - on Debian and Ubuntu:
apt-get install gjs
and optionallylibwebkit2gtk-4.0
or higher for thebrowser.js
example - on Fedora: pretty much everything is already installed (both
gjs
andwebkitgtk4
are available) - on OSX Homebrew:
brew install gtk+3 gjs
and optionallywebkitgtk
for thebrowser.js
example (although right now there is some problem) - on OSX MacPorts:
port install gjs adwaita-icon-theme xorg-server xinit
and optionallywebkit2-gtk
for thebrowser.js
example. Please notexorg-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.
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
.
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.
Well, apparently both projects are stuck/abandoned and unfortunately there's no other option ^_^;;