Swiftermは、MacOS、iOSアプリケーション、テキストベース、ヘッドレスアプリケーション、またはその他のカスタムシナリオに組み込むことができるSWIFTアプリケーション用のVT100/XTERMターミナルエミュレータライブラリです。安全な貝、LAターミナル、Codeeditなど、いくつかの市販のSSHクライアントで使用されています
APIドキュメントを確認してください
このリポジトリには、UI不可知論者のターミナルエミュレータエンジンと、UIKITを使用したiOSのこのエンジンのフロントエンドと、Appkitを使用したMacOの両方が含まれています。 Cursesベースのターミナルエミュレータ(コンソールアプリケーション内でXtermをエミュレートするため)は、Termkitライブラリの一部として利用できます。
サンプルコードMACおよびIOS用の最小限のサンプルアプリがいくつかあり、 TerminalAppディレクトリ内でライブラリを使用する方法を示しています。
コンパニオンアプリSwiftTermAppは、このライブラリを使用し、このモジュールのテストアプリよりも完全な実際のiOSアプリを構築し、適切な構成UIを提供します。
これは私のオリジナルのXtermSharpのポートであり、それ自体がXterm.jsに基づいていました。この時点で、Swiftermは、UTF、Unicode、およびGraphemeクラスターをそれらよりも優れており、端子エミュレーションをより完全にカバーしているため、それらの両方(モジュロの選択/アクセシビリティ)の両方(モジュロ選択/アクセシビリティ)よりも高度な端末エミュレータであると考えています。 XtermSharpは一般に追いつこうとしています。
Swiftterm Library自体には、エンジンとフロントエンドの両方のソースコードが含まれています。フロントエンドは、ターゲットプラットフォームに基づいて条件付きでコンパイルされます。
エンジンはこのディレクトリにあり、MacOSのコードはMacの下に住んでおり、iOSのコードはiOSの下に住んでいます。これら2つが多くの一般的な特性を共有していることを考えると、共有コードはAppleの下にあります。
Swifttermは、Swift Package Managerをビルドに使用しており、このプロジェクトまたはそのフォークにURLを使用して、プロジェクトにライブラリを追加できます。
MacOS Appkit nsview実装TerminalViewは、ターミナルTerminalViewDelegateを実装することで任意のソースに接続できる再利用可能なnsviewコントロールです。
一般的なシナリオはローカルUNIXコマンドをホストすることになると予想しているので、 LocalProcessTerminalViewを含めました。これには、 TerminalView UNIX擬似末端に接続し、そこでコマンドを実行する実装です。
NSViewコンパニオンのように、同じTerminalViewDelegateを実装することでアプリケーションに接続できる埋め込み可能で再利用可能なビューであるTerminalViewには、同等のUIKIT UIVIEW実装があります。 iOSがプロセスへのアクセスを提供しないことを考えると、ローカルコマンドを実行することが一般的なシナリオであるMacで実行されているNSViewケースとは異なり、最も一般的なシナリオはこの端末をリモートホストに配線することです。また、リモートシステムに接続する最も安全な方法は、SSHを使用することです。
iOSとuikitコードは、そのコードがAppleディレクトリの下に存在する多くのコードを共有しています。
現在、コアライブラリは、純粋に追加の依存関係を回避するために、SSHに接続する便利な方法を提供していません。しかし、このGITモジュールは、iOSサンプルのUIKitSsshTerminalViewとともに、precompiled sshクライアント(frugghiのswiftsh) TerminalViewプルするモジュールを参照しています。
Xcodeを使用している場合、Mac用とTerminalAppディレクトリのiOS用の2つのトップレベルプロジェクト、「iosterminal.xcodeproj」と呼ばれる1つ、もう1つは「macterminal.xcodeproj」と呼ばれます。
プロジェクトにMACプロジェクトがある場合、XcodeはiOSのコード完了を提供しないため、これが必要です。だから私はそれらを分割しなければなりませんでした。どちらのプロジェクトも同じ迅速なパッケージを参照しています。
これらのプロジェクトを使用すると、端末アプリケーションを選択すると、これが実行されます。テストスイートを実行するには、代わりに「swifterm」ターゲットを選択し、「swiftermfuzz」を使用してファザーを実行できます。
swift build使用してパッケージを構築することができ、 swift testテストスイートを実行することができますが、テストスイートはディレクトリesctest実行されることを期待していることに注意してください。これをローカルで行いたい場合は、ファイル.github/workflows/swift.ymlのgithubアクションでこれらをどのように実行するかを確認できます。
Xcodeを使用する場合、「Swiftterm」プロジェクトを選択してから、Command-Uを使用してテストスイートを実行できます。
Githubの問題には、望ましい機能と機能強化のリストがあります
長期的には、Linux用のSwiftGTKフロントエンドであるTVOS Uiviewも追加したいと思います。
24ビット色

真夜中の司令官

堅実なUTF-8サポート、優れたレンダリング: 

最新のアプリによって放出されるハイパーリンクをサポートしてください:

iOSサポート:

Sixelサポート:


追加の有用なドキュメント:
テストスイート: