GithubHelp home page GithubHelp logo

illgrenoble / webx-engine Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 3.52 MB

The WebX Engine connects an X11 display to a low latency ZeroMQ transport layer, transforming display and user events using a binary protocol.

License: GNU General Public License v3.0

CMake 0.23% Dockerfile 0.07% C++ 68.14% C 30.19% Shell 0.20% JavaScript 1.17%

webx-engine's Introduction

WebX Engine

X11 in the browser for the modern web.

This project is a Work in Progress

Development

Building from source

Install the following dependencies:

apt install cmake dpkg-dev pkg-config build-essential libzmq3-dev libpng-dev libwebp-dev libjpeg-dev libxdamage-dev libxrender-dev libxext-dev libxfixes-dev libxcomposite-dev libxkbfile-dev libxtst-dev 

Compiling:

cmake .
make

This will compile the WebX server using a single core. To parallel build the project run the following, for example, to build using 4 cores:

make -j 4 webx-engine

Running WebX:

WebX will connect to the XDisplay defined by the DISPLAY variable. Make sure this is set correctly beforing executing

./bin/webx-engine <options>

The following options are available:

Option Description
-i Adds WebX interactive keyboard connector to assist in debugging the server
-k Sets the keyboard layout in the X server (by default WebX will automatically use the existing X11 keyboard)

WebX will expose three zeromq ports.

For the moment these ports are not configurable. Please make sure you open these ports on your firewall

Port Name Description
5555 Connector port When a client requests a connection to WebX, WebX will reply with the collector and publisher ports
5556 Collector port The collector port listens for instructions from the client i.e. mouse and keyboard events
5557 Publisher port The publisher port send instructions to the client i.e. window updates, window images etc.

WebX Relay is a relay client that relays instructions to WebX from web clients connected via websocket. WebX Router is a router used to direct streams of data from multiple clients to a specific webx-engine WebX Session MAnager is a session manager that handles login credentials and spawns new Xorg and window manager processes WebX Web is a library that connects to the relay and renders a remote desktop environment inside the web browser.

Running in standalone

Standalone allows webx-engine to connect to an existing Xorg session and the relay will avoid contacting a router/session manager. This is used for debug purposes.

Run the following script to launch Xorg and XFCE on DISPLAY :20

./run_wm.sh

You can then run webx-engine in standalone:

DISPLAY=:20 bin/webx-engine -s

Running in a VISA instance

Clone the source onto a VISA instance and follow the instructions above to compile the webx-engine

Change the XFCE settings so that it uses compositing:

xfconf-query --channel=xfwm4 --property=/general/use_compositing --type=bool --toggle

When running in the remote desktop of VISA run the command:

bin/webx-engine -s

You then configure a relay to run in standalone too by giving it the IP address of the VISA instance.

webx-engine's People

Contributors

stuartcaunt avatar

Stargazers

Andreas Motl avatar

Watchers

 avatar Baptiste Pichot 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.