2

我正在使用 XTerm.js 编写一个终端共享 Web 应用程序。该应用程序使用由 PHP 编写的自定义服务器处理的 WebSocket 将输入从浏览器发送到主机终端。输入被接收curl并将curl输出发送回服务器,然后将其推送到浏览器。不涉及 SSH 客户端库,因此很遗憾,这个问题的答案对我没有帮助。

问题是依赖于知道终端大小的应用程序没有正确缩放,默认为 24​​ 行 x 80 列。当我运行一些通常用于报告终端大小的列时,我得到以下结果:

> stty size
0 0

> tput lines
24

> tput cols
80

我使用 xterm-addon-fit 来调整终端的大小,但它只适用于不依赖终端大小的命令的输出,例如ls -l. 例如,确实依赖它的命令ls(无参数)或更重要的是vim仅在假设 24x80 终端大小的情况下呈现其结果。

我尝试使用前面提到的问题中的 SIGWINCH 信号,因为我认为当中间没有 SSH 客户端时它可能会起作用。所以我在浏览器中发送了这样的内容:

echo -e "\e[8;30;120t"

但它没有用。

我可以尝试发送这样的东西作为第一个命令:

stty rows 48 cols 160

但是如果窗口大小发生变化,则不能重复,因此终端大小将在启动后固定。

有没有办法用 XTerm.js 动态控制终端大小?如果您想查看实际问题,可以在terminalmirror.com上查看有问题的应用程序。

4

0 回答 0