< 返回版块

Yuan YQ 发表于 2025-04-15 10:32

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

社区学习交流平台订阅:

评论区

写评论
zzl221000 2025-04-17 10:38

GUI 对比表格怎么和原文对不上呢

1 共 1 条评论, 1 页