qtdomterm application is self-contained terminal emulator
based on DomTerm and QtWebEngine.
ldomterm application is similar, but uses an
This LWN article provides background, motivation, and a summary of the functionality.
The name “DomTerm” refers to that it works by manipulating the Document Object Model (DOM) of a browser: the nested structure of elements, text, and attributes. (Also, most other appropriate names were already taken...)
DomTerm is Free Software (open-source) available at https://github.com/PerBothner/DomTerm. The older JWebTerminal project was based on similar concepts, but was mostly written in Java using Javafx WebView.
Architectural re-write (in-progress) to be more like
domterm command automatically starts server if not already running.
In-progress session support.
A front-end based on Electron is now the preferred one.
We now support draggable tabs and panes. This uses GoldenLayout.
An experimental pager with optional automatic pause on each page.
DomTerm now handles the
vttest terminal test program
very well, including BCE (Background Color Erase).
The preferred “backend‘ is now libwebsockets. This is light-weight, does not require Java, is actively maintained, and enables serving http and the WebSockets on the same port.
Support for CJK (Chinese, Japanese, and Korean) characters is improved: Double-width characters now really are two columns wide.
The qtdomterm application is designed to replace your favorite standalone terminal emulator program. It uses QtWebEngine.
Mouse support using xterm protocols, used by
In addition, Alt-Click generates arrow-key events to move the caret
within an input line.
Switchable caret styles (using xterm escape sequences).
You can save the console file as an offline-readable (x)html-file.
Pretty-printing (Common Lisp style) is now handled by DomTerm. This means automatic re-flow on window re-size.
One goal of this project is a stand-alone terminal emulator application that techies can use as a day-to-day terminal emulator, and that also seamlessly provides support for rich text and interaction. That means an embedded web engine.