2025 年 Rust GUI 库调研
本文作者对 43 种 Rust GUI 库进行调研,旨在实现文本标签与输入框联动功能,且考虑了 Windows 系统支持、屏幕阅读器可访问性及 IME 输入等因素。众多库表现各异,如Azul、CXX-Qt 等存在链接错误难以运行;Cushy、Floem 等在可访问性或 IME 支持上有缺陷;Dioxus、Slint 等综合表现较好。作者认为虽无完美选择,但相比 2021 年已有更多合理选项。
库名 | 是否可用 | 屏幕阅读器可访问性 | IME 支持情况 | 问题描述 |
---|---|---|---|---|
Azul | 链接错误,无法运行 | 未提及 | 未提及 | 下载预构建.dll 困难,示例代码无法运行,版本混乱 |
cacao | 仅适用于 macOS | 未提及 | 未提及 | 不支持 Windows 系统 |
core - foundation | 仅适用于 macOS | 未提及 | 未提及 | 不支持 Windows 系统 |
Crux | 无桌面目标 | 未提及 | 未提及 | 实际不支持桌面 GUI 开发,仅用于移动和 Web |
Cushy | 是 | 否 | 部分支持 | 示例代码有错误,运行时产生大量 Vulkan/DirectX 12 错误,Windows Narrator 无法识别内容 |
CXX-Qt | 链接错误,无法运行 | 未提及 | 未提及 | 安装 Qt 需注册,示例代码有 1058 个链接错误 |
Dioxus | 是 | 是 | 是 | 通过 WebView2/WebKitGTK 支持桌面开发,类似 React,文本和 IME 功能正常 |
Dominator | 仅用于 Web | 未提及 | 未提及 | 无桌面支持 |
egui | 是 | 是 | 部分支持 | 设置简单,默认字体不支持日语字符,Tab 键选择汉字时被吃掉 |
Floem | 是 | 否 | 否 | 用于 Lapce IDE,布局构建方式奇怪,缺乏可访问性和 IME 支持 |
fltk | 是 | 需额外 crate | 是 | 布局系统不佳,添加组件方式不友好 |
flutter_rust_bridge | 部分支持,但状态管理混乱 | 是 | 部分支持,但状态管理混乱 | 与 Flutter 集成复杂,输入字段状态管理有问题 |
Freya | 是 | 否 | 否 | 依赖旧版本 Dioxus,渲染和文本识别存在问题 |
fui | qmake 错误,无法构建 | 未提及 | 未提及 | 缺乏文档,构建失败 |
GemGui | 技术上可用,但依赖问题多 | 未提及 | 未提及 | 依赖 Python,运行方式繁琐 |
GPUI | 是 | 否 | 是 | 缺乏基本文本输入部件,文档和安装不完善 |
GTK 3 | 不再维护 | 未提及 | 未提及 | 已过时 |
GTK 4 | 是 | 否 | 是 | 窗口装饰和可访问性存在问题 |
Iced | 是 | 否 | 否 | 受 Elm 启发,在可访问性和 IME 支持上有缺陷 |
imgui | 是 | 否 | 否 | 与游戏引擎结合较好,但初始设置繁琐,支持多种渲染器导致选择困难 |
KAS | 是 | 否 | 否 | 教程过时,状态管理设计不清晰 |
kittest | 仅用于测试 | 未提及 | 未提及 | 仅支持 egui 测试 |
Leptos | 仅用于 Web | 未提及 | 未提及 | Web 前端框架,原生 GUI 支持不足 |
lvgl | C 依赖问题 | 未提及 | 未提及 | 配置在 Windows 上有问题 |
Makepad | 是 | 否 | 部分支持 | 缺乏文档,可访问性支持差 |
masonry | 是 | 内容可识别但位置错误 | 是,但有临时乱码 | API 使用不太方便 |
Maycoon | 无文本输入部件 | 未提及 | 未提及 | 太新,功能不完整 |
Pax | 无 Windows 支持 | 未提及 | 未提及 | 仅支持 macOS |
qmetaobject | 不支持 windows - msvc | 未提及 | 未提及 | 与特定目标不兼容 |
relm | 使用不再维护的 GTK 3 | 未提及 | 未提及 | 依赖过时库 |
Relm4 | 是 | 否 | 是 | 基于 GTK 4,继承其问题 |
Ribir | 部分支持,但状态管理混乱 | 否 | 部分支持 | 状态管理机制有问题 |
Rinf | 不使用 Rust 构建 GUI | 未提及 | 未提及 | 不符合调研需求 |
rui | 是 | 否 | 否 | 状态管理可能较繁琐 |
Slint | 是 | 是 | 部分支持 | 有自己的 DSL,数据绑定功能巧妙,默认字体可能存在问题 |
Tauri | 是 | 是 | 部分支持 | 前端与后端通信存在问题,缺乏类型安全 |
tinyfiledialogs | 非通用 GUI 库 | 未提及 | 未提及 | 功能有限,无法完成任务 |
Tk | 是 | 否 | 是 | 安装和使用复杂,依赖外部库 |
Vizia | 是 | 结构可识别但内容不可识别 | 部分支持 | 文本字段聚焦时样式有问题 |
WebRender | 太低级,不适用于 GUI 开发 | 未提及 | 未提及 | 无 GUI 组件,是低级别图形库 |
windows | 不熟悉 Win32 API | 未提及 | 未提及 | 缺乏 GUI 开发指导 |
WinSafe | 是 | 是 | 是 | 手动布局不佳,存在窗口创建时序问题 |
Xilem | 是 | 内容可识别但位置错误 | 是,但有临时乱码 | 缺乏版本管理 |
本次调研涵盖 43 种 Rust GUI 库,各库在功能、易用性、可访问性和 IME 支持等方面表现差异较大。作者推荐了几个表现较好的库:喜欢 CSS 布局可选 Dioxus;青睐 DSL 驱动的用户可选择 Slint;想避免 DSL 和宏,只用常规 Rust 代码的可考虑 egui;愿意早期投资的可关注 Xilem。虽然没有绝对完美的选择,但相比 2021 年,如今有更多合理的选项可供开发者选择。
原文:https://www.boringcactus.com/2025/04/13/2025-survey-of-rust-gui-libraries.html
dotter:管理 dotfiles
dotter 是一个用 Rust 编写的 dotfile 管理器和模板生成器。其主要目的是解决管理和部署 dotfiles 时遇到的问题,提供灵活的配置和自动模板化或符号链接到目标位置的功能。
- 解决传统 dotfiles 管理问题:传统的使用
ln -s
进行符号链接的方式在管理大量 dotfiles 时存在诸多问题,如难以跟踪文件来源、在新机器上设置繁琐以及无法处理不同机器之间的差异。Dotter 旨在解决这些问题。 - 灵活配置与自动部署:通过提供灵活的配置,Dotter 可以自动将 dotfiles 模板化或符号链接到目标位置。
- 支持钩子脚本:在部署和撤销部署前后,可以执行预定义的钩子脚本,以满足特定的需求。
- 缓存机制:使用缓存文件来记录已部署的文件信息,方便撤销部署操作。
- 模板化支持:支持使用模板文件,根据不同的变量生成不同的配置文件。
- 详细的日志输出:支持不同级别的日志输出,方便调试和查看操作过程。
Github 仓库:https://github.com/SuperCuber/dotter
rust-analyzer 2025-04-14 (v0.3.2379) 发布
此次更新包含新功能“Locate child modules” 命令;修复了多个问题,如虚假的无效转换诊断等;还进行了多项内部改进,像降低 drop glue info 的冗长性、切换到 Rust 1.86 等。
原文:https://rust-analyzer.github.io/thisweek/2025/04/14/changelog-281.html
--
From 日报小组 Yuan YQ
社区学习交流平台订阅:
评论区
写评论GUI 对比表格怎么和原文对不上呢