问题标签 [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.
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 或可视化通用字符串?
node.js - xterm.js 基本演示不工作
因此,我正在尝试创建一个嵌入了终端的网站,并使用 xterm 来执行此操作。到目前为止,我一直在学习 xterm 并试图让基础知识发挥作用,但我一直遇到困难。下面是终端的代码:
xtermjs - 如何在 xterm.js 中更改选择文本的背景颜色?
在此处输入图片描述默认选择文字背景颜色为白色,如何更改背景颜色?
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一起工作。另外,我知道连接正常,因为我可以在两端发送/接收消息。
javascript - 将 xterm.js 集成到 Angular
我是 Angular 的新手。我正在尝试使用 xterm.js ( https://xtermjs.org/ ),但显示效果很差。这是渲染: 渲染
我创建了一个 xterm 组件。xterm.component.ts 文件代码为:
我的 xterm.component.html 只包含这个:
我真的不知道该怎么做......提前谢谢你们
javascript - xterm.js - 获取当前行文本
我正在开发一个小型xterm.js
应用程序(刚刚开始),我想知道当用户按下回车键时如何从当前行获取文本。这是程序:
取自 xterm.js 主页的示例(并已修改)
如您所见,我的尝试涉及每次收到key
事件时添加一行文本(或在退格键上删除)。但是,这不起作用,因为它位于异步函数内部。
是否xterm.js
附带另一个功能,允许您获取当前行内容,或者是否有其他解决方法?我的谷歌搜索无济于事。
xtermjs - 如何在 xtermjs 中设置缓冲区的大小?
我知道我可以清除缓冲区。通过.clear()
方法。但是我可以根据内存或行数限制缓冲区的大小吗?有人可以帮我解决这个问题或指向文档吗?因为在文档中我找不到明确的解决方案。
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
我该如何解决?
javascript - 如何让 Xterm.js 正确调整大小?
tl; 博士 我创建了一个 React 包装器来将一组日志消息呈现到终端中,但是调整大小会给出一个奇怪的输出(参见屏幕截图)。(NPM 上有一个 React-Wrapper,但这不适用于我的用例 - 导致屏幕闪烁)
我正在为 Guppy 开发一项功能,我正在为终端输出添加Xterm.js。PR 可以在这里找到。
由于超链接扫描/解析,我添加了 xterm 并且它正在工作。
但我坚持调整大小工作。如果我在应用程序中启动 devServer 并等待一些文本,它将以正确的字母宽度显示。如果我减小尺寸,我会得到一个字母宽度不正确的输出。就像在下面的屏幕截图中一样:
它在未调整大小的状态下总是看起来正确,但在调整大小后会出现错误的显示 - 所以这将发生在放大和缩小屏幕宽度时。
输出应该类似于以下屏幕截图(可能带有一些换行):
我认为这是由Fit 插件或我使用调整大小观察者处理调整大小的方式引起的,但我不确定。
NaNpx
xterm letter 的 span 样式在以下屏幕截图中
的宽度类似于:
这是由我正在使用的媒体查询引起的吗?我还没有看到,也许我必须暂时禁用所有媒体查询,看看这是否导致了这种行为。
到目前为止我已经尝试过:
- 包裹
this.xterm.fit()
成一个setTimeout(func, 0)
但没有效果 - 修改了一些我正在使用的样式,但我没有找到原因。
代码
我正在使用的代码可以在Github 分支 feature-terminal-links上找到,但在这里我想提取我添加的部分以使 Xterm 与 React 一起工作:
- 我创建了一个样式组件
XtermContainer
作为 div,因此我可以添加 Xterm 样式和自己的样式。以下代码在里面render
,将成为我们的 xterm.js 容器(innerRef
稍后将用于使用ComponentDidMount
该容器初始化 Xterm):
componentDidMount
使用上面的容器初始化 xterm :
- 在也包含终端容器的包装器内添加了react-resize-observer
this.xterm.fit()
,因此我可以在大小更改时触发(在 repo 中有一个setTimeout
用于测试的包装器)。
- 如果组件正在获取新日志,则
componentDidUpdate(prevProps, prevState)
用于更新终端并将终端滚动到底部:
我必须找到原因的想法:
检查 ResizeObserver 代码。(见下面的更新)- 尝试找出 xterm css 获得 NaN 宽度的原因。Xterm.js 是否使用容器的样式宽度?如果是,则可能未正确设置。
更新
好的,可能不需要调整大小观察器,因为在注释掉<ResizeObserver/>
渲染后我得到了相同的行为。所以我认为这是由 xterm.js 或 Guppy 中的 css 引起的。
xtermjs - 多个终端实例化,回滚不适用于隐形终端
在浏览器中实例化了多个 xterm.js 终端,每个终端在创建时都在一个可见的 div 中(大小和工作都正确),我们向每个远程 shell(例如历史记录)发送一个命令,并将响应正确地发送到每个终端. 返回时只有一个终端可见。对于可见终端,完全回滚有效(假设响应>可见行数)。对于不可见的终端,响应在第一条可见行被裁剪(因此不能回滚)。
尝试了不同的终端可见(第一个,中间,最后一个),并且只有可见终端支持回滚,所有其他终端都在顶部可见行处裁剪。如果其他终端之一可见,并且命令重新运行(例如历史记录),则回滚工作正常(尽管从未超过它之前显示的第一条可见行)。如果该命令没有返回行数 > 最大可见行数,则不需要回滚(因此没有问题)。
有什么办法可以克服这个吗?由于信息可能是并行的,因此不可能集中每个终端。