2 điểm bởi GN⁺ 2025-11-07 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bộ sưu tập tổng hợp nhiều ví dụ ứng dụng chạy trên terminal (TUI) được xây dựng bằng framework Ratatui
  • Bao gồm các ứng dụng cho nhiều mục đích khác nhau như giám sát hệ thống, duyệt tệp, phân tích mạng, trực quan hóa dữ liệu
  • Một số ví dụ tiêu biểu gồm Atuin (quản lý lịch sử shell), GitUI (giao diện Git), Oatmeal (chat với LLM), Yazi (trình quản lý tệp)
  • Mỗi dự án đều được viết bằng ngôn ngữ Rust và đi kèm liên kết GitHub cùng hình ảnh demo
  • Tập hợp ví dụ cho thấy khả năng mở rộng và tính thực tiễn của phát triển terminal UI trong hệ sinh thái Rust

Tổng quan

  • Trang App Showcase của Ratatui liệt kê các ứng dụng giao diện người dùng terminal (TUI) thực tế được phát triển bằng Ratatui
  • Mỗi mục gồm liên kết kho GitHub, mô tả ngắn, ảnh demo hoặc GIF
  • Có tổng cộng hơn 27 dự án, trải rộng từ công cụ hệ thống đến game, AI và quản lý dữ liệu

Danh sách ứng dụng chính

Atuin

  • Thay thế lịch sử shell hiện có bằng cơ sở dữ liệu SQLite và ghi lại thêm ngữ cảnh khi thực thi lệnh

Bandwhich

  • Tiện ích CLI hiển thị mức sử dụng mạng theo tiến trình, kết nối, IP/host từ xa

Binsider

  • Công cụ thực hiện phân tích nhị phân trong terminal

Bottom

  • Trình giám sát hệ thống đa nền tảng, trực quan hóa mức sử dụng tài nguyên như CPU và bộ nhớ

Crossword

  • Trò chơi cho phép chơi ô chữ crossword trong terminal

Csvlens

  • Trình xem chuyên cho tệp CSV, tương tự lệnh less nhưng được tối ưu cho cấu trúc CSV

Dua

  • Công cụ phân tích dung lượng đĩa dựa trên xử lý song song, cung cấp tính năng xóa nhanh

Fzf-make

  • Công cụ CLI dùng fuzzy finder để chạy các target make

GitUI

  • Giao diện TUI viết bằng Rust cho công việc với Git

Gpg-tui

  • Giao diện terminal cho GnuPG

Joshuto

  • Trình quản lý tệp kiểu Ranger, được viết bằng Rust

Material

  • Bảng màu Material Design cho terminal

Minesweep-rs

  • Trò chơi dò mìn viết bằng Rust

Oatmeal

  • Ứng dụng chat trên terminal có thể trò chuyện với LLM, hỗ trợ backend ChatGPT hoặc Ollama
    • Bao gồm các tính năng lệnh slash, UI bong bóng chat, tích hợp Neovim

Oha

  • Gửi tải đến ứng dụng web và hiển thị kết quả bằng TUI theo thời gian thực

Oxker

  • TUI để điều khiển và giám sát container Docker

OpenAPI-tui

  • Công cụ giúp tra cứu nhanh tài liệu OpenAPI trong terminal

Rainfrog

  • Công cụ terminal gọn nhẹ để tương tác với cơ sở dữ liệu

Rucola

  • Cung cấp chức năng quản lý ghi chú Markdown và chuyển đổi sang HTML

Scope-tui

  • Triển khai các chức năng oscilloscope, vectorscope, spectroscope trong terminal

Slumber

  • Chạy client HTTP/REST trong terminal

Steer

  • AI coding agent cho phát triển cục bộ và tự động hóa

Taskwarrior-tui

  • Giao diện terminal cho công cụ quản lý công việc Taskwarrior

Television

  • Công cụ tìm kiếm dựa trên thuật toán fuzzy matching, hỗ trợ duyệt nhiều nguồn dữ liệu như tệp, Git, biến môi trường

Trippy

  • Công cụ chẩn đoán mạng kết hợp Traceroute và Ping

Xplr

  • Trình duyệt tệp TUI nhanh và có thể hack tùy biến

Yazi

  • Trình quản lý tệp siêu nhanh dựa trên asynchronous I/O, viết bằng Rust

Yozefu

  • TUI tương tác để khám phá dữ liệu trong cụm Kafka
    • Hỗ trợ lọc chi tiết bằng ngôn ngữ truy vấn kiểu SQL
    • Là lựa chọn thay thế cho AKHQ, Redpanda Console và plugin Kafka của JetBrains

