SwiftTerm هي مكتبة محاكي Terminal VT100/Xterm للتطبيقات السريعة التي يمكن تضمينها في MacOS أو تطبيقات iOS أو التطبيقات النصية أو المطلوبة أو سيناريوهات مخصصة أخرى. تم استخدامه في العديد من عملاء SSH المتاحين تجاريًا ، بما في ذلك المحار الآمن والمحطة الطرفية و CODEEDIT
تحقق من وثائق API
يحتوي هذا المستودع على كلا من محرك محاكي طرفي هو واجهة المستخدم اللاأدرالية ، وكذلك الواجهة الأمامية لهذا المحرك لنظام التشغيل iOS باستخدام Uikit و MacOS باستخدام AppKit. يتوفر المحاكي الطرفي القائم على اللعنات (لمحاكاة Xterm داخل تطبيق وحدة التحكم) كجزء من مكتبة Termkit.
نموذج رمز هناك بعض التطبيقات الدنيا لنظام Mac و iOS توضح كيفية استخدام المكتبة داخل دليل TerminalApp .
App App Companion SwiftTermapp يبني تطبيق iOS الفعلي الذي يستخدم هذه المكتبة وهو أكثر اكتمالا من تطبيقات الاختبار في هذه الوحدة ويوفر واجهة مستخدم تكوين مناسب.
هذا هو منفذ لـ XTermSharp الأصلي ، والذي كان يعتمد على XterM.JS. في هذه المرحلة ، أعتبر أن Swiftterm محاكي طرفي أكثر تقدماً من كلاهما (اختيار/إمكانية الوصول إلى Modulo) لأنه يتعامل مع مجموعات UTF و Unicode و Grapheme بشكل أفضل من تلك ولديه تغطية أكثر اكتمالا لمضاهاة الطرفية. تحاول XtermSharp عمومًا مواكبة ذلك.
تحتوي مكتبة SwiftTerm نفسها على رمز المصدر لكل من المحرك والنهاية الأمامية. يتم تجميع الواجهة الأمامية بشكل مشروط بناءً على النظام الأساسي المستهدف.
يقع المحرك في هذا الدليل ، بينما يعيش رمز MacOS تحت نظام التشغيل Mac ، ويعيش Code for iOS ، تحت iOS . بالنظر إلى أن هذين يشتركان في الكثير من السمات الشائعة ، فإن الكود المشترك تحت Apple .
يستخدم SwiftTerm مدير الحزمة Swift للبناء ، ويمكنك إضافة المكتبة إلى مشروعك باستخدام عنوان URL لهذا المشروع أو شوكة منه.
MACOS APPKIT NSVIEW Application TerminalView عبارة عن عنصر تحكم NSVIEW قابل لإعادة الاستخدام يمكن توصيله بأي مصدر عن طريق تطبيق TerminalViewDelegate .
أتوقع أن يكون السيناريو المشترك هو استضافة أمر محلي UNIX ، لذلك قمت بتضمين LocalProcessTerminalView وهو تطبيق يربط TerminalView بمحطة زائفة Unix وتدير أمرًا هناك.
هناك تطبيق Uikit Uiview مكافئ لـ TerminalView والذي مثل NSView Companion هو عرض قابل للتضمين وقابل لإعادة الاستخدام يمكن توصيله بتطبيقك من خلال تطبيق نفس TerminalViewDelegate. على عكس حالة NSView التي تعمل على جهاز Mac ، حيث سيكون سيناريو مشترك هو تشغيل الأوامر المحلية ، نظرًا لأن iOS لا يوفر الوصول إلى العمليات ، فإن السيناريو الأكثر شيوعًا هو توصيل هذه المحطة إلى مضيف بعيد. والطريقة الأكثر أمانًا للاتصال بالنظام البعيد هي مع SSH.
يشارك رمز iOS و Uikit الكثير من الكود ، ويعيش هذا الرمز ضمن دليل Apple.
لا توفر المكتبة الأساسية حاليًا طريقة مريحة للاتصال بـ SSH ، وتجنب التبعية الإضافية. لكن وحدة GIT هذه تشير إلى وحدة نمطية تسحب عميل SSH مسبقًا (Frugghi's Swiftsh) ، إلى جانب UIKitSsshTerminalView في عينة iOS التي تربط TerminalView لنظام التشغيل iOS إلى اتصال SSH.
إذا كنت تستخدم Xcode ، فهناك مشروعان Toplevel ، أحدهما لـ Mac وواحد لنظام iOS في دليل TerminalApp ، أحدهما يسمى "iosterminal.xcodeproj" وواحد يسمى "macterminal.xcodeproj".
هذا مطلوب لأن XCode لا يوفر إكمال رمز لنظام التشغيل iOS إذا كان لديك مشروع MAC في المشروع. لذلك اضطررت إلى تقسيمها. يشير كلا المشروعين إلى نفس الحزمة السريعة.
عند العمل مع هذه المشاريع ، إذا اخترت تطبيق الطرفية ، فسيقوم بتشغيل هذا المشروع. لتشغيل مجموعة الاختبار ، حدد هدف "SwiftTerm" بدلاً من ذلك ، ويمكنك استخدام "SwiftTermFuzz" لتشغيل Fuzzer.
يمكنك استخدام swift build لإنشاء الحزمة ، swift test لتشغيل مجموعة الاختبار - ولكن كن حذرًا من أن مجموعة الاختبار تتوقع أن يتم تشغيل دليل esctest . يمكنك أن ترى كيف أقوم بتشغيل هذه الإجراءات على github في الملف .github/workflows/swift.yml إذا كنت تريد القيام بذلك محليًا.
إذا كنت تستخدم Xcode ، يمكنك تحديد مشروع "SwiftTerm" ، ثم استخدام Command-U لتشغيل مجموعة الاختبار.
تحتوي قضايا Github على قائمة بالميزات والتحسينات المرغوبة
على المدى الطويل ، أريد أيضًا إضافة TVOS UIVIEW ، نهاية SWIFTGTK الأمامية لـ Linux.
لون 24 بت

قائد منتصف الليل

دعم Solid UTF-8 ، تقديم ممتاز: 

يدعم الارتباطات التشعبية المنبعثة من التطبيقات الحديثة:

دعم iOS:

دعم ستة:


مستندات إضافية ومفيدة:
أجنحة الاختبار: