问题标签 [xtermjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4965 浏览

websocket - Xterm.js 和 websockets

我有一个使用 libssh 创建 Linux shell 的 c++ 服务器。我从浏览器中的 javascript 客户端应用程序发送 Linux 命令,例如“ls”或“pwd”ecc ecc。通过 websockets 到 c++ 服务器,然后我在 libssh 缓冲区中写入命令,然后是 /n 和一个线程获取重播。我在 Json 结构中编写重播,并通过 websockets 再次将其发送到 web 客户端。然后我在 textarea 中显示回放,如果回放是纯 ascii 则一切正常。显然,重播 nano 之类的命令是行不通的。所以我想要像 Xterm 这样的 javascript 终端模拟器。但是每个示例都将它连接到 socket.io 或 node.pty。我尝试直接使用 write 但没有显示任何内容。如何将 Xterm.js 连接到 websockets 或可视化通用字符串?

0 投票
1 回答
1756 浏览

node.js - xterm.js 基本演示不工作

因此,我正在尝试创建一个嵌入了终端的网站,并使用 xterm 来执行此操作。到目前为止,我一直在学习 xterm 并试图让基础知识发挥作用,但我一直遇到困难。下面是终端的代码:

0 投票
1 回答
802 浏览

xtermjs - 如何在 xterm.js 中更改选择文本的背景颜色?

在此处输入图片描述默认选择文字背景颜色为白色,如何更改背景颜色?

0 投票
1 回答
1927 浏览

javascript - 受祝福的服务器(Node.js)通过 websocket 到浏览器中的 Xterm.js 客户端

我有的:

  • 运行 Blessed 的 Node.js 脚本和 http/websocket 服务器。
  • 运行 Xterm.js 和 websocket 客户端的浏览器。

我想做的事:

  • 通过 websockets 渲染到 xterm 窗口。

服务器代码:

客户页面:

我遇到的问题是调用 screen.render() 时,客户端上没有显示任何内容。创建我的blessed.screen 时,我尝试使用:

但这也不起作用。在我当前的服务器代码中,我试图欺骗祝福使用connection.send而不是connect.socket.write,因为我认为浏览器websockets只接受'onmessage'事件。像这样:

到目前为止,我所尝试的一切都没有奏效。我在这里做错了什么?或者仅仅是祝福不会与浏览器websockets一起工作。另外,我知道连接正常,因为我可以在两端发送/接收消息。

0 投票
4 回答
3711 浏览

javascript - 将 xterm.js 集成到 Angular

我是 Angular 的新手。我正在尝试使用 xterm.js ( https://xtermjs.org/ ),但显示效果很差。这是渲染: 渲染

我创建了一个 xterm 组件。xterm.component.ts 文件代码为:

我的 xterm.component.html 只包含这个:

我真的不知道该怎么做......提前谢谢你们

0 投票
1 回答
3004 浏览

javascript - xterm.js - 获取当前行文本

我正在开发一个小型xterm.js应用程序(刚刚开始),我想知道当用户按下回车键时如何从当前行获取文本。这是程序:

取自 xterm.js 主页的示例(并已修改)

如您所见,我的尝试涉及每次收到key事件时添加一行文本(或在退格键上删除)。但是,这不起作用,因为它位于异步函数内部。

是否xterm.js附带另一个功能,允许您获取当前行内容,或者是否有其他解决方法?我的谷歌搜索无济于事。

0 投票
1 回答
798 浏览

xtermjs - 如何在 xtermjs 中设置缓冲区的大小?

我知道我可以清除缓冲区。通过.clear()方法。但是我可以根据内存或行数限制缓冲区的大小吗?有人可以帮我解决这个问题或指向文档吗?因为在文档中我找不到明确的解决方案。

0 投票
1 回答
6026 浏览

angular - node_modules/xterm/typings/xterm.d.ts(10,1) 中的错误:错误 TS1084:无效的“参考”指令语法

我正在使用xterm. Angular5但它在运行时抛出错误。

当我运行时ng serve,它会抛出这样的错误

ERROR in node_modules/xterm/typings/xterm.d.ts(10,1): error TS1084: Invalid 'reference' directive syntax

这是我的package.json文件

像这样运行会引发错误

ERROR in node_modules/xterm/typings/xterm.d.ts(10,1): error TS1084: Invalid 'reference' directive syntax

我该如何解决?

0 投票
1 回答
9289 浏览

javascript - 如何让 Xterm.js 正确调整大小?

tl; 博士 我创建了一个 React 包装器来将一组日志消息呈现到终端中,但是调整大小会给出一个奇怪的输出(参见屏幕截图)。(NPM 上有一个 React-Wrapper,但这不适用于我的用例 - 导致屏幕闪烁)

我正在为 Guppy 开发一项功能,我正在为终端输出添加Xterm.js。PR 可以在这里找到。

由于超链接扫描/解析,我添加了 xterm 并且它正在工作。

但我坚持调整大小工作。如果我在应用程序中启动 devServer 并等待一些文本,它将以正确的字母宽度显示。如果我减小尺寸,我会得到一个字母宽度不正确的输出。就像在下面的屏幕截图中一样: 混乱的输出

它在未调整大小的状态下总是看起来正确,但在调整大小后会出现错误的显示 - 所以这将发生在放大和缩小屏幕宽度时。

输出应该类似于以下屏幕截图(可能带有一些换行): 正确的输出

我认为这是由Fit 插件或我使用调整大小观察者处理调整大小的方式引起的,但我不确定。

NaNpxxterm letter 的 span 样式在以下屏幕截图中 的宽度类似于:宽度为 NaNpx 的 CSS 这是由我正在使用的媒体查询引起的吗?我还没有看到,也许我必须暂时禁用所有媒体查询,看看这是否导致了这种行为。

到目前为止我已经尝试过:

  • 包裹this.xterm.fit()成一个setTimeout(func, 0)但没有效果
  • 修改了一些我正在使用的样式,但我没有找到原因。

代码

我正在使用的代码可以在Github 分支 feature-terminal-links上找到,但在这里我想提取我添加的部分以使 Xterm 与 React 一起工作:

  1. 我创建了一个样式组件XtermContainer作为 div,因此我可以添加 Xterm 样式和自己的样式。以下代码在里面render,将成为我们的 xterm.js 容器(innerRef稍后将用于使用ComponentDidMount该容器初始化 Xterm):
  1. componentDidMount使用上面的容器初始化 xterm :
  1. 在也包含终端容器的包装器内添加了react-resize-observerthis.xterm.fit() ,因此我可以在大小更改时触发(在 repo 中有一个setTimeout用于测试的包装器)。
  1. 如果组件正在获取新日志,则componentDidUpdate(prevProps, prevState)用于更新终端并将终端滚动到底部:

我必须找到原因的想法:

  • 检查 ResizeObserver 代码。(见下面的更新)
  • 尝试找出 xterm css 获得 NaN 宽度的原因。Xterm.js 是否使用容器的样式宽度?如果是,则可能未正确设置。

更新

好的,可能不需要调整大小观察器,因为在注释掉<ResizeObserver/>渲染后我得到了相同的行为。所以我认为这是由 xterm.js 或 Guppy 中的 css 引起的。

0 投票
0 回答
69 浏览

xtermjs - 多个终端实例化,回滚不适用于隐形终端

在浏览器中实例化了多个 xterm.js 终端,每个终端在创建时都在一个可见的 div 中(大小和工作都正确),我们向每个远程 shell(例如历史记录)发送一个命令,并将响应正确地发送到每个终端. 返回时只有一个终端可见。对于可见终端,完全回滚有效(假设响应>可见行数)。对于不可见的终端,响应在第一条可见行被裁剪(因此不能回滚)。

尝试了不同的终端可见(第一个,中间,最后一个),并且只有可见终端支持回滚,所有其他终端都在顶部可见行处裁剪。如果其他终端之一可见,并且命令重新运行(例如历史记录),则回滚工作正常(尽管从未超过它之前显示的第一条可见行)。如果该命令没有返回行数 > 最大可见行数,则不需要回滚(因此没有问题)。

有什么办法可以克服这个吗?由于信息可能是并行的,因此不可能集中每个终端。