Ý nghĩa của hệ sinh thái Ratatui

  • Tất cả ứng dụng đều được xây dựng dựa trên framework Ratatui, cho thấy sự đa dạng và mức độ trưởng thành của phát triển terminal UI trong môi trường Rust
  • Mỗi dự án đều được công khai dưới dạng kho GitHub mã nguồn mở, để các nhà phát triển có thể trực tiếp tham khảo
  • Điều này cho thấy Ratatui đang trở thành công cụ tiêu chuẩn cho phát triển CLI/TUI dựa trên Rust

1 bình luận

 
GN⁺ 2025-11-07
Ý kiến trên Hacker News
  • Thật thú vị khi dạo này có rất nhiều TUI được viết bằng Rust
    Những nơi tôi biết là Awesome TUIs, terminaltrove, và danh sách awesome của Ratatui

    • Dạo này gần như không có nền tảng GUI desktop nào thực sự tốt, nên terminal lại trở thành một môi trường hấp dẫn hơn
      Qt hay GTK thì quá đồ sộ, Windows thì thay đổi liên tục, còn Electron thì tôi không muốn đụng vào
      Chất lượng terminal gần đây đã tốt hơn nhiều, nên việc tạo các ứng dụng nhỏ trở nên dễ dàng hơn hẳn
      Ví von như làm thứ gì đó hay ho bằng LEGO sẽ dễ hơn nặn tượng bằng đất sét là rất chuẩn
    • Các thư viện TUI đã trừu tượng hóa rất tốt độ phức tạp cấp thấp của việc render terminal, nên giờ terminal có cảm giác giống như một canvas bên trong IDE
      Khi trực quan hóa trạng thái dữ liệu, không cần phải dựng cả một pipeline render trên trình duyệt
      Tham khảo hình ảnh ví dụ này
    • TUI phần lớn là đa nền tảng, có thể dùng ngay trong terminal nên ít phải chuyển ngữ cảnh
      Các terminal hiện đại như Ghostty, WezTerm, Kitty, iTerm, Alacritty đều hỗ trợ tăng tốc GPU và màu 24-bit
      Hơn nữa, dạo này các lập trình viên dùng những công cụ như Claude Code, Gemini CLI, Codex trong terminal còn nhiều hơn cả IDE
    • Với những lập trình viên đã phải chịu đựng giao diện web tệ hại suốt thời gian dài, TUI là một lựa chọn thay thế mới mẻ
      Nó có nhiều giới hạn, nhưng chính vì thế cũng khó tạo ra những UI lộn xộn
      Nó thực sự rất hợp với phần mềm có độ phức tạp từ đơn giản đến trung bình. Ví dụ, tôi khuyên dùng Midnight Commander
    • Với tôi, TUI là lối thoát khỏi thế giới GUI bị thiết kế quá đà ngày nay
      Cảm giác hợp tác với designer ngày càng quan liêu và kém hiệu quả
      TUI ép buộc giao diện phải gọn gàng, mật độ thông tin cao và ít khoảng trắng thừa
  • Lý do TUI thịnh hành trong Rust là vì tình hình GUI quá tệ
    Có thể thấy điều đó qua khảo sát thư viện GUI cho Rust
    Tôi muốn dùng Qt trong Rust, nhưng không muốn QML, Slint, GTK hay UI immediate mode
    Sẽ thật đáng tiếc nếu trong Rust không xuất hiện thứ gì đó giống Qt

    • Thực ra, những người làm TUI bằng Rust đơn giản là vì họ thích TUI
      Ratatui là một framework rất vui để sử dụng, nên chuyện này không liên quan đến việc thiếu GUI
    • GUI, dù ở ngôn ngữ nào, cũng đi kèm gánh nặng về kiểm thử, khả năng truy cập, i18n
      Trong những trường hợp CLI là chưa đủ nhưng GUI hoàn chỉnh lại quá mức cần thiết, TUI lấp rất tốt khoảng ở giữa đó
    • Lý do framework GUI truyền thống khó làm trong Rust là vì cấu trúc tham chiếu vòng
      Các tham chiếu cha/con giữa window-container-button xung đột với mô hình ownership của Rust
      Cơ chế signal-slot của Qt cũng rất khó triển khai trong Rust
    • Tôi cũng cảm thấy hệ sinh thái GUI của Rust khá chật vật
      Phần lớn crate tôi cần đều ở trạng thái WIP hoặc bị bỏ bê
      Ngoài một vài crate lớn phổ biến, tài liệu thường chỉ ở mức “hãy xem tài liệu C++”
      Một phần là vì Rust vẫn còn là ngôn ngữ trẻ, nhưng có lẽ vấn đề lớn hơn là cộng đồng thiếu nhiệt huyết duy trì gói
    • Tham khảo thêm Zed, một editor GUI được viết bằng Rust
      Tuy vậy, tôi không chắc phần GUI của nó có được triển khai hoàn toàn chỉ bằng Rust hay không
  • Tôi đang chờ một trình duyệt web TUI có thể cho phép tôi sống hoàn toàn trong terminal
    Với các công nghệ như sixel hay shader hỗ trợ đồ họa, có vẻ điều đó hoàn toàn khả thi nếu bỏ qua video
    Việc chặn quảng cáo sẽ dễ dàng nên có thể các công ty sẽ không thích, nhưng nếu đóng gói nó như một trình duyệt cho LLM thì biết đâu lại thuyết phục được

    • Nhưng tôi không hiểu tại sao lại nhất thiết phải làm vậy
      Terminal là một bộ đệm ký tự độ phân giải thấp, nên render pixel với tăng tốc GPU rõ ràng hiệu quả hơn nhiều
    • Có dự án Browsh
      Nó chạy Firefox ở chế độ headless rồi render kết quả thành ASCII trong terminal. Khá ấn tượng
    • Tôi thường dùng Chawan. Khá ổn
    • Thực ra điều này đã khả thi từ những năm 90
      Lynxw3m là những ví dụ tiêu biểu
    • Dù không phải Rust, nimwave cũng đáng tham khảo
  • Xin giới thiệu trình xem Markdown tôi làm ra mdfried
    Khả năng đọc trực tiếp Markdown gốc thì tốt, nhưng xem trên trình duyệt lại tiện hơn nên tôi làm một trình xem render header thành hình ảnh
    Cần thiết lập font một lần, và nó cũng hỗ trợ ảnh nội tuyến
    Giờ thì có thể tận dụng giao thức text-sizing của Kitty để render trực tiếp mà không cần chuyển đổi sang ảnh

    • Dự án thực sự rất tuyệt. Chỉ là có vẻ Ghostty vẫn chưa triển khai giao thức đó
  • Teletekst của Hà Lan có cung cấp giao diện SSH
    Theo bài viết này, nó được làm bằng Ratatui và có thể truy cập qua ssh teletekst.nl

  • Tôi đã thử một ứng dụng nhỏ làm bằng Ratatui, và ngạc nhiên khi chỉ nhập văn bản đơn giản thôi mà mức dùng CPU đã lên tới 8%
    Dùng nguyên ví dụ chính thức mà vẫn vậy

    • Có người hỏi liệu bạn có đang chạy bằng bản build debug không. cargo run mặc định là chế độ debug
  • Tôi muốn tích hợp dự án mã nguồn mở TironCalc của mình vào kho chính ironcalc
    Tôi nghĩ đây là một dự án phù hợp để làm việc với Rust và Ratatui
    Tuy nhiên, sau khi xem dự án edit của Microsoft, tôi không còn chắc Ratatui có phải lựa chọn tốt nhất không

  • Xin giới thiệu rebels-in-the-sky, trò chơi TUI dựa trên Ratatui mà tôi đã làm

    • Tôi đã chạy thử trò chơi và thực sự rất thích. Nó có cảm giác như một game mô phỏng bóng đá cổ điển kiểu Hattrick, nhưng mang phong cách tinh tế hơn
      Tuy nhiên, video trong repository không mở được trên thiết bị của tôi
    • Phần artwork rất đẹp. Trên GitHub video không được render, nên tôi phải tải trực tiếp file mp4 xuống
    • Câu mô tả “game bóng rổ cướp biển không gian P2P lấy bối cảnh thiên hà” thực sự rất ấn tượng
  • Tôi thấy tiêu đề bài viết hơi kỳ lạ
    Tôi tưởng đây sẽ là một bài về cuộc cách mạng TUI của Rust, nhưng thực ra lại là một bộ sưu tập ứng dụng viết bằng Ratatui

    • Thực ra có lẽ ý muốn nói là chính crate này là nguyên nhân của làn sóng TUI trong Rust
      Bên Go thì Charm cũng đóng vai trò tương tự
    • Tiêu đề đã được sửa. Theo guideline của HN, nguyên tắc là giữ nguyên tiêu đề gốc, chỉ sửa khi nó dễ gây hiểu nhầm
    • Ratatui là một dự án đã tồn tại khá lâu, và là công cụ tôi tìm đến đầu tiên khi cần làm TUI phức tạp
    • Giờ tôi cũng muốn tìm xem còn lựa chọn khác hay điểm khác biệt nào nữa không
  • Tôi ngày càng thấy cần những tiện ích cho phép chạy agent dạng CLI theo từng thư mục ngay trong terminal
    Ví dụ, có thể dùng chúng để tự động hóa việc kiểm tra tuân thủ pháp lý

    • Các coding agent lớn thực ra đã hỗ trợ chế độ CLI rồi
      Có Cline CLI, Opencode CLI, Codex CLI, Gemini CLI, Claude Code CLI và nhiều công cụ khác