Skip to content
spolu edited this page Nov 11, 2014 · 97 revisions

Thrust Application Framework

Logo Thrust

The require-able cross-platform native application framework based on Chromium's content module

Thrust lets you distribute nodeJS, Go or Python cross-plaform GUI apps (MacOSX, Windows, Linux) through their native package managers.

Thrust's binary distribution exposes its API on the standard IO and language specific library packages automatically download the binary distribution at installation. It is based on Chromium's content module and uses web-pages as its GUI.

Cross-Platform Screenshots Screenshot of Thrust Getting Started example running on each major platform.

Thrust will be powering the next versions of Breach

To better understand what Thrust can do, check out JankyBrowser by @morganrallen. The browser that fits in a Gist

npm install -g \
  https://gist.github.com/morganrallen/f07f59802884bcdcad4a/download

Table of Contents


Language bindings

NodeJS

Getting Started
require('node-thrust')(function(err, api) { 
  api.window({ root_url: 'https://breach.cc' }).show();
});
Library

Go

Getting Started

First download with go get -u github.com/miketheprogrammer/go-thrust/

package main

import (
	"github.com/miketheprogrammer/go-thrust/dispatcher"
	"github.com/miketheprogrammer/go-thrust/spawn"
	"github.com/miketheprogrammer/go-thrust/window"
)
 
func main() {
	spawn.Run()
	thrustWindow := window.Window{Url: "http://breach.cc/"}
	thrustWindow.Create(nil)
	thrustWindow.Show()
	thrustWindow.Maximize()
	thrustWindow.Focus()
	dispatcher.RunLoop()
}
Library

Architecture & Documentation

[Thurst Architecture]

          (Platform)           [stdio]      (Your Implementation)
                                                                          
                                  #
               +--------------+   #       +-----------------------+  | 
               | Cocoa / Aura |   #   +---|    win3: (HTML/JS)    |  |
               +-------+------+   #   |  +-----------------------++  |
                       |          #   +--|    win2: (HTML/JS)    |   | cli
+------------+ +-------+------+   #   | +-----------------------++   |
|            +-+ thrust (C++) +-------+-+    win1: (HTML/JS)    |    |
| ContentAPI | +-------+------+   #     +-----------------------+    |
|            |         |          #                | (TCP/FS)      
| (Blink/v8) | +-------+------+   #     +-----------------------+    |
|            | + JSON RPC srv +---------+ Client App (any Lang) |    | srv
+------------+ +--------------+   #     +-----------------------+    |
                                  #

The API reference as well as links to specific language bindings documentations are availble in the docs/ directory.


Community

Request for API
List of Thrust Users
Thrust7.5k Contest
  • 7.5k max Browser implementation based on Thrust. Coming soon. Ping [email protected] if interested! (Credits to @morganrallen for the awesome idea)
Getting Involved

Features & Roadmap

  • window creation create, show, close resize, minimize, maximize, ...
  • window events close, blur, focus, unresponsive, crashed
  • cross-platform equivalent support on MacOSX, Windows and Linux
  • sessions off the record, custom storage path, custom cookie store
  • kiosk kiosk mode
  • application menu global application menu (MacOSX, X11/Unity)
  • webview webview tag (secure navigation, tabs management)
  • frameless frameless window and draggable regions
  • python python bindings library
  • tray icon tray icon native integration
  • remote thrust specific IPC mechanism for client/server communication
  • protocol specific protocol reigstration (fille://, ...)
  • proxy enable traffic proxying (Tor, header injection, ...)

Building Thrust from Sources

You will generally don't need to build thrust yourself. A binary version of thrust should be automatically fetched by the library you're reyling on at installation.

To build thrust, you'll need to have python 2.7.x and git installed. You can then boostrap the project with:

./scripts/boostrap.py                                

Build both the Release and Debug targets with the following commands:

./scripts/update.py
./scripts/build.py

Note that bootstrap.py may take some time as it checks out brightray and downloads libchromiumcontent for your platform.

Clone this wiki locally