- Thư viện component UI giúp xây dựng ứng dụng desktop đa nền tảng bằng framework GPUI dựa trên Rust
- Cung cấp hơn 60 component UI theo phong cách native, kết hợp cảm quan thiết kế của macOS·Windows với thẩm mỹ hiện đại của shadcn/ui
- Tích hợp sẵn nhiều tính năng phong phú như bảng ảo hóa, trình soạn thảo mã hiệu năng cao, render Markdown/HTML, trực quan hóa biểu đồ
- Thiết kế chú trọng khả năng mở rộng và tùy biến với hệ thống theme, đa ngôn ngữ (i18n), dock layout
- Trong hệ sinh thái Rust, dự án mang ý nghĩa khác biệt khi so với Iced, egui, Qt ở phong cách UI hiện đại và hiệu năng xử lý dữ liệu quy mô lớn
Tổng quan dự án
- gpui-component là bộ component UI desktop đa nền tảng được viết bằng Rust, hoạt động dựa trên GPUI render engine
- Giấy phép Apache-2.0
Tính năng chính
- Bộ component phong phú: bao gồm hơn 60 phần tử UI, cung cấp nhiều thành phần như button, list, table, chart, editor
- Thiết kế đậm chất native: lấy cảm hứng từ các control mặc định của macOS và Windows, kết hợp phong cách shadcn/ui để tạo ra giao diện hiện đại
- Tính dễ dùng gọn gàng: cấu trúc component RenderOnce không trạng thái giúp viết mã đơn giản và trực quan
- Hệ thống theme và màu sắc: hỗ trợ nhiều theme và cấu hình dựa trên biến thông qua Theme và ThemeColor
- Layout linh hoạt: với Dock layout, có thể sắp xếp panel, thay đổi kích thước và tạo bố cục dạng tile tự do
- Render hiệu năng cao: Virtualized Table/List hiển thị mượt mà cả dữ liệu quy mô lớn
- Render nội dung: hỗ trợ native cho Markdown và HTML đơn giản
- Tính năng biểu đồ: có thể trực quan hóa dữ liệu bằng chart tích hợp sẵn
- Trình soạn thảo mã: tích hợp trình chỉnh sửa mã hiệu năng cao dựa trên LSP hỗ trợ tối đa 200.000 dòng
- Hỗ trợ các tính năng như chẩn đoán, tự động hoàn thành, hover
- Tô sáng cú pháp: dùng Tree Sitter để cung cấp syntax highlighting cho cả editor và Markdown
Tech stack và thống kê
- Cấu hình ngôn ngữ: Rust 98.2%, Tree-sitter Query 0.8%, HTML 0.2%, Shell 0.2%, Python 0.1%, C 0.1%
- Chỉ số repository: 5.4k stars, 223 forks, hơn 45 người đóng góp
- Bản phát hành mới nhất: v0.3.1 (27 tháng 10, 2025)
Ý nghĩa tổng quát
- gpui-component được đánh giá là một framework UI desktop mới trong hệ sinh thái Rust, kết hợp UI/UX hiện đại và render hiệu năng cao
- Bù đắp những giới hạn của các framework GUI Rust hiện có, đồng thời cung cấp các tính năng thân thiện với thực tế triển khai như xử lý dữ liệu lớn·theme hóa·tích hợp Markdown
- Là dự án đang được chú ý như ứng viên cho lớp UI tiêu chuẩn trong phát triển ứng dụng đa nền tảng dựa trên Rust trong tương lai
1 bình luận
Ý kiến trên Hacker News
Trong hệ sinh thái UI của Rust, đây có vẻ là bộ sưu tập component hoàn thiện nhất mà tôi từng thấy
Dù hiện vẫn gần như chưa có nhiều trường hợp sử dụng, tài liệu đang dần được hoàn thiện tốt hơn
Một ví dụ khác có độ hoàn thiện tương tự là fyrox-ui. Tuy vậy, nó hầu như không được dùng bên ngoài engine fyrox
UI của Rust đang dần trưởng thành, nhưng các framework phổ biến như iced, egui, dioxus, slint vẫn có vẻ còn thiếu về độ hoàn thiện của component
Cập nhật thêm thì dự án này cho thấy bước tiến lớn trong hệ sinh thái UI của Rust.
Có thể chạy tại đây ứng dụng thư viện widget để xem toàn bộ component — chỉ cần
cargo run --releaseNgay cả ví dụ đơn giản nhất cũng có hơn 1000 dependency. Nó phụ thuộc vào các toolkit như GTK, GDK, pango. Cấu trúc lại còn phụ thuộc thêm vào các toolkit khác nên cảm giác hơi kỳ
Thật chua chát khi nhiều công nghệ nền tảng của mã nguồn mở lại được tạo ra bởi các công ty trading·crypto. Dù vậy, việc họ vẫn đóng góp điều gì đó cho xã hội là điểm tích cực
Tôi tự hỏi các toolkit UI “modern” hiện nay có còn thiếu trình biên tập UI trực quan hay không
Qt từng cho phép tạo UI chỉ bằng kéo thả với các công cụ như QtCreator hay QtDesigner
Ngoài ra, một số mục trong bảng so sánh liên quan đến Qt là sai — ví dụ như kích thước nhị phân tối thiểu hay phần mô tả QSyntaxHighlighter
Tiếc là đây là một framework. Nghĩa là nó phải có event loop riêng
Trong môi trường đã có loop khác thì sẽ khó tích hợp. Trong khi egui chỉ là cấu trúc dạng thư viện được gọi mỗi frame
Tôi tò mò không biết khả năng truy cập cho screen reader dành cho người khiếm thị có hoạt động tốt không
Tôi thắc mắc “native” ở đây có nghĩa là không phải web, hay là dùng widget mặc định của OS. Hệ Java cũng từng gặp khác biệt này rất lớn
Tôi tò mò framework này đã triển khai accessibility (a11y) chưa. UI Rust thường trông đẹp, nhưng khi phát sinh yêu cầu accessibility thì phải viết lại từ đầu
Tính năng danh sách và bảng được ảo hóa thực sự rất xuất sắc. Nhiều framework UI bắt người dùng phải tự triển khai phần này nên rất bất tiện
Rust có nhiều GUI toolkit, nhưng lại thiếu bộ sưu tập component có thể tái sử dụng
Bộ sưu tập này có vẻ hữu ích, nhưng phần lớn danh sách component trông giống các framework web. Yếu tố đặc thù native dường như chỉ có webview. Những thứ như hộp thoại mở file lại phải dùng thư viện ngoài như rfd, nên làm mất tính nhất quán về phong cách