Swiftterm est une bibliothèque d'émulation de terminal VT100 / xterm pour des applications SWIFT qui peuvent être intégrées dans des applications macOS, iOS, des applications textuelles, sans tête ou d'autres scénarios personnalisés. Il a été utilisé dans plusieurs clients SSH disponibles dans le commerce, notamment les crustacés sécurisés, LA Terminal et CodeDiT
Vérifiez la documentation de l'API
Ce référentiel contient à la fois un moteur d'émulateur de terminal qui est l'agnostique d'interface utilisateur, ainsi que frontal pour ce moteur pour iOS à l'aide de l'UIKIT et de macOS à l'aide d'AppKit. Un émulateur de terminal basé sur les malédictions (pour imiter un Xterm dans une application de console) est disponible dans le cadre de la bibliothèque TermKit.
Exemple de code Il existe quelques exemples d'applications minimales pour Mac et iOS montrant comment utiliser la bibliothèque dans le répertoire TerminalApp .
L'application Companion SwifttermApp construit une application iOS réelle qui utilise cette bibliothèque et est plus complète que les applications de test de ce module et fournit une interface utilisateur de configuration appropriée.
Il s'agit d'un port de mon xtermsharp d'origine, qui était lui-même basé sur Xterm.js. À ce stade, je considère que Swiftterm est un émulateur terminal plus avancé que les deux (sélection de modulo / accessibilité) car il gère mieux les grappes UTF, Unicode et Grapheme que celles-ci et a une couverture plus complète de l'émulation terminale. Xtermsharp tente généralement de suivre.
La bibliothèque Swiftterm elle-même contient le code source du moteur et des fins frontales. Les frontaux sont compilés conditionnellement en fonction de la plate-forme cible.
Le moteur est dans ce répertoire, tandis que le code pour macOS vit sous Mac et le code pour iOS, vit sous iOS . Étant donné que ces deux partagent beaucoup de traits communs, le code partagé est sous Apple .
Swiftterm utilise le gestionnaire de packages Swift pour sa construction, et vous pouvez ajouter la bibliothèque à votre projet en utilisant l'URL pour ce projet ou une fourche.
Le macOS Appkit NSView Implémentation TerminalView est un contrôle NSView réutilisable qui peut être connecté à n'importe quelle source en implémentant le TerminalViewDelegate .
Je prévois qu'un scénario commun sera d'héberger une commande UNIX locale, j'ai donc inclus LocalProcessTerminalView qui est une implémentation qui connecte le TerminalView à un pseudo-terminal UNIX et y exécute une commande.
Il existe une implémentation UIKit UIVIew équivalente pour TerminalView qui, comme son compagnon NSView, est une vue intégrée et réutilisable qui peut être connectée à votre application en implémentant le même terminalViewDelegate. Contrairement au cas NSView fonctionnant sur un Mac, où un scénario commun sera d'exécuter des commandes locales, étant donné qu'iOS n'offre pas accès aux processus, le scénario le plus courant sera de câbler ce terminal à un hôte distant. Et le moyen le plus sûr de se connecter à un système distant est avec SSH.
Le code iOS et UIKIT partage une grande partie du code, ce code vit dans le répertoire Apple.
La bibliothèque de base ne fournit actuellement pas de moyen pratique de se connecter à SSH, uniquement pour éviter la dépendance supplémentaire. Mais ce module GIT fait référence à un module qui tire un client SSH précompilé (Swiftsh de Frugghi), ainsi qu'un UIKitSsshTerminalView dans l'échantillon iOS qui relie le TerminalView pour iOS à une connexion SSH.
Si vous utilisez Xcode, il y a deux projets Toplevel, un pour Mac et un pour iOS dans le répertoire TerminalApp, un appelé "iosterminal.xcodeproj" et un appelé "macterminal.xcodeproj".
Cela est nécessaire car XCode ne fournit pas de complétion de code pour iOS si vous avez un projet Mac dans le projet. J'ai donc dû les diviser. Les deux projets font référence au même package Swiftterm.
Lorsque vous travaillez avec ces projets, si vous choisissez l'application Terminal, il exécutera celui-ci. Pour exécuter la suite de tests, sélectionnez la cible «Swiftterm» à la place et vous pouvez utiliser «SwiftterMfuzz» pour exécuter le Fuzzer.
Vous pouvez utiliser swift build pour construire le package et swift test pour exécuter la suite de tests - mais soyez averti que la suite de test s'attend à ce que le esctest soit vérifié pour s'exécuter. Vous pouvez voir comment je les exécute sur des actions GitHub dans le fichier .github/workflows/swift.yml si vous souhaitez le faire localement.
Si vous utilisez XCode, vous pouvez sélectionner le projet "Swiftterm", puis utiliser Command-U pour exécuter la suite de tests.
GitHub Issues a une liste des fonctionnalités et améliorations souhaitées
À plus long terme, je souhaite également ajouter un TVOS UIView, un front-end SwiftGTK pour Linux.
Couleur 24 bits

Commandant de minuit

Support UTF-8 solide, excellent rendu: 

Prend en charge les hyperliens émis par les applications modernes:

Support iOS:

Support Sixel:


Documents supplémentaires et utiles:
Suites de test: