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:
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 optionallywebkitgtk
for thebrowser.js
example - on Debian and Ubuntu:
apt-get install gjs
and optionallylibwebkit2gtk-3.0
or higher for thebrowser.js
example - on Fedora: pretty much everything is already installed
- 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 xorg-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 should already bring in essential 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.
node-gir or node-gtk?
Why notWell, apparently both projects are stuck/abandoned and unfortunately there's no other option ^_^;;