zellij/zellij-client/assets/terminal.js
Thomas Linford ae8981f7a0
fix(web): focus terminal on init (#4325)
Always focus the terminal during init instead of on a mouse event.
2025-07-31 14:34:26 +02:00

42 lines
1.2 KiB
JavaScript

/**
* Terminal initialization and management
*/
import { build_link_handler } from "./links.js";
/**
* Initialize the terminal with all required addons and configuration
* @returns {object} Object containing term and fitAddon instances
*/
export function initTerminal() {
const term = new Terminal({
fontFamily: "Monospace",
allowProposedApi: true,
scrollback: 0,
});
// for debugging
window.term = term;
const fitAddon = new FitAddon.FitAddon();
const clipboardAddon = new ClipboardAddon.ClipboardAddon();
const { linkHandler, activateLink } = build_link_handler();
const webLinksAddon = new WebLinksAddon.WebLinksAddon(
activateLink,
linkHandler
);
term.options.linkHandler = linkHandler;
const webglAddon = new WebglAddon.WebglAddon();
term.loadAddon(fitAddon);
term.loadAddon(clipboardAddon);
term.loadAddon(webLinksAddon);
webglAddon.onContextLoss((e) => {
// TODO: reload, or?
webglAddon.dispose();
});
term.loadAddon(webglAddon);
term.open(document.getElementById("terminal"));
fitAddon.fit();
term.focus();
return { term, fitAddon };
}