Swiftterm es una biblioteca de emuladores terminales VT100/XterM para aplicaciones Swift que se pueden integrar en macOS, aplicaciones iOS, aplicaciones basadas en texto, sin cabeza u otros escenarios personalizados. Se ha utilizado en varios clientes SSH disponibles comercialmente, incluidos mariscos seguros, LA Terminal y Codeedit
Consulte la documentación de la API
Este repositorio contiene un motor de emulador terminal que es agnóstico de la interfaz de usuario, así como frontales para este motor para iOS que usa UIKIT y macOS que usa AppKit. Un emulador terminal basado en Curses (para emular un Xterm dentro de una aplicación de la consola) está disponible como parte de la biblioteca TermKit.
Código de muestra Hay un par de aplicaciones de muestra mínimas para Mac e iOS que muestran cómo usar la biblioteca dentro del directorio TerminalApp .
La aplicación complementaria SwiftterMapp construye una aplicación iOS real que usa esta biblioteca y está más completa que las aplicaciones de prueba en este módulo y proporciona una interfaz de usuario de configuración adecuada.
Este es un puerto de mi XterMsharp original, que se basaba en Xterm.js. En este punto, considero que Swiftter es un emulador terminal más avanzado que ambos (selección/accesibilidad del módulo), ya que maneja los grupos UTF, Unicode y Graxeme mejor que aquellos y tiene una cobertura más completa de la emulación terminal. Xtermsharp generalmente intenta mantenerse al día.
La biblioteca Swiftterm en sí contiene el código fuente tanto para el motor como para los frontales. Los frontales se compilan condicionalmente en función de la plataforma de destino.
El motor está en este directorio, mientras que el código para MacOS vive bajo Mac y código para iOS, vive bajo iOS . Dado que esos dos comparten muchos rasgos comunes, el código compartido está bajo Apple .
SwiftterM usa el Swift Package Manager para su compilación, y puede agregar la biblioteca a su proyecto utilizando la URL para este proyecto o una bifurcación de ella.
La implementación de MACOS AppKit NSView TerminalView es un control NSView reutilizable que se puede conectar a cualquier fuente implementando TerminalViewDelegate .
Anticipo que un escenario común será alojar un comando UNIX local, por lo que he incluido LocalProcessTerminalView , que es una implementación que conecta la TerminalView con un pseudo terminal UNIX y ejecuta un comando allí.
Existe una implementación equivalente de UIKIT UIView para TerminalView que, al igual que su compañero NSView, es una vista integrable y reutilizable que se puede conectar a su aplicación mediante la implementación del mismo terminalViewDelegate. A diferencia del caso NSVIEW que se ejecuta en una Mac, donde un escenario común será ejecutar comandos locales, dado que iOS no ofrece acceso a los procesos, el escenario más común será conectar este terminal a un host remoto. Y la forma más segura de conectarse a un sistema remoto es con SSH.
El código iOS y Uikit comparten gran parte del código, ese código vive bajo el directorio de Apple.
La biblioteca Core actualmente no proporciona una forma conveniente de conectarse a SSH, puramente para evitar la dependencia adicional. Pero este módulo GIT hace referencia a un módulo que extrae a un cliente SSH precompilado (Swiftsh de Frugghi), junto con una vista UIKitSsshTerminalView en la muestra de iOS que conecta la TerminalView para iOS a una conexión SSH.
Si está utilizando XCode, hay dos proyectos de Toplevel, uno para Mac y otro para iOS en el directorio de TerminalApp, uno llamado "Iosterminal.xCodeproj" y uno llamado "MacMerminal.xCodeproj".
Esto es necesario porque XCode no proporciona finalización de código para iOS si tiene un proyecto Mac en el proyecto. Entonces tuve que dividirlos. Ambos proyectos hacen referencia al mismo paquete Swiftterm.
Al trabajar con estos proyectos, si elige la aplicación terminal, ejecutará esta. Para ejecutar el conjunto de pruebas, seleccione el objetivo 'Swiftterm' en su lugar, y puede usar 'SwiftterMfuzz' para ejecutar el fuzzer.
Puede usar swift build para construir el paquete y swift test para ejecutar la suite de prueba, pero tenga en cuenta que la suite de prueba espera que el directorio esctest se revise. Puede ver cómo ejecuto estos en acciones de GitHub en el archivo .github/workflows/swift.yml si desea hacer esto localmente.
Si usa Xcode, puede seleccionar el proyecto "Swiftterm" y luego usar el comandante-U para ejecutar el conjunto de pruebas.
Los problemas de GitHub tienen una lista de características y mejoras deseadas
A largo plazo, también quiero agregar un TVOS UIView, un front-end swiftgtk para Linux.
Color de 24 bits

Comandante de medianoche

Soporte sólido UTF-8, excelente representación: 

Admite hipervínculos emitidos por aplicaciones modernas:

Soporte de iOS:

Soporte de Sixel:


Documentos adicionales y útiles:
Suites de prueba: