PerBothner / DomTerm

DOM/JavaScript-based terminal-emulator/console

Home Page:https://domterm.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

issues with xterm.js support

PerBothner opened this issue · comments

DomTerm now has an option to use xterm.js in a terminal window. This uses xterm.js for the escape sequence processing and rendering (display), but uses"standard" domterm for window management, session management, option processing, and more.

The primary benefit of using xterm.js is speed and possibly memeory usage. It can also do a better job with character-grid graphics. Having a bigger community is also beneficial, though at the cost of more difficulty getting changes accepted.

Critical issues

  • Context menu support.

  • Improvements to link handling. Implement implicit (patern-based) links. Implement hover display. A simple click should not be enough to activate a link, especially if window is unfocused. Instead, require Ctrl to be pressed. (This probably requries changes to xterm.js itself.) Should also be able to activate using context memu.

  • Styling. At the very least we need to be able to select between light mode and dark mode.

Priority enhancements

  • Find mode can probably be implemented using the search addon combined with the existing UI.

  • Basic image support with the image addon

Other issues using xterm.js

  • Variable-width fonts.

  • Handle grapheme clusters. Can probably use the experieemntal registerCharacterJoiner hook.

  • More general image support, including svg.

  • Generally embedded rich html. This could be either as an overlay/background, or as an object in the cell/line data structure.

  • Auto-paging.

  • Shell integration.

  • Line-breaking with pretty-print and folding (show/hide).

  • View mode. Probably doable with an addon.

  • Edit mode. Probably more difficult because the contents of the edit buffer should be ignored when processing process output.

  • Marking ranges of text (for example prompt vs input vs output) that can be styled consistently.