- 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
Ý 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
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
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
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
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
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
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
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 đó
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
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
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
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
Nó chạy Firefox ở chế độ headless rồi render kết quả thành ASCII trong terminal. Khá ấn tượng
Lynx và w3m là những ví dụ tiêu biểu
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
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.nlTô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
cargo runmặc định là chế độ debugTô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
Tuy nhiên, video trong repository không mở được trên thiết bị của tôi
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
Bên Go thì Charm cũng đóng vai trò tương tự
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ó Cline CLI, Opencode CLI, Codex CLI, Gemini CLI, Claude Code CLI và nhiều công cụ khác