SwiftTerm是用於Swift應用程序的VT100/XTERM終端模擬器庫,可以嵌入MACOS,iOS應用程序,基於文本,無頭應用程序或其他自定義方案中。它已用於多個可商購的SSH客戶端,包括安全貝類,LA Terminal和Codeedit
檢查API文檔
該存儲庫既包含UI不可知論的終端模擬器引擎,也包含使用Uikit的iOS的前端,也是使用AppKit的MacOS。基於詛咒的終端仿真器(在控制台應用程序中模擬Xterm)作為術語Kit庫的一部分。
示例代碼有幾個最小的Mac和iOS示例應用程序,顯示瞭如何在TerminalApp目錄中使用庫。
Companion App SwiftTermApp構建了一個實際使用此庫的iOS應用程序,並且比該模塊中的測試應用程序更完整,並提供了適當的配置UI。
這是我原始Xtermsharp的港口,它本身是基於Xterm.js的。在這一點上,我認為SwiftTerm是比這兩個(Modulo選擇/可訪問性)更高級的終端模擬器,因為它可以更好地處理UTF,UNICODE和GREPHEME簇,並且對終端仿真的覆蓋率更高。 Xtermsharp通常試圖跟上。
SwiftTerm庫本身包含引擎和前端的源代碼。前端是根據目標平台有條件編譯的。
該引擎位於此目錄中,而MacOS的代碼則屬於Mac下,而iOS代碼則屬於iOS下的iOS。鑑於這兩個共享許多共同特徵,因此共享代碼在Apple下。
SwiftTerm使用Swift Package Manager進行構建,您可以將庫添加到您的項目中,將其用於此項目或該項目的叉子。
MacOS AppKit NSView實現TerminalView是可重複使用的NSView控件,可以通過實現TerminalViewDelegate連接到任何源。
我預計一個常見的方案將是託管本地unix命令,因此我包括LocalProcessTerminalView ,它是將TerminalView連接到Unix pseudo-terminal的實現,並在那裡運行命令。
TerminalView有一個等效的UIKIT UIVIEW實現,它像其NSView Companion一樣是可嵌入且可重複使用的視圖,可以通過實現相同的終端ViewDelegate來連接到您的應用程序。與在Mac上運行的NSVIEW案例不同,鑑於iOS不提供對進程的訪問權限,最常見的情況將是運行本地命令,因此最常見的情況是將此終端連接到遠程主機。連接到遠程系統的最安全方法是使用SSH。
iOS和UIKIT代碼共享許多代碼,該代碼屬於Apple目錄下的代碼。
核心庫當前沒有提供連接到SSH的方便方法,純粹是為了避免額外的依賴性。但是,該GIT模塊引用了一個將預編譯SSH客戶端(Frugghi的Swiftsh)的模塊以及iOS示例中的UIKitSsshTerminalView ,該模塊將iOS的TerminalView連接到SSH連接中。
如果您使用的是Xcode,則有兩個高級項目,一個用於MAC,一個用於TerminalApp目錄中的iOS,一個稱為“ iosterminal.xcodeproj”,另一個稱為“ MacTrynilal.xcodeproj”。
這是需要的,因為如果您在項目中有MAC項目,則Xcode不會為iOS提供代碼完成。所以我不得不將它們分開。兩個項目都引用相同的SwiftTerm軟件包。
使用這些項目時,如果您選擇終端應用程序,它將運行此項目。要運行測試套件,請選擇“ SwiftTerm”目標,然後可以使用“ SwiftTermFuzz”來運行Fuzzer。
您可以使用swift build構建軟件包,然後swift test運行測試套件 - 但請注意,測試套件期望將目錄esctest簽出來運行。如果您想在本地執行此操作,您可以在文件.github/workflows/swift.yml中查看我如何在github操作中運行這些操作。
如果使用Xcode,則可以選擇“ SwiftTerm”項目,然後使用Command-U運行測試套件。
GitHub問題有一系列所需的功能和增強功能
從長遠來看,我還想添加一個TVOS Uiview,這是Linux的SwiftGTK前端。
24位顏色

午夜指揮官

固體UTF-8支持,出色的渲染: 

支持現代應用發出的超鏈接:

iOS支持:

六層支持:


其他有用的文件:
測試套件: