X11 on the Web

Using Native Client to run X11 applications in the Browser

The clever minimalism and flexibility of the X-Windows system has allowed it to be ported to a diverse range of platforms. Recently, that flexibility has allowed the X.org server, client libraries, several window managers, and a range of applications to be ported to run stand-alone inside the Chrome web browser using a technology called Native Client. This talk explores the unique challenges of porting X11 to Native Client and the browser.

Native Client (NaCl), is an open-source technology that allows native machine code to run securely sandboxed in the browser. Two layers of sandboxing, a static verification inner sandbox combined with Chrome’s outer process sandbox, ensure users can safely run untrusted applications. Modified GCC and LLVM based toolchains allow applications to target NaCl. An I/O API called PPAPI, mirroring the security constraints of Javascript, is provided to NaCl applications.

This talk will discuss the central porting challenges including: emulation of POSIX APIs—processes, sockets, files—on top of Web-centric APIs, packaging, and protocol transport. I’ll demonstrate several X11 applications running the browser, including Emacs, Tcl/Tk, and Xeyes! We’ll look at how X11 applications can interoperate with our in-browser development environment and discuss how you can use this technology to bring your X11 application to the Web.