Pop!_OS COSMIC 桌面使用 Rust GUI 库 Iced 取代 GTK
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 应用程序。
延伸阅读

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Canonical 推出免费的 Ubuntu Pro
Ubuntu Pro 是 Canonical 推出的一项扩展性的安全维护和合规性订阅计划,最初是为提供全球服务的大型企业客户而设计的,因为这类客户通常希望他们的基础设施和应用程序具有更加长期的稳定性。 因此与标准的 Ubuntu 相比,Ubuntu Pro 是一个更全面的产品,除了为关键的、高度的和中度的常见漏洞提供扩展的安全更新,它还会将安全覆盖范围扩大到成千上万的应用程序和工具链,其中包括 Ansible、Apache Tomcat、Apache Zookeeper、Docker、Drupal、Node.js、Puppet、Power DNS、Python 2、Redis、Rust 和 WordPress 等。 除了提供各种安全更新外,Ubuntu Pro 还可以让你在受监管和受审计的环境中获得各种合规管理和加固工具,以及 FIPS 140-2 认证的加密包。 如今不光是为了照顾那些大型企业,Canonical 还决定将 Ubuntu Pro 扩展到个人和小规模商业用户,并为他们提供最多 5 台设备的免费计划,此举可以让开源更容易被大众消费,并为 Ubuntu 用户的安装提供更好的...
- 下一篇
.NET5/6/7 框架 Furion v4.5.7 版本发布
没想到国庆期间还有不少用户提交 Issue 和 Pull Request,作为作者当然也不能懈怠,只要发现 Bug 并确认当天修复,当天发布,两年多来皆是如此。 目前 Furion 在 Nuget 平台项目总安装量破 355万次,总下载量已经破 4400万次https://www.nuget.org/profiles/monk.soul 项目信息 Gitee:https://gitee.com/dotnetchina/Furion Github:https://github.com/MonkSoul/Furion 文档:https://dotnetchina.gitee.io/furion 本期亮点 1. 支持各种日志输出介质 JSON 化 // 控制台 services.AddConsoleFormatter(options => { options.MessageFormat = LoggerFormatter.Json; }); // 文件 services.AddFileLogging("mytemplate.log", options => ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境