2 คะแนน โดย GN⁺ 2025-11-07 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • คอลเลกชันที่รวบรวมตัวอย่างของ แอปพลิเคชันแบบเทอร์มินัล (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 ความคิดเห็น

 
GN⁺ 2025-11-07
ความคิดเห็นจาก Hacker News
  • น่าสนใจที่ช่วงนี้มี TUI ที่ทำด้วย Rust เยอะมาก
    เท่าที่ผมรู้จักก็มี Awesome TUIs, terminaltrove, และ ลิสต์ awesome ของ Ratatui ประมาณนี้

    • ทุกวันนี้แทบไม่มี แพลตฟอร์ม GUI เดสก์ท็อป ที่ดีจริง ๆ แล้ว ทำให้ terminal กลายเป็นสภาพแวดล้อมที่น่าสนใจกว่าแทน
      Qt กับ GTK ใหญ่เกินไป, Windows ก็เปลี่ยนบ่อย, ส่วน Electron ก็ไม่อยากแตะ
      ช่วงหลัง ๆ terminal คุณภาพดีขึ้นมาก เลยทำแอปเล็ก ๆ ได้ง่ายกว่ามาก
      เปรียบเหมือนการสร้างของเจ๋ง ๆ ด้วย LEGO มันง่ายกว่าการปั้นด้วยดินเหนียว ซึ่งเป็นอุปมาที่ตรงมาก
    • ไลบรารี TUI ต่าง ๆ ช่วย abstract ความซับซ้อนระดับล่าง ของการเรนเดอร์ terminal ได้ดีมาก จนตอนนี้ terminal ให้ความรู้สึกเหมือน canvas ภายใน IDE
      เวลาจะแสดงสถานะข้อมูลเป็นภาพก็ไม่จำเป็นต้องสร้าง browser rendering pipeline ขึ้นมา
      อ้างอิงมี ภาพตัวอย่างนี้
    • TUI ส่วนใหญ่เป็น cross-platform และใช้งานได้ตรง ๆ ใน terminal เลย ทำให้การสลับบริบทน้อยลง
      terminal รุ่นใหม่อย่าง Ghostty, WezTerm, Kitty, iTerm, Alacritty รองรับ GPU acceleration และสี 24 บิต
      แถมเดี๋ยวนี้นักพัฒนาก็ใช้เครื่องมืออย่าง Claude Code, Gemini CLI, Codex ใน terminal มากกว่าใน IDE กันมากขึ้น
    • สำหรับนักพัฒนาที่ต้องทนกับ เว็บอินเทอร์เฟซแย่ ๆ มานาน TUI คือทางเลือกใหม่ที่สดชื่น
      มันมีข้อจำกัดเยอะก็จริง แต่เพราะแบบนั้นเลยทำ UI ที่เละเทะได้ยากกว่า
      มันเหมาะมากกับซอฟต์แวร์ที่มีความซับซ้อนระดับง่ายถึงกลาง ขอแนะนำ Midnight Commander เป็นตัวอย่าง
    • สำหรับผม TUI คือทางหนีจากโลกของ GUI ที่ออกแบบเกินความจำเป็น ในยุคนี้
      การร่วมงานกับดีไซเนอร์ยิ่งนานยิ่งรู้สึกว่ามีความเป็นระบบราชการและไม่มีประสิทธิภาพ
      TUI บังคับให้ได้อินเทอร์เฟซที่สะอาด ข้อมูลหนาแน่นสูง และมีพื้นที่ว่างที่ไม่จำเป็นน้อย
  • เหตุผลที่ TUI กำลังฮิตใน Rust ก็เพราะสถานการณ์ GUI แย่มากจริง ๆ
    ดูได้จาก แบบสำรวจไลบรารี GUI ของ Rust
    ผมอยากใช้ Qt กับ Rust แต่ไม่อยากใช้ QML, Slint, GTK หรือ UI แบบ immediate mode
    ถ้า Rust ไม่มีอะไรที่คล้าย Qt เกิดขึ้นมาจริง ๆ ก็น่าเสียดายมาก

    • ที่จริงคนทำ TUI ด้วย Rust ก็ทำเพราะ ชอบ TUI กันอยู่แล้ว
      Ratatui เป็นเฟรมเวิร์กที่ใช้งานสนุกมาก เลยไม่เกี่ยวกับการขาด GUI เท่าไร
    • GUI ไม่ว่าจะใช้ภาษาไหนก็มีภาระเรื่อง testing, accessibility, i18n สูง
      ในกรณีที่ CLI ไม่พอ แต่ GUI เต็มรูปแบบก็เกินไป TUI เติมช่องว่างตรงกลางนี้ได้ดี
    • เหตุผลที่เฟรมเวิร์ก GUI แบบดั้งเดิมทำได้ยากใน Rust คือโครงสร้าง การอ้างอิงแบบวนรอบ
      การอ้างอิง parent/child ระหว่าง window-container-button มันชนกับ ownership model ของ Rust
      กลไก signal-slot ของ Qt เองก็ทำบน Rust ได้ยากเหมือนกัน
    • ผมเองก็รู้สึกว่า ecosystem GUI ของ Rust ลำบากมาก
      crate ส่วนใหญ่ที่ต้องใช้ยังเป็น WIP หรืออยู่ในสภาพถูกทิ้งร้าง
      นอกจาก crate ใหญ่ยอดนิยมไม่กี่ตัวแล้ว เอกสารก็มักอยู่ในระดับ “ไปอ่านเอกสาร C++ เอา”
      จะว่าไปก็เพราะ Rust ยังเป็นภาษาที่อายุน้อย แต่ปัญหาใหญ่กว่าน่าจะเป็นการขาด แรงฮึดในการดูแลแพ็กเกจ ของชุมชน
    • อ้างอิงเพิ่มเติม Zed เป็นเอดิเตอร์ GUI ที่สร้างด้วย Rust
      แต่ไม่แน่ใจว่าส่วน GUI ทำด้วย Rust ล้วน ๆ หรือเปล่า
  • ผมกำลังรอ เว็บเบราว์เซอร์ TUI ที่จะทำให้ใช้ชีวิตอยู่ใน terminal ได้เต็มตัว
    ตอนนี้มีเทคโนโลยีอย่าง sixel หรือ shader ที่รองรับกราฟิกแล้ว ดังนั้นถ้าไม่นับวิดีโอ ก็น่าจะทำได้สบาย
    การบล็อกโฆษณาก็น่าจะง่ายจนบริษัทต่าง ๆ ไม่ชอบ แต่ถ้าห่อว่าเป็นเบราว์เซอร์สำหรับ LLM ก็อาจพอขายได้

    • แต่ก็ไม่เข้าใจว่าทำไมต้องทำแบบนั้นด้วย
      terminal เป็นแค่ character buffer ความละเอียดต่ำ ดังนั้นการเรนเดอร์พิกเซลแบบเร่งด้วย GPU ตรง ๆ มีประสิทธิภาพกว่ามาก
    • มีโปรเจกต์ชื่อ Browsh
      มันรัน Firefox แบบ headless แล้วเรนเดอร์ผลลัพธ์เป็น ASCII บน terminal ดูเจ๋งดี
    • ผมใช้ Chawan บ่อยพอสมควร ใช้งานได้ดีเลย
    • จริง ๆ แล้วทำแบบนี้ได้มาตั้งแต่ยุค 90s แล้ว
      ตัวอย่างหลัก ๆ คือ Lynx กับ w3m
    • แม้จะไม่ใช่ Rust แต่ nimwave ก็น่าดูเหมือนกัน
  • ขอแนะนำ Markdown viewer ที่ผมทำชื่อ mdfried
    ความสามารถในการอ่านต้นฉบับของ Markdown นั้นดีอยู่แล้ว แต่ดูผ่าน browser สะดวกกว่า เลยทำ viewer ที่เรนเดอร์ header เป็นภาพขึ้นมา
    ต้องตั้งค่าฟอนต์ครั้งหนึ่ง และรองรับภาพแบบ inline ด้วย
    ตอนนี้ใช้ text-sizing protocol ของ Kitty เพื่อเรนเดอร์ได้ตรง ๆ โดยไม่ต้องแปลงเป็นภาพแล้ว

    • เป็นโปรเจกต์ที่เจ๋งมาก เพียงแต่ดูเหมือน Ghostty ยังไม่ได้ implement โปรโตคอลนั้น
  • Teletekst ของเนเธอร์แลนด์มี SSH interface ให้ใช้งาน
    ตาม บทความนี้ มันสร้างด้วย Ratatui และเข้าใช้งานได้ด้วย ssh teletekst.nl

  • ผมลองทดสอบแอปเล็ก ๆ ที่ทำด้วย Ratatui แล้วตกใจที่แค่ รับข้อความธรรมดา ก็ใช้ CPU ขึ้นไปถึง 8%
    ทั้งที่ใช้ตัวอย่างทางการแบบตรง ๆ ก็ยังเป็นแบบนั้น

    • มีคนถามว่าหรือรันด้วย debug build อยู่หรือเปล่า เพราะ cargo run ใช้โหมด debug โดยปริยาย
  • ผมอยากรวมโปรเจกต์โอเพนซอร์ส TironCalc ของตัวเองเข้าไปในรีโพหลัก ironcalc
    คิดว่าน่าจะเป็นโปรเจกต์ที่เหมาะกับการทำงานด้วย Rust และ Ratatui
    แต่พอเห็นโปรเจกต์ edit ของ Microsoft แล้ว ก็เริ่มไม่มั่นใจว่า Ratatui เป็นตัวเลือกที่ดีที่สุดหรือไม่

  • ขอแนะนำ เกม TUI ที่สร้างด้วย Ratatui ของผม rebels-in-the-sky

    • ผมลองรันเกมแล้ว ชอบมาก ให้ความรู้สึกเหมือนเกมจำลองฟุตบอลคลาสสิกอย่าง Hattrick แต่มีอารมณ์ที่ขัดเกลากว่า
      เพียงแต่วิดีโอในรีโพเปิดบนอุปกรณ์ของผมไม่ได้
    • งานอาร์ตสวยมาก บน GitHub วิดีโอไม่ยอมเรนเดอร์ เลยต้องดาวน์โหลด mp4 มาดูเอง
    • คำอธิบายว่า “เกมบาสเกตบอล P2P ของโจรสลัดอวกาศในกาแล็กซี” นี่โดนใจมาก
  • รู้สึกว่าชื่อโพสต์แปลก ๆ อยู่หน่อย
    นึกว่าจะเป็นบทความเกี่ยวกับการปฏิวัติ TUI ของ Rust แต่จริง ๆ กลับเป็นการรวมแอปที่สร้างด้วย Ratatui

    • ที่จริงอาจหมายถึงว่า crate ตัวนี้เองเป็น สาเหตุของกระแส TUI บูม ใน Rust
      ฝั่ง Go ก็มี Charm ที่ทำหน้าที่คล้ายกัน
    • ตอนนี้ชื่อถูกแก้แล้ว ตามแนวทางของ HN ควรคงชื่อเดิมไว้ และเปลี่ยนเฉพาะกรณีที่ทำให้เข้าใจผิดเท่านั้น
    • Ratatui เป็นโปรเจกต์ที่มีมานานพอสมควร และเป็นเครื่องมือแรกที่ผมนึกถึงเวลาอยากทำ TUI ที่ซับซ้อน
    • ตอนนี้ผมเองก็เริ่มอยากหาทางเลือกอื่นหรือดูว่ามีจุดต่างอะไรบ้าง
  • รู้สึกมากขึ้นเรื่อย ๆ ว่าจำเป็นต้องมียูทิลิตีสำหรับรัน เอเจนต์แบบ CLI ใน terminal แยกตามโฟลเดอร์
    เช่นอาจนำไปใช้ทำระบบตรวจสอบ legal compliance แบบอัตโนมัติได้

    • ตอนนี้ coding agent หลัก ๆ ก็รองรับโหมด CLI กันหมดแล้ว
      มีทั้ง Cline CLI, Opencode CLI, Codex CLI, Gemini CLI, Claude Code CLI และอีกหลายตัว