O SwiftTerm é uma biblioteca de emulador de terminal VT100/Xterm para aplicativos SWIFT que podem ser incorporados em macos, aplicativos iOS, aplicativos baseados em texto, aplicativos sem cabeça ou outros cenários personalizados. Foi usado em vários clientes SSH disponíveis comercialmente, incluindo moluscos seguros, LA Terminal e CodeEdit
Verifique a documentação da API
Esse repositório contém um mecanismo de emulador de terminal que é agnóstico da interface do usuário, bem como os front-ends para este mecanismo para iOS usando o UIKIT e o macOS usando o AppKit. Um emulador de terminal baseado em maldições (para emular um Xterm dentro de um aplicativo de console) está disponível como parte da biblioteca do Termkit.
Código de exemplo Existem alguns aplicativos de amostra mínima para Mac e iOS mostrando como usar a biblioteca dentro do diretório TerminalApp .
O App Companion SwiftterMapp cria um aplicativo iOS real que usa essa biblioteca e é mais completo do que os aplicativos de teste neste módulo e fornece uma interface de configuração adequada.
Esta é uma porta do meu Xtermsharp original, que foi baseado no XTERM.JS. Nesse ponto, considero o Swiftterm um emulador terminal mais avançado do que ambos (seleção/acessibilidade do módulo), pois lida com os clusters UTF, Unicode e Grapheme melhor que aqueles e tem uma cobertura mais completa da emulação terminal. O XtermSharp geralmente está tentando acompanhar.
A própria biblioteca Swiftterm contém o código-fonte para o motor e para os front-end-ends. Os front-ends são compilados condicionalmente com base na plataforma de destino.
O mecanismo está nesse diretório, enquanto o código para MacOS vive no Mac , e código para iOS, vive no iOS . Dado que esses dois compartilham muitas características comuns, o código compartilhado está sob Apple .
O Swiftterm usa o Swift Package Manager para sua compilação e você pode adicionar a biblioteca ao seu projeto usando o URL para este projeto ou um garfo.
O MacOS Appkit NSView Implementation TerminalView é um controle reutilizável do NSView que pode ser conectado a qualquer fonte implementando o TerminalViewDelegate .
Eu prevê que um cenário comum será hospedar um comando local UNIX, por isso incluí LocalProcessTerminalView , que é uma implementação que conecta o TerminalView a um pseudo-terminal do Unix e executa um comando lá.
Existe uma implementação equivalente do UIKIT UIVIEW para TerminalView , que, como seu Companheiro NSView, é uma visualização incorporável e reutilizável que pode ser conectada ao seu aplicativo implementando o mesmo TerminalViewDelegate. Ao contrário do caso NSView em execução em um Mac, onde um cenário comum será executar comandos locais, já que o iOS não oferece acesso a processos, o cenário mais comum será conectar esse terminal a um host remoto. E a maneira mais segura de se conectar a um sistema remoto é com o SSH.
O código iOS e UIKIT compartilham muito do código, esse código vive no diretório da Apple.
Atualmente, a biblioteca principal não fornece uma maneira conveniente de se conectar ao SSH, apenas para evitar a dependência adicional. Mas este módulo Git faz referência a um módulo que puxa um cliente SSH pré -compilado (Swiftsh de Frugghi), juntamente com um UIKitSsshTerminalView na amostra iOS que conecta o TerminalView para iOS a uma conexão SSH.
Se você estiver usando o Xcode, existem dois projetos de Toplevel, um para Mac e outro para iOS no diretório TerminalApp, um chamado "IOSTERMINAL.XCODEPROJ" e um chamado "MacTerminal.xcodeproj".
Isso é necessário porque o Xcode não fornece a conclusão do código para iOS se você tiver um projeto MAC no projeto. Então eu tive que dividi -los. Ambos os projetos fazem referência ao mesmo pacote Swiftterm.
Ao trabalhar com esses projetos, se você escolher o aplicativo de terminal, ele executará este. Para executar o conjunto de testes, selecione o destino 'Swiftterm' e você pode usar 'SwifttermFuzz' para executar o Fuzzher.
Você pode usar swift build para construir o pacote e swift test para executar o conjunto de testes - mas esteja avisado de que o conjunto de testes espera que o diretório esctest seja checado para ser executado. Você pode ver como eu as executo em ações do GitHub no arquivo .github/workflows/swift.yml se você quiser fazer isso localmente.
Se estiver usando o Xcode, você pode selecionar o projeto "Swiftterm" e, em seguida, usar o Command-U para executar o conjunto de testes.
O Github Issues tem uma lista dos recursos e aprimoramentos desejados
A longo prazo, eu também quero adicionar um TvOS Uiview, um front-end Swiftgtk para Linux.
Cor de 24 bits

Midnight Commander

Suporte sólido UTF-8, excelente renderização: 

Suporta hiperlinks emitidos por aplicativos modernos:

suporte iOS:

Sixel Suporte:


Documentos adicionais e úteis:
Suítes de teste: