Atom Shell bindings for nodeJS
JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
script
wrapper
.gitignore
LICENSE
LICENSE-ATOM_SHELL
LICENSE-CHROMIUM
README.md
index.js
package.json
test.js

README.md

node-shell

node-shell lets you create cross-platform native GUI apps based on atom-shell, straight out of the box from NodeJS, with no dependency or build phase required.

Try it yourself right now

$ npm install node-shell
$ node
> require('node-shell')(function(err, api) { 
    var win = new api.BrowserWindow({}).loadUrl('http://google.com');
  });

This works out of the box on Windows, OSX and Linux with vanilla nodeJS installations.

ScreenShot

Implementation details

When npm install is invoked, node-shell downloads a packaged release of atom-shell for the current platform and replaces the default app with a wrapper that exposes the atom-shell API through (json)RPC over UNIX sockets.

Using the node-shell library, node apps can create rich native apps powered by atom-shell, without the need to build or rebuild anything (including native addons).

When spawning a new shell from your module, the node-shell library spawns an atom-shell running the wrapper app and opens an RPC channel with it to let you interact with the API.

  +-------------------------+            +-----------------------+
  |          node           |            |       atom-shell      |
  +--------------------------            +-----------------------+
  +--------+   +------------+            +---------+  +----------+
  |        | +-+ node-shell | <--------> | wrapper +--+   atom   |
  |        | | +------------+     RPC    |   app   |  |   api    |
  |  your  +-+                           +---------+  +----+-----+
  | app.js | | +------------+                 +--------+---+
  |        | +-+ other deps |                 |        |       
  |        |   +------------+             +---+--+ +---+--+ 
  |        |        ...                   | winA | | winB |   ...
  +--------+                              +------+ +------+