Skip to content
miketheprogrammer edited this page Nov 10, 2014 · 97 revisions

Thrust Application Framework

Logo Thrust

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

For the fist time, 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

Table of Contents


Language bindings

NodeJS

Getting Started
require('node-thrust')(function(err, api) { 
  api.window({ root_url: 'https://breach.cc' }).show();
});
Library
Examples
  • JankyBrowser by @morganrallen, the browser that fits in a gist!
npm install -g \
  https://gist.github.com/morganrallen/f07f59802884bcdcad4a/download

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

[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
+------------+ +--------------+   #     +-----------------------+    |
                                  #

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