- เทอร์มินัลอีมูเลเตอร์ข้ามแพลตฟอร์มที่รวดเร็วและมีฟีเจอร์หลากหลาย รองรับ Native UI บน Mac/Linux และใช้การเร่งความเร็วด้วย GPU
- มีคีย์ไบน์ที่ยืดหยุ่น ธีมสีหลากหลาย และตัวเลือกการตั้งค่าจำนวนมาก
คุณสมบัติเด่น
1. ไบนารีแบบเนทีฟ
- ทำงานเป็นแอปพลิเคชันเนทีฟบน macOS และ Linux
- macOS: GUI เขียนด้วย Swift และใช้ AppKit กับ SwiftUI
- Linux: GUI เขียนด้วย Zig และใช้ GTK4 C API
- ใช้องค์ประกอบ UI เฉพาะของแต่ละแพลตฟอร์มเพื่อรองรับฟีเจอร์ต่าง ๆ เช่น แท็บ หน้าต่างแบบแบ่ง และข้อความแสดงข้อผิดพลาด
- รองรับคีย์ลัดคีย์บอร์ดและเมาส์มาตรฐานตามธรรมเนียมของแต่ละแพลตฟอร์ม
- ผสานรวมฟีเจอร์เฉพาะแพลตฟอร์ม
- macOS: Quick Look, Force Touch, API สำหรับ secure input, การกู้คืนสถานะหน้าต่างเมื่อรีสตาร์ต เป็นต้น
2. ฟีเจอร์เทอร์มินัลและแอปพลิเคชันที่หลากหลาย
- ฟีเจอร์ของเทอร์มินัล:
- รองรับ Kitty graphics protocol, การแจ้งเตือนโหมดสว่าง/มืด, ไฮเปอร์ลิงก์ เป็นต้น
- ช่วยให้แอปพลิเคชันเทอร์มินัลอย่าง Neovim, Zellij และอื่น ๆ ใช้งานฟีเจอร์ได้มากขึ้น
- ฟีเจอร์ของแอปพลิเคชัน:
- แท็บแบบเนทีฟ หน้าต่างแบบแบ่ง ดรอปดาวน์เทอร์มินัลสำหรับ macOS การสลับโหมดสว่าง/มืด เป็นต้น
3. ประสิทธิภาพ
- Ghostty ถูกออกแบบโดยตั้งเป้าให้มีประสิทธิภาพทัดเทียมกับเทอร์มินัลอีมูเลเตอร์ที่เร็วที่สุด
- มีความสามารถในการแข่งขันในตัวชี้วัดประสิทธิภาพหลายด้าน และปรับแต่งให้ไม่รู้สึกช้า
- ตัวอย่าง: ความเร็วในการเริ่มต้น ความเร็วในการเลื่อน ปริมาณงาน IO อัตราเฟรม เป็นต้น
- ผู้ใช้กลุ่มแรกประเมินว่าการปรับปรุงประสิทธิภาพของ Ghostty ทำให้การใช้งานประจำวันดีขึ้นอย่างเห็นได้ชัด
สถาปัตยกรรม
- แกนหลักของ Ghostty คือ
libghosttyซึ่งเป็น ไลบรารีที่เข้ากันได้กับ C-ABI แบบข้ามแพลตฟอร์ม- ให้ความสามารถด้านการจำลองเทอร์มินัล การจัดการฟอนต์ และการเรนเดอร์
- แอปพลิเคชัน GUI ทำงานบนพื้นฐานของ
libghostty- แอป macOS: เขียนด้วย Swift ใช้ AppKit และ SwiftUI
- แอป Linux: เขียนด้วย Zig ใช้ GTK4 C API
- การแยกส่วนระหว่างการจำลองเทอร์มินัลกับ GUI อย่างชัดเจน ช่วยสร้างระบบนิเวศที่โปรเจกต์เทอร์มินัลอีมูเลเตอร์ต่าง ๆ สามารถนำ
libghosttyไปใช้ได้ - เป้าหมายในอนาคต:
- ทำให้ API ของ
libghosttyเสถียรและเปิดตัวเป็นไลบรารีแบบสแตนด์อโลน
- ทำให้ API ของ
4 ความคิดเห็น
ในสภาพแวดล้อมของผม
weztermมีอาการหน่วงระหว่างใช้งาน แต่พอเปลี่ยนมาใช้ ghostty ก็ใช้งานได้ดีขึ้น แม้ว่าอาจเป็นเพราะ mb pro ของผมค่อนข้างเก่าแล้วด้วย แต่ ghostty ให้ความรู้สึกที่ลื่นและเบากว่ามากครับกำลังคิดว่าจะลองใช้ดู แต่ถ้าอิงตาม Linux แล้ว มันมีข้อดีที่โดดเด่นกว่า Wezterm ไหม?
พิมพ์ภาษาเกาหลีได้ดีเหมือน Wezterm เลยครับ โดยเฉพาะบน Mac ที่แม้จะเป็นการประกอบแบบ NFC แต่ฟอนต์เกาหลีก็ดูต่างกันออกไป ตรงนี้ดีมากด้วย เหมือนการอัปเดตของ Wez จะหยุดชะงักไปแล้ว
ความคิดเห็นจาก Hacker News
Ghostty คือผลลัพธ์จากการทำงานอย่างทุ่มเทตลอด 2 ปีที่ผ่านมา และหวังว่าผู้คนจำนวนมากจะได้ใช้มันและสัมผัสได้ถึงความรักกับความพยายามที่ใส่ลงไปในนั้น Ghostty ไม่ได้อ้างว่าดีกว่าเทอร์มินัลอื่น ๆ เพราะแต่ละตัวมีเป้าหมายในการออกแบบและจุดแลกเปลี่ยนที่ต่างกัน มีเทอร์มินัลยอดเยี่ยมมากมาย เช่น Kitty, WezTerm, Foot, iTerm2, Rio เป็นต้น
Ghostty เร็วและมีประสิทธิภาพสูง โดยเฉพาะเวลาที่ต้องแสดงข้อมูลดีบักจำนวนมาก เทอร์มินัลจะไม่กลายเป็นคอขวด ซึ่งสร้างความแตกต่างได้มากบนระบบสำหรับพัฒนา
Ghostty เขียนด้วย Zig ได้อย่างยอดเยี่ยมมาก มีการเรนเดอร์ข้อความที่แม่นยำและมีฟีเจอร์ทุกอย่างที่จำเป็น โดยมีการนำโค้ดบางส่วนจาก
Bun.stringWidthของ Bun มาใช้สงสัยว่า Ghostty มีแนวคิดเรื่อง Session/Workspace หรือไม่ และดูเหมือนว่าน่าจะมีสิ่งที่เรียนรู้ได้จากวิธีผสาน Alacritty กับ tmux
Ghostty มีฟีเจอร์ซ่อนอยู่ชื่อ "quake mode" และสามารถตั้งค่าผ่านคีย์ไบน์ดิงเฉพาะบน macOS ได้ ไม่มีตัวเลือกสำหรับกำหนดความสูงเริ่มต้นของหน้าต่าง "quick terminal" แต่สามารถลากหน้าต่างเพื่อปรับได้
หลังจากลองใช้เครื่องมือเทอร์มินัลอีมูเลเตอร์หลายตัวแล้ว ก็เลือกใช้ wave terminal และได้ให้รายชื่อเครื่องมือที่ใช้ได้ทั้งบน macOS และ Linux ส่วน Warp ไม่ได้ใช้เพราะเป็นผลิตภัณฑ์ของ VC
เว็บไซต์ชุมชนที่ช่วยสร้างการตั้งค่า Ghostty นั้นมีประโยชน์
Ghostty เป็นซอฟต์แวร์โอเพนซอร์สคุณภาพสูงที่เพิ่งเปิดตัวเมื่อไม่นานนี้ และทำให้มีความหวังต่ออนาคตที่ไม่ต้องพึ่งการสมัครสมาชิก ขอบคุณ Mitchell
ตอนแรกค่อนข้างสงสัยกับคำว่า "platform-native UI" แต่ก็รู้สึกว่าน่าสนใจตรงที่บน Linux ใช้ GTK และบน macOS ใช้ SwiftUI การได้ลองเทอร์มินัลอีมูเลเตอร์ตัวใหม่เป็นเรื่องสนุกเสมอ น่าเสียดายที่ไม่รองรับฟอนต์ bitmap
บล็อกโพสต์ที่อธิบายบางส่วนของความมหัศจรรย์ใน Ghostty นั้นน่าสนใจ