偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

DomTerm:一款為L(zhǎng)inux打造的終端模擬器

系統(tǒng) Linux
了解一下 DomTerm,這是一款終端模擬器和復(fù)用器,帶有 HTML 圖形和其它不多見(jiàn)的功能。

[[264405]]

了解一下 DomTerm,這是一款終端模擬器和復(fù)用器,帶有 HTML 圖形和其它不多見(jiàn)的功能。

DomTerm 是一款現(xiàn)代化的終端模擬器,它使用瀏覽器引擎作為 “GUI 工具包”。這就支持了一些相關(guān)的特性,例如可嵌入圖像和鏈接、HTML 富文本以及可折疊(顯示/隱藏)命令。除此以外,它看起來(lái)感覺(jué)就像一個(gè)功能完整、獨(dú)立的終端模擬器,有著出色 xterm 兼容性(包括鼠標(biāo)處理和 24 位色)和恰當(dāng)?shù)?“裝飾” (菜單)。另外它內(nèi)置支持了會(huì)話管理和副窗口(如同 tmuxGNU Screen 中一樣)、基本輸入編輯(如在 readline 中)以及分頁(yè)(如在 less 中)。

圖 1: DomTerminal 終端模擬器。

圖 1: DomTerminal 終端模擬器。

在以下部分我們將看一看這些特性。我們將假設(shè)你已經(jīng)安裝好了 domterm 。開(kāi)始之前先讓我們概覽一下這項(xiàng)技術(shù)。

前端 vs. 后端

DomTerm 大部分是用 JavaScript 寫(xiě)的,它運(yùn)行在一個(gè)瀏覽器引擎中。它可以是像例如 Chrome 或者 Firefox 一樣的桌面瀏覽器(見(jiàn)圖 3),也可以是一個(gè)內(nèi)嵌的瀏覽器。使用一個(gè)通用的網(wǎng)頁(yè)瀏覽器沒(méi)有問(wèn)題,但是用戶體驗(yàn)卻不夠好(因?yàn)椴藛问菫橥ㄓ玫木W(wǎng)頁(yè)瀏覽而不是為了終端模擬器所打造),并且其安全模型也會(huì)妨礙使用。因此使用內(nèi)嵌的瀏覽器更好一些。

目前以下這些是支持的:

  • qdomterm,使用了 Qt 工具包 和 QtWebEngine
  • 一個(gè)內(nèi)嵌的 Electron(見(jiàn)圖 1)
  • atom-domterm 以 Atom 文本編輯器(同樣基于 Electron)包的形式運(yùn)行 DomTerm,并和 Atom 面板系統(tǒng)集成在一起(見(jiàn)圖 2)
  • 一個(gè)為 JavaFX 的 WebEngine 包裝器,這對(duì) Java 編程十分有用(見(jiàn)圖 4)
  • 之前前端使用 Firefox-XUL ,但是 Mozilla 已經(jīng)終止了 XUL

圖 2:在 Atom 編輯器中的 DomTerm 終端面板。

圖 2:在 Atom 編輯器中的 DomTerm 終端面板。

目前,Electron 前端可能是更好的選擇,緊隨其后的是 Qt 前端。如果你使用 Atom,atom-domterm 也工作得相當(dāng)不錯(cuò)。

后端服務(wù)器是用 C 寫(xiě)的。它管理著偽終端(PTY)和會(huì)話。它同樣也是一個(gè)為前端提供 Javascript 和其它文件的 HTTP 服務(wù)器。domterm 命令啟動(dòng)終端任務(wù)和執(zhí)行其它請(qǐng)求。如果沒(méi)有服務(wù)器在運(yùn)行,domterm 就會(huì)自己來(lái)服務(wù)。后端與服務(wù)器之間的通訊通常是用 WebSockets(在服務(wù)器端是libwebsockets)完成的。然而,JavaFX 的嵌入既不用 Websockets 也不用 DomTerm 服務(wù)器。相反 Java 應(yīng)用直接通過(guò) Java-Javascript 橋接進(jìn)行通訊。

一個(gè)穩(wěn)健的可兼容 xterm 的終端模擬器

DomTerm 看上去感覺(jué)像一個(gè)現(xiàn)代的終端模擬器。它處理鼠標(biāo)事件、24 位色、Unicode、倍寬字符(CJK)以及輸入方式。DomTerm 在 vttest 測(cè)試套件 上工作地十分出色。

其不同尋常的特性包括:

展示/隱藏按鈕(“折疊”): 小三角(如上圖 2)是隱藏/展示相應(yīng)輸出的按鈕。僅需在提示符中添加特定的轉(zhuǎn)義字符就可以創(chuàng)建按鈕。

對(duì)于 readline 和類(lèi)似輸入編輯器的鼠標(biāo)點(diǎn)擊支持: 如果你點(diǎn)擊輸入?yún)^(qū)域,DomTerm 會(huì)向應(yīng)用發(fā)送正確的方向鍵按鍵序列。(可以通過(guò)提示符中的轉(zhuǎn)義字符啟用這一特性,你也可以通過(guò) Alt+點(diǎn)擊 強(qiáng)制使用。)

用 CSS 樣式化終端: 這通常是在 ~/.domterm/settings.ini 里完成的,保存時(shí)會(huì)自動(dòng)重載。例如在圖 2 中,設(shè)置了終端專(zhuān)用的背景色。

一個(gè)更好的 REPL 控制臺(tái)

一個(gè)經(jīng)典的終端模擬器基于長(zhǎng)方形的字符單元格工作的。這在 REPL(命令行)上沒(méi)問(wèn)題,但是并不理想。這里有些通常在終端模擬器中不常見(jiàn)的 REPL 很有用的 DomTerm 特性:

一個(gè)能“打印”圖片、圖形、數(shù)學(xué)公式或者一組可點(diǎn)擊的鏈接的命令: 應(yīng)用可以發(fā)送包含幾乎任何 HTML 的轉(zhuǎn)義字符。(HTML 會(huì)被剔除部分,以移除 JavaScript 和其它危險(xiǎn)特性。)

圖 3 顯示了來(lái)自 gnuplot 會(huì)話的一個(gè)片段。Gnuplot(2.1 或者跟高版本)支持 DormTerm 作為終端類(lèi)型。圖形輸出被轉(zhuǎn)換成 SVG 圖片,然后被打印到終端。我的博客帖子在 DormTerm 上的 Gnuplot 展示在這方面提供了更多信息。

圖 3:Gnuplot 截圖。

圖 3:Gnuplot 截圖。

Kawa 語(yǔ)言有一個(gè)創(chuàng)建并轉(zhuǎn)換幾何圖像值的庫(kù)。如果你將這樣的圖片值打印到 DomTerm 終端,圖片就會(huì)被轉(zhuǎn)換成 SVG 形式并嵌入進(jìn)輸出中。

圖 4:Kawa 中可計(jì)算的幾何形狀。

圖 4:Kawa 中可計(jì)算的幾何形狀。

富文本輸出: 有著 HTML 樣式的幫助信息更加便于閱讀,看上去也更漂亮。圖片 1 的下面面板展示 dormterm help 的輸出。(如果沒(méi)在 DomTerm 下運(yùn)行的話輸出的是普通文本。)注意自帶的分頁(yè)器中的 PAUSED 消息。

包括可點(diǎn)擊鏈接的錯(cuò)誤消息: DomTerm 可以識(shí)別語(yǔ)法 filename:line:column 并將其轉(zhuǎn)化成一個(gè)能在可定制文本編輯器中打開(kāi)文件并定位到行的鏈接。(這適用于相對(duì)路徑的文件名,如果你用 PROMPT_COMMAND 或類(lèi)似的跟蹤目錄。)

編譯器可以偵測(cè)到它在 DomTerm 下運(yùn)行,并直接用轉(zhuǎn)義字符發(fā)出文件鏈接。這比依賴(lài) DomTerm 的樣式匹配要穩(wěn)健得多,因?yàn)樗梢蕴幚砜崭窈推渌址⑶覠o(wú)需依賴(lài)目錄追蹤。在圖 4 中,你可以看到來(lái)自 Kawa Compiler 的錯(cuò)誤消息。懸停在文件位置上會(huì)使其出現(xiàn)下劃線,file: URL 出現(xiàn)在 atom-domterm 消息欄(窗口底部)中。(當(dāng)不用 atom-domterm 時(shí),這樣的消息會(huì)在一個(gè)浮層的框中顯示,如圖 1 中所看到的 PAUSED 消息所示。)

點(diǎn)擊鏈接時(shí)的動(dòng)作是可以配置的。默認(rèn)對(duì)于帶有 #position 后綴的 file: 鏈接的動(dòng)作是在文本編輯器中打開(kāi)那個(gè)文件。

結(jié)構(gòu)化內(nèi)部表示:以下內(nèi)容均以內(nèi)部節(jié)點(diǎn)結(jié)構(gòu)表示:命令、提示符、輸入行、正常和錯(cuò)誤輸出、標(biāo)簽,如果“另存為 HTML”,則保留結(jié)構(gòu)。HTML 文件與 XML 兼容,因此你可以使用 XML 工具搜索或轉(zhuǎn)換輸出。命令 domterm view-saved 會(huì)以一種啟用命令折疊(顯示/隱藏按鈕處于活動(dòng)狀態(tài))和重新調(diào)整窗口大小的方式打開(kāi)保存的 HTML 文件。

內(nèi)建的 Lisp 樣式優(yōu)美打印: 你可以在輸出中包括優(yōu)美打印指令(比如,grouping),這樣斷行會(huì)根據(jù)窗口大小調(diào)整而重新計(jì)算。查看我的文章 DomTerm 中的動(dòng)態(tài)優(yōu)美打印以更深入探討。

基本的內(nèi)建行編輯,帶著歷史記錄(像 GNU readline 一樣): 這使用瀏覽器自帶的編輯器,因此它有著優(yōu)秀的鼠標(biāo)和選擇處理機(jī)制。你可以在正常字符模式(大多數(shù)輸入的字符被指接送向進(jìn)程);或者行模式(通常的字符是直接插入的,而控制字符導(dǎo)致編輯操作,回車(chē)鍵會(huì)向進(jìn)程發(fā)送被編輯行)之間轉(zhuǎn)換。默認(rèn)的是自動(dòng)模式,根據(jù) PTY 是在原始模式還是終端模式中,DomTerm 在字符模式與行模式間轉(zhuǎn)換。

自帶的分頁(yè)器(類(lèi)似簡(jiǎn)化版的 less):鍵盤(pán)快捷鍵控制滾動(dòng)。在“頁(yè)模式”中,輸出在每個(gè)新的屏幕(或者單獨(dú)的行,如果你想一行行地向前移)后暫停;頁(yè)模式對(duì)于用戶輸入簡(jiǎn)單智能,因此(如果你想的話)你無(wú)需阻礙交互式程序就可以運(yùn)行它。

多路復(fù)用和會(huì)話

標(biāo)簽和平鋪: 你不僅可以創(chuàng)建多個(gè)終端標(biāo)簽,也可以平鋪它們。你可以要么使用鼠標(biāo)或鍵盤(pán)快捷鍵來(lái)創(chuàng)建或者切換面板和標(biāo)簽。它們可以用鼠標(biāo)重新排列并調(diào)整大小。這是通過(guò) GoldenLayout JavaScript 庫(kù)實(shí)現(xiàn)的。圖 1 展示了一個(gè)有著兩個(gè)面板的窗口。上面的有兩個(gè)標(biāo)簽,一個(gè)運(yùn)行 Midnight Commander;底下的面板以 HTML 形式展示了 dormterm help 輸出。然而相反在 Atom 中我們使用其自帶的可拖拽的面板和標(biāo)簽。你可以在圖 2 中看到這個(gè)。

分離或重接會(huì)話:tmux 和 GNU screen 類(lèi)似,DomTerm 支持會(huì)話安排。你甚至可以給同樣的會(huì)話接上多個(gè)窗口或面板。這支持多用戶會(huì)話分享和遠(yuǎn)程鏈接。(為了安全,同一個(gè)服務(wù)器的所有會(huì)話都需要能夠讀取 Unix 域接口和一個(gè)包含隨機(jī)密鑰的本地文件。當(dāng)我們有了良好、安全的遠(yuǎn)程鏈接,這個(gè)限制將會(huì)有所放松。)

domterm 命令 類(lèi)似與 tmux 和 GNU screen,它有多個(gè)選項(xiàng)可以用于控制或者打開(kāi)單個(gè)或多個(gè)會(huì)話的服務(wù)器。主要的差別在于,如果它沒(méi)在 DomTerm 下運(yùn)行,dormterm 命令會(huì)創(chuàng)建一個(gè)新的頂層窗口,而不是在現(xiàn)有的終端中運(yùn)行。

tmuxgit 類(lèi)似,dormterm 命令有許多子命令。一些子命令創(chuàng)建窗口或者會(huì)話。另一些(例如“打印”一張圖片)僅在現(xiàn)有的 DormTerm 會(huì)話下起作用。

命令 domterm browse 打開(kāi)一個(gè)窗口或者面板以瀏覽一個(gè)指定的 URL,例如瀏覽文檔的時(shí)候。

獲取并安裝 DomTerm

DomTerm 可以從其 Github 倉(cāng)庫(kù)獲取。目前沒(méi)有提前構(gòu)建好的包,但是有詳細(xì)指導(dǎo)。所有的前提條件在 Fedora 27 上都有,這使得其特別容易被搭建。

 

 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2017-11-27 09:31:40

Linux終端模擬器Xiki

2015-11-16 16:40:04

開(kāi)源終端模擬器

2020-06-01 16:45:44

Linux終端Terminus

2019-02-20 11:24:27

Linux 開(kāi)源操作系統(tǒng)

2014-06-06 10:32:11

Linux終端模擬器

2016-10-13 12:53:06

Linux終端仿真器

2022-04-30 09:49:58

終端工具插件

2014-12-16 10:11:22

2013-11-20 10:56:07

2022-07-28 15:46:08

Linux工具

2021-01-27 13:16:39

ScreenLinux命令

2021-02-16 10:58:50

ScreenLinux命令

2009-03-09 18:08:26

LinuxEvilvte終端模擬器

2009-03-09 21:06:35

LinuxEvilvte終端模擬器

2025-02-25 14:10:21

2020-09-27 09:50:41

eDEX-UILinux終端仿真器

2022-02-14 10:29:40

AndroidLinux模擬器

2009-11-27 14:29:00

Cisco路由器模擬

2022-05-26 17:40:51

Linux開(kāi)源

2009-03-10 19:38:46

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)