Frontends including browsers

A frontend is a program that handles the user interface for a session, in a window. A frontend is either a web browser, or some application that has an embedded web engine. You have a number of options for a frontend, with different advantages and limitions. The two most polished frontends at this point are the Electron and Qt frontends.

Multiple different frontends can talk to the same backend at the same time.

Browser quirks and limitions

(These can all change as browsers change or work-arounds are implemented.)

Exiting the inferior process can sometimes fail to automatically close the DomTerm window, due to browser security limitations. It currently works on Google Chrome, but not Firefox.

Saving the console display to a file in a browser may save to the browser’s “Downloads” area. You may be able to save the file elsewhere, depending on the browser and its settings.

Microsoft Edge does at time of writing not handle the tab-size CSS property, so on that browser tab characters are always converted to spaces.

Copy and paste

Copy and Paste menu items are only known to work with the Electron and Qt front-ends. The others may run into security restrictions. A future workaround may be to have the backend handle clipboard access, using programs such as xclip, xsel (older), or pbcopy/pbpaste (Mac OS).

The keyboard shortcuts Ctrl-Shift-C and Ctrl-Shift-V work on all tested platforms.

Middle-button paste seems to work on most frontends (on Linux)..

Note on menus

The Electron and Qt front-ends use their respective menu interfaces, which works well.

Most other frontends use a menu package written in JavaScript that works fairly well, but has some minor issues. One is that all menus are constrained to the main window. Also (as mentioned above) copy and paste menu items may not work due to browser security restrictions.

Electron

Start the Electron frontend (if available) with the --electron option.

Qt

Start the Qt frontend (if available) with the --qt option.

Desktop browser

Modern desktop browsers should work ok, but note the limitations mentioned above (most notabley copy and paste). However, only Firefox and Chrome are tested frequently.

Firefox

To open a Firefox window or tab use the --firefox specifier. Recent versions of Firefox should work well.

Exiting the inferior process (such as by typing exit in a shell) does not automatically close the browser window.

Chrome

To open a Google Chrome window or tab use the --chrome specifier.

The --chrome-app specifier creates a top-level Chrome window without the standard Chrome location bar or other header “chrome”.

Embedded in other environments

Atom

There is a fairly nice package for embedding DomTerm panes in the Atom text editor framework. See the repository.

Theia

There is an experimental package for the Theia IDE. See this fork.