- คอลเลกชันที่รวบรวมตัวอย่างของ แอปพลิเคชันแบบเทอร์มินัล (TUI) หลากหลายตัวที่สร้างด้วย เฟรมเวิร์ก Ratatui
- มี แอปสำหรับการใช้งานหลากหลายประเภท เช่น การมอนิเตอร์ระบบ การสำรวจไฟล์ การวิเคราะห์เครือข่าย และการแสดงผลข้อมูล
- ตัวอย่างเด่นที่แนะนำ ได้แก่ Atuin (จัดการประวัติเชลล์), GitUI (อินเทอร์เฟซ Git), Oatmeal (แชต LLM), Yazi (ตัวจัดการไฟล์) เป็นต้น
- แต่ละโปรเจ็กต์เขียนด้วย ภาษา Rust และมีทั้ง ลิงก์ GitHub และภาพเดโม ให้พร้อม
- เป็นชุดตัวอย่างที่แสดงให้เห็นถึง ความยืดหยุ่นและการใช้งานได้จริงของการพัฒนา Terminal UI ในระบบนิเวศ Rust
ภาพรวม
- หน้า App Showcase ของ Ratatui แสดงรายการแอปพลิเคชัน ส่วนติดต่อผู้ใช้บนเทอร์มินัล (TUI) ที่พัฒนาด้วย Ratatui
- แต่ละรายการประกอบด้วย ลิงก์ไปยัง GitHub repository, คำอธิบายสั้น ๆ, และ ภาพเดโมหรือ GIF
- มีโปรเจ็กต์รวมมากกว่า 27 รายการ ครอบคลุมตั้งแต่เครื่องมือระบบไปจนถึงเกม, AI และการจัดการข้อมูล
รายชื่อแอปพลิเคชันหลัก
Atuin
- แทนที่ประวัติเชลล์แบบเดิมด้วย ฐานข้อมูล SQLite และบันทึกบริบทเพิ่มเติมเมื่อรันคำสั่ง
Bandwhich
- ยูทิลิตี CLI ที่แสดง การใช้งานเครือข่ายแยกตามโปรเซส, การเชื่อมต่อ, IP/โฮสต์ปลายทาง
Binsider
- เครื่องมือสำหรับทำ การวิเคราะห์ไบนารี บนเทอร์มินัล
Bottom
- ระบบมอนิเตอร์แบบข้ามแพลตฟอร์ม ที่แสดงภาพการใช้ทรัพยากร เช่น CPU และหน่วยความจำ
Crossword
- เกมที่ให้เล่น ปริศนาอักษรไขว้ บนเทอร์มินัล
Csvlens
- โปรแกรมดูไฟล์ CSV โดยเฉพาะ คล้ายคำสั่ง
less แต่ปรับให้เหมาะกับโครงสร้าง CSV
Dua
- เครื่องมือวิเคราะห์พื้นที่ดิสก์แบบประมวลผลขนาน พร้อมฟังก์ชันลบอย่างรวดเร็ว
Fzf-make
- เครื่องมือ CLI ที่ใช้ fuzzy finder เพื่อรัน target ของ
make
GitUI
- อินเทอร์เฟซ TUI สำหรับงาน Git ที่พัฒนาด้วย Rust
Gpg-tui
- อินเทอร์เฟซบนเทอร์มินัลสำหรับ GnuPG
Joshuto
- ตัวจัดการไฟล์สไตล์ Ranger ที่เขียนด้วย Rust
Material
- พาเลตสี Material Design สำหรับเทอร์มินัล
Minesweep-rs
- เกม Minesweeper ที่เขียนด้วย Rust
Oatmeal
- แอปแชตบนเทอร์มินัลที่คุยกับ LLM ได้ รองรับแบ็กเอนด์ ChatGPT หรือ Ollama
- มีฟีเจอร์ slash command, UI แบบ chat bubble, และ การเชื่อมต่อกับ Neovim
Oha
- ส่งโหลดไปยังเว็บแอปพลิเคชันและ แสดงผลลัพธ์ผ่าน TUI แบบเรียลไทม์
Oxker
- TUI สำหรับควบคุมและมอนิเตอร์คอนเทนเนอร์ Docker
OpenAPI-tui
- เครื่องมือสำหรับเปิดดู เอกสาร OpenAPI ได้อย่างรวดเร็วบนเทอร์มินัล
Rainfrog
- เครื่องมือเทอร์มินัลขนาดเบาสำหรับโต้ตอบกับฐานข้อมูล
Rucola
- รองรับ การจัดการโน้ต Markdown และแปลงเป็น HTML
Scope-tui
- นำความสามารถของ oscilloscope, vectorscope, spectroscope มาใช้งานบนเทอร์มินัล
Slumber
- รัน ไคลเอนต์ HTTP/REST บนเทอร์มินัล
Steer
- AI coding agent สำหรับการพัฒนาและระบบอัตโนมัติบนเครื่องโลคัล
Taskwarrior-tui
- อินเทอร์เฟซเทอร์มินัลของเครื่องมือจัดการงาน Taskwarrior
Television
- เครื่องมือค้นหาที่ใช้ fuzzy matching algorithm รองรับการสำรวจแหล่งข้อมูลหลากหลาย เช่น ไฟล์, Git และตัวแปรสภาพแวดล้อม
Trippy
- เครื่องมือวินิจฉัยเครือข่าย ที่รวมความสามารถของ Traceroute และ Ping
Xplr
- ตัวสำรวจไฟล์แบบ TUI ที่รวดเร็วและปรับแต่งได้แบบแฮ็กเกอร์
Yazi
- ตัวจัดการไฟล์ความเร็วสูงมากที่ใช้ asynchronous I/O เขียนด้วย Rust
Yozefu
- TUI แบบโต้ตอบสำหรับสำรวจข้อมูลใน Kafka cluster
- รองรับการกรองอย่างละเอียดด้วย ภาษาคิวรีคล้าย SQL
- เป็นทางเลือกแทน AKHQ, Redpanda Console และปลั๊กอิน Kafka ของ JetBrains
ความสำคัญของระบบนิเวศ Ratatui
- แอปทั้งหมดสร้างขึ้นบน เฟรมเวิร์ก Ratatui แสดงให้เห็นถึง ความหลากหลายและความเติบโตของการพัฒนา Terminal UI ในสภาพแวดล้อม Rust
- แต่ละโปรเจ็กต์เปิดเผยเป็น GitHub repository แบบโอเพนซอร์ส ทำให้นักพัฒนาสามารถเข้าไปศึกษาอ้างอิงได้โดยตรง
- สะท้อนว่า Ratatui กำลังกลายเป็น เครื่องมือมาตรฐานสำหรับการพัฒนา CLI/TUI บน Rust
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
น่าสนใจที่ช่วงนี้มี TUI ที่ทำด้วย Rust เยอะมาก
เท่าที่ผมรู้จักก็มี Awesome TUIs, terminaltrove, และ ลิสต์ awesome ของ Ratatui ประมาณนี้
Qt กับ GTK ใหญ่เกินไป, Windows ก็เปลี่ยนบ่อย, ส่วน Electron ก็ไม่อยากแตะ
ช่วงหลัง ๆ terminal คุณภาพดีขึ้นมาก เลยทำแอปเล็ก ๆ ได้ง่ายกว่ามาก
เปรียบเหมือนการสร้างของเจ๋ง ๆ ด้วย LEGO มันง่ายกว่าการปั้นด้วยดินเหนียว ซึ่งเป็นอุปมาที่ตรงมาก
เวลาจะแสดงสถานะข้อมูลเป็นภาพก็ไม่จำเป็นต้องสร้าง browser rendering pipeline ขึ้นมา
อ้างอิงมี ภาพตัวอย่างนี้
terminal รุ่นใหม่อย่าง Ghostty, WezTerm, Kitty, iTerm, Alacritty รองรับ GPU acceleration และสี 24 บิต
แถมเดี๋ยวนี้นักพัฒนาก็ใช้เครื่องมืออย่าง Claude Code, Gemini CLI, Codex ใน terminal มากกว่าใน IDE กันมากขึ้น
มันมีข้อจำกัดเยอะก็จริง แต่เพราะแบบนั้นเลยทำ UI ที่เละเทะได้ยากกว่า
มันเหมาะมากกับซอฟต์แวร์ที่มีความซับซ้อนระดับง่ายถึงกลาง ขอแนะนำ Midnight Commander เป็นตัวอย่าง
การร่วมงานกับดีไซเนอร์ยิ่งนานยิ่งรู้สึกว่ามีความเป็นระบบราชการและไม่มีประสิทธิภาพ
TUI บังคับให้ได้อินเทอร์เฟซที่สะอาด ข้อมูลหนาแน่นสูง และมีพื้นที่ว่างที่ไม่จำเป็นน้อย
เหตุผลที่ TUI กำลังฮิตใน Rust ก็เพราะสถานการณ์ GUI แย่มากจริง ๆ
ดูได้จาก แบบสำรวจไลบรารี GUI ของ Rust
ผมอยากใช้ Qt กับ Rust แต่ไม่อยากใช้ QML, Slint, GTK หรือ UI แบบ immediate mode
ถ้า Rust ไม่มีอะไรที่คล้าย Qt เกิดขึ้นมาจริง ๆ ก็น่าเสียดายมาก
Ratatui เป็นเฟรมเวิร์กที่ใช้งานสนุกมาก เลยไม่เกี่ยวกับการขาด GUI เท่าไร
ในกรณีที่ CLI ไม่พอ แต่ GUI เต็มรูปแบบก็เกินไป TUI เติมช่องว่างตรงกลางนี้ได้ดี
การอ้างอิง parent/child ระหว่าง window-container-button มันชนกับ ownership model ของ Rust
กลไก signal-slot ของ Qt เองก็ทำบน Rust ได้ยากเหมือนกัน
crate ส่วนใหญ่ที่ต้องใช้ยังเป็น WIP หรืออยู่ในสภาพถูกทิ้งร้าง
นอกจาก crate ใหญ่ยอดนิยมไม่กี่ตัวแล้ว เอกสารก็มักอยู่ในระดับ “ไปอ่านเอกสาร C++ เอา”
จะว่าไปก็เพราะ Rust ยังเป็นภาษาที่อายุน้อย แต่ปัญหาใหญ่กว่าน่าจะเป็นการขาด แรงฮึดในการดูแลแพ็กเกจ ของชุมชน
แต่ไม่แน่ใจว่าส่วน GUI ทำด้วย Rust ล้วน ๆ หรือเปล่า
ผมกำลังรอ เว็บเบราว์เซอร์ TUI ที่จะทำให้ใช้ชีวิตอยู่ใน terminal ได้เต็มตัว
ตอนนี้มีเทคโนโลยีอย่าง sixel หรือ shader ที่รองรับกราฟิกแล้ว ดังนั้นถ้าไม่นับวิดีโอ ก็น่าจะทำได้สบาย
การบล็อกโฆษณาก็น่าจะง่ายจนบริษัทต่าง ๆ ไม่ชอบ แต่ถ้าห่อว่าเป็นเบราว์เซอร์สำหรับ LLM ก็อาจพอขายได้
terminal เป็นแค่ character buffer ความละเอียดต่ำ ดังนั้นการเรนเดอร์พิกเซลแบบเร่งด้วย GPU ตรง ๆ มีประสิทธิภาพกว่ามาก
มันรัน Firefox แบบ headless แล้วเรนเดอร์ผลลัพธ์เป็น ASCII บน terminal ดูเจ๋งดี
ตัวอย่างหลัก ๆ คือ Lynx กับ w3m
ขอแนะนำ Markdown viewer ที่ผมทำชื่อ mdfried
ความสามารถในการอ่านต้นฉบับของ Markdown นั้นดีอยู่แล้ว แต่ดูผ่าน browser สะดวกกว่า เลยทำ viewer ที่เรนเดอร์ header เป็นภาพขึ้นมา
ต้องตั้งค่าฟอนต์ครั้งหนึ่ง และรองรับภาพแบบ inline ด้วย
ตอนนี้ใช้ text-sizing protocol ของ Kitty เพื่อเรนเดอร์ได้ตรง ๆ โดยไม่ต้องแปลงเป็นภาพแล้ว
Teletekst ของเนเธอร์แลนด์มี SSH interface ให้ใช้งาน
ตาม บทความนี้ มันสร้างด้วย Ratatui และเข้าใช้งานได้ด้วย
ssh teletekst.nlผมลองทดสอบแอปเล็ก ๆ ที่ทำด้วย Ratatui แล้วตกใจที่แค่ รับข้อความธรรมดา ก็ใช้ CPU ขึ้นไปถึง 8%
ทั้งที่ใช้ตัวอย่างทางการแบบตรง ๆ ก็ยังเป็นแบบนั้น
cargo runใช้โหมด debug โดยปริยายผมอยากรวมโปรเจกต์โอเพนซอร์ส TironCalc ของตัวเองเข้าไปในรีโพหลัก ironcalc
คิดว่าน่าจะเป็นโปรเจกต์ที่เหมาะกับการทำงานด้วย Rust และ Ratatui
แต่พอเห็นโปรเจกต์ edit ของ Microsoft แล้ว ก็เริ่มไม่มั่นใจว่า Ratatui เป็นตัวเลือกที่ดีที่สุดหรือไม่
ขอแนะนำ เกม TUI ที่สร้างด้วย Ratatui ของผม rebels-in-the-sky
เพียงแต่วิดีโอในรีโพเปิดบนอุปกรณ์ของผมไม่ได้
รู้สึกว่าชื่อโพสต์แปลก ๆ อยู่หน่อย
นึกว่าจะเป็นบทความเกี่ยวกับการปฏิวัติ TUI ของ Rust แต่จริง ๆ กลับเป็นการรวมแอปที่สร้างด้วย Ratatui
ฝั่ง Go ก็มี Charm ที่ทำหน้าที่คล้ายกัน
รู้สึกมากขึ้นเรื่อย ๆ ว่าจำเป็นต้องมียูทิลิตีสำหรับรัน เอเจนต์แบบ CLI ใน terminal แยกตามโฟลเดอร์
เช่นอาจนำไปใช้ทำระบบตรวจสอบ legal compliance แบบอัตโนมัติได้
มีทั้ง Cline CLI, Opencode CLI, Codex CLI, Gemini CLI, Claude Code CLI และอีกหลายตัว