看看DomTerm,一个带有HTML图形和其他罕见功能的终端仿真器和多路复用器。

发布者:上海IT外包来源:http://www.lanmon.net点击数:676

DomTerm是一个现代终端模拟器,它使用浏览器引擎作为“GUI工具包”。这支持许多相关功能,例如可嵌入图像和链接,HTML富文本和可折叠(显示/隐藏)命令。此外,它看起来像一个功能齐全的独立终端仿真器,具有出色的xterm兼容性(包括鼠标处理和24位颜色)和适当的“装饰”(菜单)。它还内置了对会话管理和侧窗口(如tmux和GNU屏幕),基本输入编辑(如readline)和分页(如less)的支持。
我们将在以下部分介绍这些功能。我们假设您已经安装了domterm(如果您需要获取并构建Dormterm,请跳到本文末尾)。我们在开始之前先看看这项技术。
前端和后端
大多数DomTerm都是用JavaScript编写的,并在浏览器引擎中运行。它可以是桌面浏览器,如Chrome或Firefox(参见图3)或嵌入式浏览器。使用通用Web浏览器没有问题,但是用户体验不够好(因为菜单用于一般的Web浏览而不是终端模拟器),并且其安全模型可能受到阻碍。所以使用嵌入式浏览器会更好。
目前支持以下内容:
Qdomterm,使用Qt工具包和QtWebEngine
嵌入式电子产品(见图1)
Atom-domterm以Atom文本编辑器(也基于Electron)的形式运行DomTerm,并与Atom面板系统集成(参见图2)。
JavaFX的WebEngine包装器对Java编程非常有用(参见图4)。以前,Firefox-XUL首选作为前端,但Mozilla终止了XUL。
图2:Atom编辑器中的DomTerm终端面板。
目前,Electron前端可能是最佳选择,其次是Qt前端。如果你使用Atom,atom-domterm工作正常。
后端服务器用C语言编写。它管理伪终端(PTY)和会话。它也是一个HTTP服务器,它向前端提供Javascript和其他文件。 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程序提供了更多信息。
Kawa语言有一个用于创建和转换几何图像值的库。如果将此类图像值打印到DomTerm终端,则图像将转换为SVG并嵌入输出中。
丰富的文本输出:HTML样式帮助更容易阅读,看起来更漂亮。图1中的下图显示了dormterm帮助的输出。 (如果未在DomTerm下运行,则输出正常文本。)请注意包含的寻呼机中的PAUSED消息。
带有可点击链接的错误消息:DomTerm识别语法文件名:行:列并将其转换为链接,该链接在可自定义的文本编辑器中打开文件并导航到该行。 (如果使用PROMPT_COMMAND或类似的跟踪目录,则这适用于相对路径文件名。)编译器可以检测到它在DomTerm下运行并直接与转义字符发出文件链接。这比依赖于DomTerm的样式匹配更强大,因为它处理空格和其他字符,并且不依赖于目录跟踪。在图4中,您可以看到来自Kawa Compiler的错误消息。将鼠标悬停在文件位置将为其加下划线,文件: URL将显示在atom-domterm消息栏(窗口底部)中。 (当不使用atom-domterm时,这样的消息将显示在浮动图层框中,如图1中的PAUSED消息所示。)
单击链接时的操作是可配置的。默认情况下,通过在文本编辑器中打开文件来链接带有#position后缀的文件:。结构化内部表示:以下内容由内部节点结构表示:命令,提示,输入行,正常和错误输出,标签,如果“另存为HTML”,则保留结构。 HTML文件与XML兼容,因此您可以使用XML工具来搜索或转换输出。命令domterm view-saved以启用命令折叠(显示/隐藏按钮处于活动状态)和调整窗口大小的方式打开保存的HTML文件。
内置的Lisp样式打印非常优雅:您可以在输出中包含漂亮的打印命令(例如分组),以根据窗口大小调整重新计算换行符。查看我的文章,了解DomTerm中动态和漂亮的打印效果,以便更深入地了解。
带历史记录的基本内置行编辑(如GNU readline):它使用浏览器自己的编辑器,因此它具有出色的鼠标和选择处理机制。您可以处于正常字符模式(输入的大多数字符都参考此过程);或行模式(直接插入普通字符,而控制字符导致编辑操作,输入键将编辑后的行发送到进程)之间进行转换。默认为自动模式。 DomTerm根据PTY处于原始模式还是终端模式在字符模式和行模式之间进行转换。
自包含寻呼机(简化版和简化版):键盘快捷键控制滚动。在页面模式中,输出在每个新屏幕上暂停(如果要逐行前进,则输出单独的行);页面模式对于用户输入而言简单且智能,因此(如果需要)您不需要阻止交互式程序来运行它。
多路复用和会话
标签和图块:您不仅可以创建多个终端标签,还可以平铺它们。您可以使用鼠标或键盘快捷键创建或切换面板和标签。您可以使用鼠标重新排列和调整大小。这是通过GoldenLayout JavaScript库完成的。图1显示了一个带有两个面板的窗口。上面有两个标签,一个是Midnight Commander;底部面板显示HTML中的dormterm帮助输出。相比之下,在Atom中我们使用自己的可拖动面板和标签。您可以在图2中看到这一点。分离或重新连接会话:与tmux和GNU屏幕类似,DomTerm支持会话调度。您甚至可以将多个窗口或面板连接到同一会话。这支持多用户会话共享和远程链接。 (出于安全原因,同一服务器上的所有会话都需要能够读取包含随机密钥的Unix域接口和本地文件。当我们拥有良好,安全的远程链接时,这个限制将会放宽。)domterm命令类似于tmux和GNU屏幕有多个选项可用于控制或打开单个或多个会话的服务器。主要区别在于,如果它没有在DomTerm下运行,则dormterm命令将创建一个新的顶级窗口,而不是在现有终端中运行。
与tmux和git一样,dormterm命令有许多子命令。一些子命令创建窗口或会话。其他(例如“打印”图像)仅在现有的DormTerm会话下工作。
命令domterm browse打开一个窗口或面板以浏览指定的URL,例如浏览文档时。
获取并安装DomTerm
DomTerm可从其Github存储库获得。目前没有提前构建的软件包,但有详细的说明。所有先决条件都可以在Fedora 27上使用,这使得构建非常容易。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部