Reorganize src/common into platform (base, encoding, data, buffer, parser, input), integration (services, terminal), and public API layers. - Move core utilities to common/base/ - Move TextDecoder to common/encoding/ - Move Types, CircularList, Color, TaskQueue, SortedList to common/services/ - Move CoreTerminal, InputHandler, WindowsMode to common/terminal/ - Define ICharset in common/data/Charsets.ts (re-exported from Types) - Update imports across src/, addons/, and test/ - Add per-layer tsconfig.json files and REARCHITECTURE.md - Root common/tsconfig.json remains the composite build entry Co-authored-by: Daniel Imms <Tyriar@users.noreply.github.com>
@xterm/addon-webgl
An addon for xterm.js that enables a WebGL2-based renderer. This addon requires xterm.js v4+.
Install
npm install --save @xterm/addon-webgl
Usage
import { Terminal } from '@xterm/xterm';
import { WebglAddon } from '@xterm/addon-webgl';
const terminal = new Terminal();
terminal.open(element);
terminal.loadAddon(new WebglAddon());
See the full API for more advanced usage.
Handling Context Loss
The browser may drop WebGL contexts for various reasons like OOM or after the system has been suspended. There is an API exposed that fires the webglcontextlost event fired on the canvas so embedders can handle it however they wish. An easy, but suboptimal way, to handle this is by disposing of WebglAddon when the event fires:
const terminal = new Terminal();
const addon = new WebglAddon();
addon.onContextLoss(e => {
addon.dispose();
});
terminal.loadAddon(addon);
Read more about handling WebGL context losses on the Khronos wiki.