Vtm - สภาพแวดล้อมเดสก์ท็อปแบบข้อความ
(github.com/directvt)- Vtm เป็น virtual terminal multiplexer ที่มาในรูปแบบไฟล์ปฏิบัติการเดี่ยว ใช้ห่อหุ้มแอป CLI เพื่อสร้างเดสก์ท็อปแบบข้อความ และเชื่อมช่องว่างระหว่าง TUI กับ GUI
- รันได้เหมือนกันทั้งในหน้าต่าง native และคอนโซลมาตรฐาน พร้อมรองรับ การซ้อนแบบไม่จำกัด ทำให้ใช้งานสภาพแวดล้อมเทอร์มินัลหลายชั้นซ้อนกันได้
vtmจะรันในโหมดเดสก์ท็อป ส่วนvtm --run term [<your_shell>]จะทำงานเป็น terminal emulator แบบสแตนด์อโลน- เมื่อใช้ SSH สามารถเชื่อมต่อด้วย DirectVT protocol ในรูปแบบ
vtm ssh user@host vtmและระบุว่าวิธีนี้มีประสิทธิภาพสูงกว่าการเชื่อมต่อแบบดั้งเดิม - รองรับ Windows 8.1 ขึ้นไป รวมถึงแพลตฟอร์ม Unix-like เช่น Linux, macOS, FreeBSD, NetBSD, OpenBSD แต่ปัจจุบัน การเรนเดอร์หน้าต่าง GUI แบบ native ทำได้เฉพาะบน Windows เท่านั้น
Vtm ทำอะไรได้บ้าง
- Vtm เป็น virtual terminal multiplexer ที่ให้มาในรูปแบบไฟล์ปฏิบัติการเดี่ยว
- รันได้เหมือนกันทั้งในหน้าต่าง native หรือคอนโซลมาตรฐาน
- สามารถห่อหุ้มและรัน แอป CLI ใด ๆ ก็ได้
- รองรับการซ้อนแบบไม่จำกัด เพื่อประกอบเป็นสภาพแวดล้อมเดสก์ท็อปแบบข้อความ
- เป้าหมายคือการมอบเดสก์ท็อปแบบข้อความที่เชื่อม ช่องว่างระหว่าง TUI กับ GUI
โหมดการรัน
-
โหมดเดสก์ท็อป
- เมื่อรัน
vtmจะเริ่มสภาพแวดล้อมเดสก์ท็อป
- เมื่อรัน
-
โหมดเทอร์มินัล
- เมื่อรัน
vtm --run term [<your_shell>]จะสามารถใช้ Vtm เป็น terminal emulator แบบสแตนด์อโลนเต็มรูปแบบได้
- เมื่อรัน
-
การเชื่อมต่อไบนารีผ่าน SSH
- ตัวอย่างการเชื่อมต่อ SSH โดยใช้ DirectVT protocol มีดังนี้
vtm ssh user@host vtm- ระบุว่าวิธีนี้มีประสิทธิภาพสูงกว่าการเชื่อมต่อแบบดั้งเดิม
เดโมและตัวอย่าง
- มีเดโมบน YouTube ให้ดู
- เดโม AnyPlex และ VT2D power ปัจจุบันรันได้เฉพาะบน Windows
vtm --run test
- ตัวอย่างแอป HybridTUI หรือ HTUI มีให้ในรูปแบบแนวคิด
vtm --run calcvtm --run textvtm --run gems
แพลตฟอร์มที่รองรับและข้อจำกัด
-
Windows
- รองรับ Windows 8.1 ขึ้นไป
- รวมถึง Windows Server Core และ Windows PE
-
Unix-like
- Linux
- macOS
- FreeBSD
- NetBSD
- OpenBSD
- กลุ่มระบบปฏิบัติการที่มุ่งตาม POSIX
- มีรายการ Tested Terminals แยกไว้ต่างหาก
- ปัจจุบัน การเรนเดอร์หน้าต่าง GUI แบบ native ทำได้เฉพาะบนแพลตฟอร์ม Windows เท่านั้น
- บนแพลตฟอร์ม Unix-like จำเป็นต้องมี terminal emulator
การเผยแพร่และเอกสาร
- มีไบนารีให้ดาวน์โหลดสำหรับ Linux, Windows และ macOS
- Linux: x86_64, arm64, x86, arm32
- Windows: x86_64, arm64, x86
- macOS: x86_64, arm64
- รายการเอกสาร
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
เคยมีเธรดใหญ่เมื่อ 5 ปีก่อน: https://news.ycombinator.com/item?id=24243521
อาจจะพลาดอะไรที่ชัดเจนไป แต่สงสัยว่านี่เป็น terminal multiplexer (แบบ tmux) หรือเป็น tiling terminal emulator (แบบ iTerm)
ไม่รู้ว่าทำไมถึงจำกัดแบบจงใจให้เปิดได้แค่เทอร์มินัล
เหมือนวนกลับมาครบรอบ สร้าง GUI เพื่อแทนที่ TUI แล้วก็กลับมาทำ GUI ไว้ใน TUI อีกที เทอร์มินัลจงเจริญ
เหตุผลที่ใช้เทอร์มินัลตั้งแต่แรกคือ ไม่ต้องใช้เมาส์ ใช้เครื่องมือ TUI อยู่เยอะ แต่ตัวนี้คงไม่กลายเป็นหนึ่งในนั้น
เคยสงสัยมาตลอดว่า window manager สไตล์ TUI ในเทอร์มินัลเป็นไปได้ไหม นี่เป็นโปรเจกต์ที่เจ๋งจริง ๆ คนทำทำงานได้ดีมาก
แค่สวยอย่างเดียวไม่พอ
https://www.brain-dump.org/projects/dvtm/
ดูลื่นมาก
แต่ในมุมมองของผม ความจำเป็นที่ต้องลากหน้าต่างไปวางและปรับขนาดนั้นค่อนข้างเป็น นิสัยจากสภาพแวดล้อม Windows ดังนั้นนี่อาจเป็นเครื่องมือที่ทำหน้าที่ต่อเมาส์ เหมือนที่ tmux และ Neovim ทำหน้าที่ต่อคีย์บอร์ด
ใน tmux เลย์เอาต์หน้าต่างที่ต้องใช้ก็มีแค่ชุดพาเนล 2x2 แบบคงที่ไม่กี่ชุด และมีวิธีปรับขนาดที่กำหนดไว้ล่วงหน้ากับการสลับเต็มหน้าจอก็พอแล้ว พอมีเครื่องมือที่มีประสิทธิภาพอย่าง telescope และ nvim การสลับทำได้เร็วมากจนไม่จำเป็นต้องจัดทุกหน้าต่างให้มองเห็นพร้อมกัน และจะใช้โมเดลในหัวเกี่ยวกับว่ามีอะไรอยู่ มากกว่าภาพเชิงสายตา เช่น file tree ที่มักอยู่ทางซ้ายของ IDE ส่วนใหญ่ก็ไม่จำเป็น
เมื่อไม่กี่ปีก่อนเคยมีอะไรคล้าย ๆ กัน และเหมือนจะมี UI ที่ซูมได้บางอย่างซึ่งทำงานบน การเชื่อมต่อ ssh ด้วย หา लिंकไม่เจอ แต่สงสัยว่ามีใครนึกออกไหม
kitten ssh user@hostแล้วกดคีย์ ก็จะเปิดพาเนล ssh อีกอันในแท็บเดียวกัน และเท่าที่จำได้สามารถ “ซูม” แท็บให้เต็มหน้าต่างได้https://sw.kovidgoyal.net/kitty/
ssh vtm@netxs.onlineตอนนี้โดเมนนั้นตายไปแล้ว
อยากให้เว็บแอปบางตัวนำ ภาษาการออกแบบแบบข้อความล้วน แบบนี้ไปใช้
กำลังพยายามทำความเข้าใจ ถ้าใช้ tmux อยู่เป็นเกณฑ์เทียบ การเปลี่ยนมาใช้อะไรแบบนี้จะเพิ่ม การจัดการหน้าต่าง/พาเนลด้วยเมาส์ ใช่ไหม?
อยากให้ไอเดียบางส่วนแบบนี้เข้าไปอยู่ใน Zellij