Pop!_OS COSMIC 桌面使用 Rust GUI 库 Iced 取代 GTK

来源: OSCHINA
编辑:
2022-10-06 09:09:36

System76 一直在开发他们自己的 COSMIC 桌面,作为他们在 Ubuntu 基础上构建的 Pop!_OS Linux 发行版的下一个演变。有趣的是,对于这个用 Rust 编写的大型 COSMIC 桌面项目,他们决定不再使用 GTK 工具包,而是使用 Iced-Rs 作为替代,后者是原生 Rust 跨平台图形工具包。

参与 COSMIC 项目的一位 System76 工程师在 Reddit 上评论了 COSMIC 使用 Iced 工具包的情况:

过去一年里,UX 团队一直在精心设计小部件和应用程序。我们现在正处于工程团队决定 COSMIC 的 GUI 工具包的关键时刻。经过去年的深思熟虑和实验,工程团队决定使用 Iced 而不是 GTK

Iced 是一个原生的 Rust GUI 工具包,它足够快的进展已经满足 COSMIC 的使用需求。开发团队已经使用 GTK 和 Iced 中编写了各种 COSMIC 小组件以供比较。与 GTK 相比,Iced 的最新开发版本具有非常灵活、富有表现力和直观的 API。它在 Rust 中使用起来十分自然,任何熟悉 Elm 的人都会欣赏它的设计。

这名工程师还表示 GTK 是最低效的 GUI 工具包之一,因为其使用的 GObject、C 及其通用的布局和渲染方法。GTK 的每个方面都被认为是当今软件开发和 GUI 架构的不良实践。其最大的问题之一是数据、逻辑和 UI 深度捆绑。因此除非所有代码都被丢弃,并且以与 Iced 类似的方式在 Rust 中从头开始创建新的工具包,否则无法解决缺点。

工程师介绍道,在 Iced 中,数据与桌面小部件是分开的。开发者从一个应用程序结构开始作为模型,它存储了您的应用程序在构建其布局时需要的所有状态。每当收到消息并且状态发生更改时,都会调用一个视图方法,并且此视图方法将整个布局描述为一个状态机。然后将之前的布局进行比较和差异化,以便渲染器仅渲染两者之间的差异。此外还有一些巧妙的技术可以在未来用于减少所需的视图更新次数。当然最好的部分之一是,开发者不需要在运行时使用 Iced 加载数十个巨大的库——因为它有一个完全静态的二进制文件的选项。

Iced 是一个为 Rust 编程语言编写的跨平台 GUI 库,“专注于简单性和类型安全”。Iced 的设计思路受到了 Elm 语言的启发。Iced 工具包不仅适用于 Linux、macOS 和 Windows,还适用于 Web 应用程序。


延伸阅读

展开阅读全文
精彩评论
数据驱动的界面开发模式终于要全面影响客户端软件了
2022-10-06 12:45
12
举报
看了一下 iced 还是处于很早期的阶段,Pop!OS尝尝鲜可以的,倘若为社区走出来一条新的康庄大道也挺好的。
2022-10-06 15:57
5
举报
经过长时间的观察,发现GTK普及比较差的原因是GNOME基金会是以GNOME桌面为整体目标,GTK只是其中一个核心框架组件,对GTK的功能开发和开发友好性维护不是主要目标,常常以优先达成GNOME桌面版本目标为高优先级,核心开发人员常常要支持其它桌面组件,自然就会表现出响应慢和特性不齐全的结果;而QT只是UI框架,也是核心商业目标,受重视程度自然不一样,所以在功能齐全性、开发友好性方面表现更好,更容易被【拿来主义型】开发者所接受。分享一个好消息:从 GTK4 开始它表现越来越优秀,平台 App 采用率很高很快,文档也越来越优秀。
2022-10-12 12:03
3
举报
我也要整个发行版了😄
2022-10-06 16:58
3
举报
gtk被鄙视了
2022-10-06 16:03
2
举报
10 收藏
分享
11 评论
10 收藏
分享
返回顶部
顶部