Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gothack/javascript-x-server
JavaScript X Server (current protocol prototyping in Node.js, hoping to port to HTML5 for graphics)
https://github.com/gothack/javascript-x-server
Last synced: 5 days ago
JSON representation
JavaScript X Server (current protocol prototyping in Node.js, hoping to port to HTML5 for graphics)
- Host: GitHub
- URL: https://github.com/gothack/javascript-x-server
- Owner: GothAck
- License: other
- Created: 2012-12-30T14:28:15.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2016-12-23T05:32:44.000Z (almost 8 years ago)
- Last Synced: 2024-08-03T05:03:29.271Z (3 months ago)
- Language: JavaScript
- Size: 2.23 MB
- Stars: 127
- Watchers: 20
- Forks: 17
- Open Issues: 13
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
1. `git clone https://github.com/GothAck/javascript-x-server.git xserver; cd xserver`
2. `npm install`
3. 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');`
4. In one terminal: `grunt; grunt watch` (you can just run `grunt`)
5. In another: `npm start`
6. Open http://localhost:3000 in a decent browser (currently only Chrome is tested working)