SwiftTerm เป็นไลบรารี VT100/Xterm Terminal Emulator สำหรับแอปพลิเคชัน SWIFT ที่สามารถฝังลงใน MacOS, แอปพลิเคชัน iOS, แอปพลิเคชันข้อความ, แอปพลิเคชันที่ไม่มีหัวหรือสถานการณ์ที่กำหนดเองอื่น ๆ มันถูกใช้ในไคลเอนต์ SSH ที่มีวางจำหน่ายทั่วไปหลายรายรวมถึง Secure Shellfish, LA Terminal และ Codeedit
ตรวจสอบเอกสาร API
พื้นที่เก็บข้อมูลนี้มีทั้งเครื่องยนต์เทอร์มินัลอีมูเลเตอร์ซึ่งเป็นผู้ไม่เชื่อเรื่องพระเจ้า UI เช่นเดียวกับส่วนหน้าสำหรับเครื่องยนต์นี้สำหรับ iOS โดยใช้ UIKIT และ MACOS โดยใช้ AppKit ตัวจำลองเทอร์มินัลตามคำสาป (เพื่อเลียนแบบ XTERM ภายในแอปพลิเคชันคอนโซล) มีให้เป็นส่วนหนึ่งของไลบรารี TermKit
รหัสตัวอย่าง มีแอพตัวอย่างน้อยที่สุดสำหรับ Mac และ iOS แสดงวิธีใช้ไลบรารีภายในไดเรกทอรี TerminalApp
App Companion SwiftMapp สร้างแอพ iOS จริงที่ใช้ไลบรารีนี้และสมบูรณ์กว่าแอพทดสอบในโมดูลนี้และให้ UI การกำหนดค่าที่เหมาะสม
นี่คือพอร์ตของ Xtermsharp ดั้งเดิมของฉันซึ่งขึ้นอยู่กับ xterm.js ณ จุดนี้ฉันพิจารณาว่า SwiftMer เป็นตัวจำลองเทอร์มินัลขั้นสูงมากกว่าทั้งสอง (การเลือกโมดูโล/การเข้าถึง) เนื่องจากมันจัดการ UTF, Unicode และกลุ่มกราฟที่ดีกว่าที่มีการครอบคลุมการจำลองเทอร์มินัลที่สมบูรณ์ยิ่งขึ้น โดยทั่วไป Xtermsharp พยายามติดตาม
ไลบรารี SwiftTerm มีซอร์สโค้ดสำหรับทั้งเครื่องยนต์และส่วนหน้า ส่วนหน้าจะถูกรวบรวมอย่างมีเงื่อนไขตามแพลตฟอร์มเป้าหมาย
เครื่องยนต์อยู่ในไดเรกทอรีนี้ในขณะที่รหัสสำหรับ MacOS อาศัยอยู่ภายใต้ Mac และรหัสสำหรับ iOS อาศัยอยู่ภายใต้ iOS เนื่องจากทั้งสองมีลักษณะร่วมกันจำนวนมากรหัสที่ใช้ร่วมกันอยู่ภายใต้ Apple
SwiftMerm ใช้ Swift Package Manager สำหรับการสร้างและคุณสามารถเพิ่มไลบรารีลงในโครงการของคุณโดยใช้ URL สำหรับโครงการนี้หรือส้อม
การใช้งาน MacOS AppKit NSView TerminalView เป็นตัวควบคุม NSVIEW ที่นำกลับมาใช้ใหม่ได้ซึ่งสามารถเชื่อมต่อกับแหล่งใด ๆ ได้โดยการใช้ TerminalViewDelegate
ฉันคาดว่าสถานการณ์ทั่วไปจะเป็นโฮสต์คำสั่ง UNIX ท้องถิ่นดังนั้นฉันจึงรวม LocalProcessTerminalView ซึ่งเป็นการดำเนินการที่เชื่อมต่อ TerminalView กับ UNIX Pseudo-terminal และเรียกใช้คำสั่งที่นั่น
มีการใช้งาน UIVIEW UIView ที่เทียบเท่าสำหรับ TerminalView ซึ่งเหมือนกับ NSVIEW Companion เป็นมุมมองแบบฝังและนำกลับมาใช้ใหม่ได้ซึ่งสามารถเชื่อมต่อกับแอปพลิเคชันของคุณได้โดยใช้ TerminalViewDelegate เดียวกัน ซึ่งแตกต่างจากกรณี NSVIEW ที่ทำงานบน MAC ซึ่งสถานการณ์ทั่วไปจะเรียกใช้คำสั่งท้องถิ่นเนื่องจาก iOS ไม่ได้เสนอการเข้าถึงกระบวนการสถานการณ์ที่พบบ่อยที่สุดคือการเชื่อมต่อเทอร์มินัลนี้ไปยังโฮสต์ระยะไกล และวิธีที่ปลอดภัยที่สุดในการเชื่อมต่อกับระบบระยะไกลคือ SSH
รหัส iOS และ UIKIT แบ่งปันรหัสจำนวนมากรหัสนั้นอาศัยอยู่ภายใต้ไดเรกทอรี Apple
ปัจจุบันห้องสมุดหลักไม่ได้ให้วิธีที่สะดวกในการเชื่อมต่อกับ SSH อย่างหมดจดเพื่อหลีกเลี่ยงการพึ่งพาเพิ่มเติม แต่โมดูล Git นี้อ้างอิงโมดูลที่ดึงไคลเอนต์ SSH ที่คอมไพล์ precompiled (Swiftsh ของ Frugghi) พร้อมกับ UIKitSsshTerminalView ในตัวอย่าง iOS ที่เชื่อมต่อ TerminalView สำหรับ iOS กับการเชื่อมต่อ SSH
หากคุณใช้ XCode มีสองโครงการ toplevel หนึ่งโครงการสำหรับ Mac และอีกหนึ่งสำหรับ iOS ในไดเรกทอรี TerminalApp หนึ่งเรียกว่า "iosterminal.xcodeproj" และอีกหนึ่งเรียกว่า "macterminal.xcodeproj"
สิ่งนี้จำเป็นเพราะ XCode ไม่ได้ให้รหัสเสร็จสมบูรณ์สำหรับ iOS หากคุณมีโครงการ MAC ในโครงการ ดังนั้นฉันต้องแยกพวกเขาขึ้น ทั้งสองโครงการอ้างอิงแพ็คเกจ SwiftMer เดียวกัน
เมื่อทำงานกับโครงการเหล่านี้หากคุณเลือกแอปพลิเคชันเทอร์มินัลมันจะเรียกใช้โครงการนี้ ในการเรียกใช้ชุดทดสอบให้เลือกเป้าหมาย 'Swiftterm' แทนและคุณสามารถใช้ 'SwiftTermFuzz' เพื่อเรียกใช้ฟัซเซอร์
คุณสามารถใช้ swift build เพื่อสร้างแพ็คเกจและ swift test เพื่อเรียกใช้ชุดทดสอบ - แต่ควรได้รับการเตือนว่าชุดทดสอบคาดว่าจะมีการตรวจสอบไดเรกทอรี esctest จะตรวจสอบให้ทำงาน คุณสามารถดูว่าฉันเรียกใช้สิ่งเหล่านี้ในการกระทำของ GitHub ในไฟล์ .github/workflows/swift.yml ได้อย่างไรหากคุณต้องการทำสิ่งนี้ในพื้นที่
หากใช้ XCode คุณสามารถเลือกโครงการ "Swiftterm" จากนั้นใช้ Command-U เพื่อเรียกใช้ชุดทดสอบ
ปัญหา GitHub มีรายการคุณสมบัติและการปรับปรุงที่ต้องการ
ในระยะยาวฉันต้องการเพิ่ม tvos uiview ซึ่งเป็น frontgtk front-end สำหรับ Linux
24 บิตสี

ผู้บัญชาการเที่ยงคืน

การสนับสนุน UTF-8 แบบแข็งการเรนเดอร์ที่ยอดเยี่ยม: 

รองรับไฮเปอร์ลิงก์ที่ปล่อยออกมาโดยแอพที่ทันสมัย:

การสนับสนุน iOS:

Sixel Support:


เอกสารเพิ่มเติมและมีประโยชน์:
ชุดทดสอบ: