Possible to run os js as x11 VNC?


Hey guys, saw this recently: https://gist.github.com/andersevenrud/a09a3aef6066d609a18103d721d0b139

Is this supported? If not, how hard would it be to recreate this for ubuntu desktop (or some other debian linux desktop)?

Also how do you install apps onto os js? Say I wanted to install a new text editor onto it (like sublime) how would I do this?


It’s not really supported. That was also for OS.js v2, which soon willl be deprecated. It was basically just a X11 launcher that started OS.js in a WebView (libwebkit).

You cannot install “regular” applications. OS.js only runs web apps.


Thanks for the concise reply ansersevenrud,

I am looking for a replacement for VNC. I never really saw why it was not possible for a regular OS (like linux or microsoft windows) to be built in a client - server way, like web applications. For example for ubuntu, replace gnome or unity with a client server type interface.

Would you know of any software out there that is suitable for this case? Is it possible to build something like this for os js? If so how difficult would it be? would nodeOS be more useful that os js in this case?

2ndly, I have some web applications wrapped up in docker. How hard would it be to build something that would allow these applications to run in os js?

thanks for the quick reply!


This is kinda how Chrome OS works. The main issue with having it all in a client like a browser, is that JavaScript is single-threaded. That sucks for performance. Also there’s no direct hardware access (well, we have some access, and you can implement your own sandbox with libwebit… basically a custom browser) and that, which limits its functionality quite a bit. However, with the upcoming WebAssembly features some of these issues will be resolved.

NodeOS is just the linux userspace utilities written in node. So you got the same performance issues here as well. As far as I know there’s no X11 server or anything like that written for nodeos. The architecture also leans more towards server-type applications.

I’ve been in touch with one of the devs actually (quite some time ago now), and there was a thread about looking into making OS.js run on nodeos, but it never went anywere, really.

You could simply just host them as iframe applications in OS.js. Basically just an url+port that you point to.

That won’t make it possible to make direct usage of the OS.js APIs (non-native application), but it will make existing webapps run fine.


Speaking of this. I’ve made an Xpra client application for OS.js and currently working on the new one for OS.js v3.

It makes it possible to stream native Linux applications. It’s sort of like VNC, but you can stream individual windows instead of the whole desktop.

The library this is built upon is a clone of the official Xpra HTML5 client, I just modernized it a bit:

It also includes a very dumb window manager. Note that it is not actually done yet, but supports most of the features.

In case you’re interested in the original software:


And just a screenshot of streaming Firefox :slight_smile:


crap! That looks epic! Can see potential for this in cloudOS stuff (like google compute). Thanks Andersevenrud!


Please note that all of this is experimental :smiley:

Right now it only uses basic compression and image encoded streams, but the goal is to have full x264 video streams and use more off-loading (currently runs on a single WebWorker, but decoding is handled in main thread :slightly_frowning_face: )

Audio sort of works, but there are some latency issues I need to figure out.

And since I just fired this up to take that screenshot, I realized I forgot to add the mouse scrollwheel to the OS.js implementation :man_facepalming: