Notebook access to old X11 applications

I am very new to Jupyter so please excuse me if I have got things very wrong.

A long time ago I developed a pro-type three tier system made up of

  1. Java Applet
  2. Server implemented in C++
  3. Normal X11 Application

It allowed one to run X11 applications in a browser that supported Java without having to install an X11 Server. i.e The Java Applet and C++ Server code acted as a X11 Server.

Now Java Applet security changed over time and I believe some people at least were not keen to run/install Java in a browser for security reasons.

Now I am wondering if a similar approach and large parts of the Server code could be used to give items in a NoteBook access to legacy X11 Applications. xclock, xcalc, Lyx etc etc. i.e. replacing the Applet front end.

The server and the Java Applet communicated via TCP/IP sockets.

One advantage of using a Java Applet was that it was relatively easy to deal with the fact that when X11 applications create windows/panels but nothing appears on the screen until there is a following X11 expose request.

The Application is called JavaXServ see As you can see from the Github info it has not been updated in a while.

Would be interested in peoples comments.


In theory, you can exchange custom messages between browser and kernel, which could wrap the data you used to send between the Java applet and your C++ server. You could rewrite the Java applet in JavaScript, and somehow integrate the C++ server as a separate thread in a kernel. Then add some multiplexing between different XWindows to different cell outputs.

But would you really want to go to such lengths to have xeyes show up somewhere in a notebook? The notebook itself is interactive, it’s meant to execute code snippets. What’s the use of squeezing Lyx somewhere in there? Never mind though, don’t let me stop you from having fun :smiley: