DomTerm is implemented by Per Bothner, but makes use of multiple libraries and tools.

The back-end uses Andy Green’s libwebsockets for its http and websockets server and event polling library.

The C back-end was hased on Shuanglei Tao’s ttyd.

An older version of the back-end was Java-based. It made use of Java WebSockets. This is no longer supported, but a simplified Java server is still supported. It uses XMLHttpRequest (“ajax”) and the bundled with JSK.

The older JWebTerminal project was based on similar ideas as DomTerm, but was mostly written in Java using Javafx WebView. Some optional Java code (not used by the default domterm command), including a JavaFX embedding, was written while I worked at Oracle, and is copyright Oracle.

GoldenLayout provides tiling and tabs.

Menubar and context (popup) menus on “generic” platforms (i.e. not Electron, Atom, or Qt) are implemented using jsMenus, which is based on Sam Wray’s nwjs-menu-browser library.

The screenfull.js library by Sindre Sorhus is provides a browser-independent wrapper for entering and exiting Full Screen.

ResizeSensor is used to watch when a DomTerm window or sub-window is re-sized. It is part of Marc J. Schmidt’s CSS Element Queries.

Marijn Haverbeke’s Browser Keymap package provides a simple key-binding manager.

Gregory Pakosz’s Where Am I? library is used to get the absolute path for the current domterm executable.

Eli Gray’s FileSaver.js is for the “Save as HTML” feature.

The wcwidth library (used to determine which characers are “double-width”) has a convoluted history - see the source code. It has been re-factored somewhat for DomTerm.