加入收藏 | 设为首页 | 会员中心 | 我要投稿 西双版纳站长网 (https://www.0691zz.com.cn/)- 数据计算、IT业界、服务器、教程、云日志!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

DomTerm:一款为Linux打造的终端模拟器

发布时间:2019-05-08 01:26:18 所属栏目:Windows 来源:Per Bothner
导读:了解一下 DomTerm,这是一款终端模拟器和复用器,带有 HTML 图形和其它不多见的功能。 DomTerm 是一款现代化的终端模拟器,它使用浏览器引擎作为 GUI 工具包。这就支持了一些相关的特性,例如可嵌入图像和链接、HTML 富文本以及可折叠(显示/隐藏)命令。
副标题[/!--empirenews.page--]

DomTerm:一款为Linux打造的终端模拟器

了解一下 DomTerm,这是一款终端模拟器和复用器,带有 HTML 图形和其它不多见的功能。

DomTerm 是一款现代化的终端模拟器,它使用浏览器引擎作为 “GUI 工具包”。这就支持了一些相关的特性,例如可嵌入图像和链接、HTML 富文本以及可折叠(显示/隐藏)命令。除此以外,它看起来感觉就像一个功能完整、独立的终端模拟器,有着出色 xterm 兼容性(包括鼠标处理和 24 位色)和恰当的 “装饰” (菜单)。另外它内置支持了会话管理和副窗口(如同 tmuxGNU Screen 中一样)、基本输入编辑(如在 readline 中)以及分页(如在 less 中)。

图 1: DomTerminal 终端模拟器。

在以下部分我们将看一看这些特性。我们将假设你已经安装好了 domterm (如果你需要获取并构建 Dormterm 请跳到本文最后)。开始之前先让我们概览一下这项技术。

前端 vs. 后端

DomTerm 大部分是用 JavaScript 写的,它运行在一个浏览器引擎中。它可以是像例如 Chrome 或者 Firefox 一样的桌面浏览器(见图 3),也可以是一个内嵌的浏览器。使用一个通用的网页浏览器没有问题,但是用户体验却不够好(因为菜单是为通用的网页浏览而不是为了终端模拟器所打造),并且其安全模型也会妨碍使用。因此使用内嵌的浏览器更好一些。

目前以下这些是支持的:

  • qdomterm,使用了 Qt 工具包 和 QtWebEngine
  • 一个内嵌的 Electron(见图 1)
  • atom-domterm 以 Atom 文本编辑器(同样基于 Electron)包的形式运行 DomTerm,并和 Atom 面板系统集成在一起(见图 2)
  • 一个为 JavaFX 的 WebEngine 包装器,这对 Java 编程十分有用(见图 4)
  • 之前前端使用 Firefox-XUL 作为首选,但是 Mozilla 已经终止了 XUL

图 2:在 Atom 编辑器中的 DomTerm 终端面板。

图 2:在 Atom 编辑器中的 DomTerm 终端面板。

目前,Electron 前端可能是最佳选择,紧随其后的是 Qt 前端。如果你使用 Atom,atom-domterm 也工作得相当不错。

后端服务器是用 C 写的。它管理着伪终端(PTY)和会话。它同样也是一个为前端提供 Javascript 和其它文件的 HTTP 服务器。domterm 命令启动终端任务和执行其它请求。如果没有服务器在运行,domterm 就会自己来服务。后端与服务器之间的通讯通常是用 WebSockets(在服务器端是libwebsockets)完成的。然而,JavaFX 的嵌入既不用 Websockets 也不用 DomTerm 服务器。相反 Java 应用直接通过 Java-Javascript 桥接进行通讯。

一个稳健的可兼容 xterm 的终端模拟器

DomTerm 看上去感觉像一个现代的终端模拟器。它处理鼠标事件、24 位色、Unicode、倍宽字符(CJK)以及输入方式。DomTerm 在 vttest 测试套件 上工作地十分出色。

其不同寻常的特性包括:

展示/隐藏按钮(“折叠”): 小三角(如上图 2)是隐藏/展示相应输出的按钮。仅需在提示符中添加特定的转义字符就可以创建按钮。

对于 readline 和类似输入编辑器的鼠标点击支持: 如果你点击输入区域(黄色),DomTerm 会向应用发送正确的方向键按键序列。(可以通过提示符中的转义字符启用这一特性,你也可以通过 Alt+点击 强制使用。)

用 CSS 样式化终端: 这通常是在 ~/.domterm/settings.ini 里完成的,保存时会自动重载。例如在图 2 中,设置了终端专用的背景色。

一个更好的 REPL 控制台

一个经典的终端模拟器基于长方形的字符单元格工作的。这在 REPL(命令行)上没问题,但是并不理想。这里有些通常在终端模拟器中不常见的 REPL 很有用的 DomTerm 特性:

一个能“打印”图片、图形、数学公式或者一组可点击的链接的命令: 应用可以发送包含几乎任何 HTML 的转义字符。(HTML 会被剔除部分,以移除 JavaScript 和其它危险特性。)

图 3 显示了来自 gnuplot 会话的一个片段。Gnuplot(2.1 或者跟高版本)支持 DormTerm 作为终端类型。图形输出被转换成 SVG 图片,然后被打印到终端。我的博客帖子在 DormTerm 上的 Gnuplot 展示在这方面提供了更多信息。

图 3:Gnuplot 截图。

Kawa 语言有一个创建并转换几何图像值的库。如果你将这样的图片值打印到 DomTerm 终端,图片就会被转换成 SVG 形式并嵌入进输出中。

图 4:Kawa 中可计算的几何形状。

图 4:Kawa 中可计算的几何形状。

(编辑:西双版纳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读