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 应用程序。


延伸阅读

  • 为开发新版 Rust 桌面环境,Pop!_OS 将跳过 22.10 版本

相關推薦

2022-09-28

x 发行版,基于 Ubuntu,并具有定制的 GNOME 桌面环境 —— COSMIC。该发行版由美国 Linux 电脑制造商 System76 开发。虽然 Pop!_OS 主要是与 System76 制造的电脑捆绑在一起,但也可以下载并安装在大多数电脑上。 由于 Pop!_OS 基于 Ubuntu,

2023-01-15

OS 的一大特点就是它所使用的定制版 GNOME 桌面环境 —— COSMIC,不过由于 GNOME 存在很多局限性,以及他们与 GNOME 开发者在桌面体验上的分歧,System76 正在开发一个不基于 GNOME 的新桌面环境,并使用 Rust 编写。 近日 Pop!_OS 官方

2022-02-23

ll 使用的 Mutter 窗口管理器(Metacity + Clutter)、System76 的 COSMIC 桌面和 Raspberry Pi 的 PIXEL。 Clutter 近几年来一直处于维护模式,没有添加任何新的特性。最新的大版本更新还停留在 2016 年发布的 Clutter 1.26,即便是最后一个小版

2023-02-25

NOME 44 于 2023 年 3 月底正式发布之前,GNOME 率先带来了 44 桌面环境的测试版。GNOME 44 Beta 中值得注意的变化包括: 新增 GTK4 移植的 Epiphany(GNOME Web)网络浏览器 GTK 文件选择器的网格视图 Nautilus(Files)的网格视图支持 64px

2022-12-19

有字段的枚举进行显式判别 有整数表示的枚举现在可以使用显式判别,即使它们有字段。 #[repr(u8)] enum Foo { A(u8), B(i8), C(bool) = 42, } 以前,你可以在有表示的枚举上使用显式判别,但是只有在它们的变体都没有字段的情况下

2023-04-07

中兴新支点操作系统正式开源了其桌面环境 —— 新支点超凡桌面环境 (EX-NDE)。其安装包大小仅 104M,轻量级的桌面环境占用更少的资源,优化了资源使用率,提升了整体的运行效率。 据介绍,新支点 EX-NDE 桌面环境分为

2022-10-08

Linux 发行版的节奏,毕竟后面这几个发行版已经早早地在桌面上默认使用了 PipeWire。 作为下一个主要的 Debian 版本,Debian 12 预计将会在 2023 年年中左右发布。  

2022-09-30

的 Rust 安全相关系统。 延伸阅读: 为开发新版 Rust 桌面环境,Pop!_OS 将跳过 22.10 版本 Sysinternals 作者:是时候停用 C/C++ 开发新项目并使用 Rust 了 GStreamer 将用 Rust 编写的插件与二进制版本一起提供 微软首席工程师:Rust

2022-08-26

行于 X Window System 上的混合窗口管理器,对 Linux 桌面产生了巨大的影响。Compiz 的混合渲染能力使其可以在窗口管理过程中实现多种视觉效果,比如在矩形虚拟桌面上的窗口最小化。 Compiz 符合 ICCCM 标准,可以取

2023-04-18

一款全新操作系统,旨在取代 Android 和 chromeOS。Fuchsia OS 使用 Google 自己开发的 Zircon 内核,而不是基于 Linux 内核。 Fuchsia OS 使用 Flutter 作为其主要的应用程序开发框架,这使得应用程序可以在不同类型的设备上无缝运行。该操

2022-04-04

过 QA 测试的强调色,但 libadwaita 将支持配置任意颜色。 使用重新着色 API 的开发人员可以用编程的方法更改其应用程序中的颜色,并自动更新相关颜色。从技术上讲,尽管在 libadwaita 1.0 中已经可以使用 CSS,但该 API 会使其更简

2023-11-13

为 "SixtyFPS")是一个 Rust 编写的综合性 UI 工具包,用于为桌面和嵌入式设备构建原生用户界面。 近日,Slint 发布了 1.3 版本,引入许多增强开发体验的新功能和改进。 下载地址:https://github.com/slint-ui/slint/releases/tag/v1.3.0 下

2023-06-28

技术,需要安装 Qt。 现在有了新的 AccessKit 集成,所有桌面平台上均可启用辅助功能支持。 AccessKit 是一个丰富的跨平台库,提供了对操作系统可访问性 API 的抽象。   OpenGL集成 此版本中引入了 API,允许将 3D OpenGL 渲染直

2022-06-21

Linux 图形/游戏性能的测试结果取决于每个 Linux 发行版使用的内核和 Mesa 版本,具体数据会存在一些波动。Clear Linux 在某些测试中略微领先,它是唯一一个默认选择性能调控器 (Performance Governor) 的发行版,而其他发行版默认使