Foremost this is a VTxxx terminal emulator implemented with HTML5 technologies.
However, it supports additional ANSI sequences that contain html, svg or base64 encoded binary image data. Such payloads would create DOM elements in the terminal environment that float on top the console. Basically you'd be able to sorta cat an html snipped or svg file and see it on screen.
Furthermore, the DOM is exposed as a dbus interface and thus can be manipulated by foreign processes implemented in any programming language.
For example, you could write a program with node.js that first console.logs an html snipped into the terminal emulator by embedding it into the aforementioned ANSI sequence. This causes the HTML to be parsed and displayed, making the program's UI appear right inside the terminal. As a second step, the program could listen to user events on dbus and manipulate the state of the DOM elements (also via the dbus interface or via traditional web sockets)
This would be a very powerful setup. Security implications need to be explored however. Probably we need process-level sandboxing like between browser tabs with different origin domains.
Foremost this is a VTxxx terminal emulator implemented with HTML5 technologies.
However, it supports additional ANSI sequences that contain html, svg or base64 encoded binary image data. Such payloads would create DOM elements in the terminal environment that float on top the console. Basically you'd be able to sorta
cat
an html snipped or svg file and see it on screen.Furthermore, the DOM is exposed as a dbus interface and thus can be manipulated by foreign processes implemented in any programming language.
For example, you could write a program with node.js that first
console.log
s an html snipped into the terminal emulator by embedding it into the aforementioned ANSI sequence. This causes the HTML to be parsed and displayed, making the program's UI appear right inside the terminal. As a second step, the program could listen to user events on dbus and manipulate the state of the DOM elements (also via the dbus interface or via traditional web sockets)This would be a very powerful setup. Security implications need to be explored however. Probably we need process-level sandboxing like between browser tabs with different origin domains.