Swiftterm-это библиотека эмуляторов VT100/XTerm терминала для приложений Swift, которая может быть включена в MacOS, приложения iOS, текстовые, безголовые приложения или другие пользовательские сценарии. Он использовался в нескольких коммерчески доступных клиентах SSH, включая безопасные моллюски, LA Terminal и Codeedit
Проверьте документацию API
Этот репозиторий содержит как двигатель эмулятора терминала, который является агностиком пользовательского интерфейса, так и фронтальными средствами для этого двигателя для iOS с использованием UIKIT, так и MacOS с использованием AppKit. Эмулятор терминала на основе проклятий (для эмуляции XERM внутри консольного приложения) доступен как часть библиотеки Termkit.
Пример кода Существует пара минимальных приложений для образцов для Mac и iOS, показывающих, как использовать библиотеку в каталоге TerminalApp .
Приложение Companion SwiftMermapp создает фактическое приложение для iOS, которое использует эту библиотеку и более полное, чем приложения для тестирования в этом модуле, и обеспечивает правильный пользовательский интерфейс конфигурации.
Это порт моего оригинального Xtermsharp, который сам по себе был основан на XTERM.JS. На этом этапе я считаю, что Swiftmer является более продвинутым эмулятором терминала, чем оба из тех (выбор/доступность модуля), поскольку он обрабатывает UTF, Unicode и Grapheme Clusters лучше, чем те, и имеет более полный охват эмуляции терминала. Xtermsharp обычно пытается не отставать.
Сама библиотека Swiftmer содержит исходный код как для двигателя, так и для фронтальных веществ. Передние значения условно скомпилированы на основе целевой платформы.
Двигатель находится в этом каталоге, в то время как код для Macos Lives под Mac и код для iOS живет в соответствии с iOS . Учитывая, что эти два имеют много общих черт, общий код находится под Apple .
Swiftmer использует Swift Package Manager для его сборки, и вы можете добавить библиотеку в свой проект, используя URL -адрес для этого проекта или его вилку.
TerminalView MacOS Appkit NSView TerminalView - это повторный элемент управления NSVIEW, который может быть подключен к любому источнику путем реализации TerminalViewDelegate .
Я ожидаю, что распространенным сценарием будет размещение локальной команды Unix, поэтому я включил LocalProcessTerminalView , которая является реализацией, которая соединяет TerminalView с псевдо-терминалом Unix и запускает команду.
Существует эквивалентная реализация uikit uiview для TerminalView , которая, как и его компаньон NSView, является встроенным и многократным представлением, которое может быть подключено к вашему приложению путем реализации того же TerminalViewDelegate. В отличие от случая NSView, работающего на Mac, где будет общий сценарий для запуска локальных команд, учитывая, что iOS не предлагает доступ к процессам, наиболее распространенным сценарием будет подключить этот терминал на удаленный хост. И самый безопасный способ подключения к удаленной системе - с SSH.
Код iOS и UIKIT делится большим количеством кода, этот код живет в рамках каталога Apple.
Основная библиотека в настоящее время не предоставляет удобный способ подключения к SSH, чтобы избежать дополнительной зависимости. Но этот модуль GIT ссылается на модуль, который тянет предварительно скомпилированный клиент SSH (Swiftsh's Frugghi), а также UIKitSsshTerminalView в образце iOS, который соединяет TerminalView для iOS с SSH -соединением.
Если вы используете Xcode, есть два проекта Toplevel, один для Mac и один для iOS в каталоге TerminalApp, один из которых называется «iosterminal.xcodeproj» и один, называемый «macmerinal.xcodeproj».
Это необходимо, потому что Xcode не предоставляет завершение кода для iOS, если у вас есть проект Mac в проекте. Поэтому мне пришлось их разделить. Оба проекта ссылаются на один и тот же быстрый пакет.
При работе с этими проектами, если вы выберете терминальное приложение, оно будет запускать это. Чтобы запустить тестовый набор, вместо этого выберите цель «Swiftmer», и вы можете использовать «SwiftMermfuzz» для запуска Fuzzer.
Вы можете использовать swift build для построения пакета, и swift test для запуска тестового набора - но быть предупрежденными, что тестовый набор ожидает, что esctest каталога будет проверен для запуска. Вы можете увидеть, как я запускаю их на действиях GitHub в файле .github/workflows/swift.yml если вы хотите сделать это локально.
Если вы используете XCode, вы можете выбрать проект «Swiftmer», а затем использовать Command-U для запуска тестового набора.
GitHub Assues имеет список желаемых функций и улучшений
В более долгосрочной перспективе я также хочу добавить TVOS Uiview, фронт-энд Swiftgtk для Linux.
24 -битный цвет

Полночный командир

Solid UTF-8 поддержка, отличный рендеринг: 

Поддерживает гиперссылки, излучаемые современными приложениями:

Поддержка iOS:

Поддержка шестилель:


Дополнительные и полезные документы:
Тестовые люксы: