javascript-x-server
javascript-x-server copied to clipboard
JavaScript X Server (current protocol prototyping in Node.js, hoping to port to HTML5 for graphics)
JavaScript X Server
Concept
Now
This is currently very much a work in progress, with me learning about how an X11 server operates and it's underlying protocol. A subset of the protocol is now working within Chromium with output to canvas and div elements. Both xlogo and xeyes are 100% functional, with work currently being done to support xfn (with bitmap fonts)!
Future
The project may eventually have both server and client side X processing, allowing for optimisation of the X protocol and compression of Pixmaps before transferring to the client allowing for lightweight remote desktop connections in a web browser.
It'd also be great to experiement with GLX and WebGL to see if there is enough crossover to allow 3d rendering via the browser!
Loose Requirements
- A basic window manager or application (we're talking blackbox wm, xlogo, xeyes, xfd, more complex apps are more likely to hit bugs / unknown features / unimplemented opcodes).
- Developed on Mac, but should also work on Ilnux boxes
Getting started
-
git clone https://github.com/GothAck/javascript-x-server.git xserver; cd xserver -
npm install -
Edit proxy.js:
Change line:
var proxy = new X11Proxy(screen, req.accept('x11-proxy', req.origin));To contain the desired wm/application:
var proxy = new X11Proxy(screen, req.accept('x11-proxy', req.origin), 'xeyes'); -
In one terminal:
grunt; grunt watch(you can just rungrunt) -
In another:
npm start -
Open http://localhost:3000 in a decent browser (currently only Chrome is tested working)