问题标签 [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.
curl - 无法使用 XTerm.js 和 WebSockets(基于 PHP)控制终端大小
我正在使用 XTerm.js 编写一个终端共享 Web 应用程序。该应用程序使用由 PHP 编写的自定义服务器处理的 WebSocket 将输入从浏览器发送到主机终端。输入被接收curl
并将curl
输出发送回服务器,然后将其推送到浏览器。不涉及 SSH 客户端库,因此很遗憾,这个问题的答案对我没有帮助。
问题是依赖于知道终端大小的应用程序没有正确缩放,默认为 24 行 x 80 列。当我运行一些通常用于报告终端大小的列时,我得到以下结果:
我使用 xterm-addon-fit 来调整终端的大小,但它只适用于不依赖终端大小的命令的输出,例如ls -l
. 例如,确实依赖它的命令ls
(无参数)或更重要的是vim
仅在假设 24x80 终端大小的情况下呈现其结果。
我尝试使用前面提到的问题中的 SIGWINCH 信号,因为我认为当中间没有 SSH 客户端时它可能会起作用。所以我在浏览器中发送了这样的内容:
但它没有用。
我可以尝试发送这样的东西作为第一个命令:
但是如果窗口大小发生变化,则不能重复,因此终端大小将在启动后固定。
有没有办法用 XTerm.js 动态控制终端大小?如果您想查看实际问题,可以在terminalmirror.com上查看有问题的应用程序。
xtermjs - 如何从 xterm.js 获取 stty 回显模式?
我希望能够知道 xterm.js 中的回显模式何时关闭(例如,输入密码时)。stty 可以报告和更改该信息,但(显然)在等待用户输入密码时无法执行。查询回显状态的 API 是什么?
javascript - 需要 node-pty 导致 TypeError: Object.setPrototypeOf: expected an object or null, got undefined
TL;DR:如果我尝试做var pty = require('node-pty');
结果以TypeError: Object.setPrototypeOf: expected an object or null, got undefined
继续阅读上下文
嗨,我正在尝试通过使用 React 创建终端来构建概念证明。为此,我使用了 xterm-for-react,使它工作正常,而最后一个库的node-pty是我遇到问题的那个。最初我创建了一个文件,我会在其中尝试调用它,它看起来像这样:
我知道它可能不是最好的代码,但我这样做只是为了看看这是否可能。我的计划是从 react 组件中调用函数,如下所示:
但我很惊讶这不起作用,并返回标题中的错误。因此,为了减少噪音,我尝试将我的功能更改为仅控制台日志并满足要求。我的文件现在看起来像这样:
仍然得到同样的错误。我目前不确定这是否可行,或者为什么会发生此错误。尝试在网上查看内容并没有给出任何结果,或者它可能确实有,但我只是做得不对。好吧,感谢阅读,我完全迷路了,所以,如果有人知道一些事情,即使它不是完整的答案,我也会非常感激
xtermjs - 如何定义终端?
我从官方 xterm 网站得到了这个例子
但我总是收到“未捕获的 ReferenceError:未定义终端”
我如何定义终端?
terminal - XTerm js 不处理 term.write 中的特殊字符,如 \n "\u001b[H\u001b[2J\u001b[3J""
我正在使用 Xterm Js 在我的 Web 浏览器中创建一个控制台,到目前为止,我已经在服务器端成功实现了该功能,但是在表示输出时遇到了问题
- 当我在
clear
XTerm 中输入命令时,它会返回\u001b[H\u001b[2J\u001b[3J
我认为是后端的正确输出,但是当我使用term.write
它编写此输出时,它会发布整个字符串而不是清除屏幕 - 我的
ls
命令也是如此,它返回<file_name_1>\n<file_name_2>\n<file_name_3>\n
它打印所有\n
而不是换行。
如何使 XTerm Js 不“清理”输出并使这些特殊字符执行它们各自的任务,例如 \n 换行等,而无需简单地发布字符串。
javascript - 如何跟踪xterm js中的位置
我正在尝试向终端写入一些内容,然后将其删除。所以我需要跟踪第一个字符的光标位置。但由于两者之间可能存在滚动,我需要考虑视口的变化,甚至可能是缓冲区的变化。
到目前为止,我发送\u001B[6n
以获取光标视口位置。当缓冲区的视口发生变化时,有没有办法获取缓冲区位置或获取事件?
javascript - 有没有什么方法可以直接在 Python 中使用 xtermjs 解析器而无需前端渲染?
我想用 xtermjs 处理 python pty 的 ansi 字符。据我所知,没有比 xtermjs 更好的 ansi 解析器,xtermjs 可以处理 nano 和 htop 之类的交互式程序,但其他程序则不能。那么如何在 python 中使用 xtermjs 解析和处理 ansi 字符?
目前我有一个 hacky 解决方案,但它很慢并且需要运行 java 脚本:
我用python制作了一个HTML(包含xtermjs的代码),如下所示:
然后在 Python 中,我运行这个文件并使用 selenium 捕获控制台日志!通过这种方式,我可以获得传递给的那个丑陋字符串的漂亮输出term.write()
PS:我不能使用套接字进行通信。我感谢更好更快的解决方案。
c++ - ncurses curs_set(0) 在 vscode 集成终端中不起作用
目前使用 C++20 编码,使用 Ubuntu WSL2。
使用下面显示的代码,当在 Windows 终端中的 WSL2 中运行程序时,光标将不可见,按预期工作。
但是,当在 vscode 的集成终端中运行 WSL2 中的程序时,光标在整个程序中都是可见的(以防万一,我什至将其设置terminal.integrated.scrollback
为 0)。
该函数在任一终端中运行时curs_set(0)
都不会返回。ERR
这是vscode集成终端的问题吗?有没有办法解决这个问题?
代码:
xtermjs - 如何在 xterm.js 中使用滚动线
我在测试网页中使用 xterm.js:
不幸的是,我没有处理“Page Up”/“Page Down”不起作用(案例ev.keyCode = 33或34)。使用“向下/向上”按钮时,我想向下/向上翻页。可能是我没有正确使用“scrollLines”方法……或者我不理解这个功能。
有人可以帮忙吗?提前非常感谢。
javascript - 使用 xterm.js 粘贴时只听 onData 而不是 onKey
我正在编写一个带有 ssh 终端(xterm.js)的小型 Web 应用程序,并且旁边有一些代码块卡。用户可以通过单击命令按钮在终端中执行命令,或者只需输入或粘贴即可。
我一开始使用 onData,这个 API 允许我输入或粘贴但不能激活特定事件,例如 Ctrl + d 断开连接。
onKey 似乎不错。我写了下面的代码来附加关键事件,复制效果很好,但粘贴不行。
这是我的问题: onKey 和 onData 都监听键盘事件。同时使用这两个功能时,终端写入两次。无论如何,只有在粘贴时才可以监听 onData。