Git Product home page Git Product logo

astilectron's Introduction

astilectron is an Electron app that provides an API over a TCP socket that allows executing Electron's method as well as capturing Electron's events.

Architecture

+-----------------------+    TCP    +-------------+    IPC   +---------------------+
+ Client App (any Lang) |<--------->+ Astilectron +<-------->+ win1: (HTML/JS/CSS) +
+-----------------------+           +-------------+     |    +---------------------++
             |                             |            +---->+ win2: (HTML/JS/CSS) +
             |         +----------+        |               |  +---------------------++
             +---------+ Electron +--------+               +-->+ win3: (HTML/JS/CSS) +
                       +----------+                            +---------------------+

Language bindings

Language bindings play a major role with astilectron as they allow communicating with its TCP socket and therefore interacting with its API in any language.

I want to develop language bindings for a new language

Great! :)

Here's a few things you need to know:

  • it's the responsibility of the language bindings to provision astilectron which usually consists of downloading and unzipping astilectron as well as electron
  • the TCP addr is sent to astilectron through a command line argument therefore your command line when calling astilectron should look like <path to electron executable> <path to astilectron directory>/main.js <tcp addr>

Language bindings for GO

Check out go-astilectron for astilectron GO language bindings

Features and roadmap

  • window basic methods (create, show, close, resize, minimize, maximize, ...)
  • window basic events (close, blur, focus, unresponsive, crashed, ...)
  • remote messaging (messages between GO and the JS in the webserver)
  • multi screens/displays
  • menu methods and events (create, insert, append, popup, clicked, ...)
  • dialogs (open or save file, alerts, ...)
  • accelerators (shortcuts)
  • file methods (drag & drop, ...)
  • clipboard methods
  • power monitor events (suspend, resume, ...)
  • notifications (macosx)
  • desktop capturer (audio and video)
  • session methods
  • session events
  • window advanced options (add missing ones)
  • window advanced methods (add missing ones)
  • window advanced events (add missing ones)
  • child windows

Contribute

For now only GO has its official bindings with astilectron, but the more language has its bindings the better! Therefore if you feel like implementing bindings with astilectron in some other language feel free to reach out to me to get some more info and finally to get your repo listed here.

Also I'm far from being an expert in Node.JS therefore if you see anything that seems wrong in astilectron feel free to create an issue or even better contribute through a PR!

You know you want to! :D

Cheers to

thrust which is awesome but unfortunately not maintained anymore. It inspired this project.

astilectron's People

Contributors

asticode avatar sgraves66 avatar zerokiseki avatar john-devil avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.