Pop!_OS
2022-05-22 14:23:27 阿炯

Pop!_OS是基于Ubuntu的Linux发行,其特色是定制的GNOME桌面,其桌面风格被设计为让用户专注于工作而不至于分心。该发行由Linux计算机零售商System76开发,系自家的首个 GNU/Linux 发行版。在 2021 年 System76 宣布了专为 ​​​Pop!_OS 打造的桌面环境 "COSMIC"。


Pop!_OS is an operating system for STEM and creative professionals who use their computer as a tool to discover and create. Unleash your potential on secure, reliable open source software. Based on your exceptional curiosity, we sense you have a lot of it.



2017年10月27日,知名 Linux PC 制造商 System76 正式推出 Linux 发行版 Pop!_OS。其推出自己的发行版与 Ubuntu 当年的一个决定密切相关:在发布 Pop!_OS 之前,System76 生产的所有计算机都预装了 Ubuntu;而在 Ubuntu 决定放弃使用 Unity 默认桌面环境,转而回归 GNOME 后,System76 开始考虑创建自己维护基于 Ubuntu 的发行版。

PC计算机的硬件发行情况请参见《System76所发行的Linux主机记录》。

在深度调研 GNOME 后发现,这个桌面环境使用的技术丰富,且拥有缜密的工作流程,还可以通过扩展框架根据客户的需求来定制桌面。于是 System 76 计划调整 GNOME 桌面环境现有的主题、图标和字体,以适应 System76 的品牌,其他调整还包括发行版设置和默认应用程序 —— 旨在提升生产力和优化开发者体验。基于这些变化,System76 发布的首个 Pop!_OS 其实就是搭载 GNOME 的 Ubuntu 定制版。此后,System76 继续积极为 Pop!_OS 的桌面环境进行优化,还于 2020 年被评为 “基于 Ubuntu 的最佳发行版”。虽然 System76 在 GNOME 上深耕了多年,并基于它进行了极致的优化,但在 2021 年,System76 宣布了专为 ​​​Pop!_OS 打造的桌面环境 "COSMIC",并表示会将其预装到 ​​​Pop!_OS 21.04 中,以取代此前使用的 GNOME。

其实 COSMIC 并不是从头开始构建的产品,而是基于 GNOME 桌面环境打造,System76 希望以此为基础在 Pop!_OS 中提供完善的、经过精心打磨的桌面用户体验。两者最大的区别 —— 同时也是 COSMIC 最大的亮点就是可定制化。System76 认为这是一个优雅的解决方案,它设想通过定制化的方式让桌面更易于使用,对用户而言,这是一项强大且高效的特性。System76 为 COSMIC 倾注了非常大的信心血,为了提供更高的性能,其开发团队决定放弃 GTK 工具包,而是使用 Iced-Rs 作为替代,后者是原生 Rust 跨平台图形工具包。

总的来说,Pop!_OS 这 5 年主要都是围绕桌面环境进行各种尝试和探索,并且也取得了不错的成绩 —— 至少曾被评价为使用体验最好的 Linux 发行版。

System76 一直在开发其 COSMIC 桌面,作为其在 Ubuntu 基础上构建的 Pop!_OS Linux 发行版的下一个演变。有趣的是,对于这个用 Rust 编写的大型 COSMIC 桌面项目,他们决定不再使用 GTK 工具包,而是使用 Iced-Rs 作为替代,后者是原生 Rust 跨平台图形工具包。COSMIC是一个从头开始用 Rust 写的完整桌面环境。自己的 iced 工具包,自己的 Wayland 合成器,每一个组件从第一天起就是为内存安全设计的。


参与 COSMIC 项目的一位 System76 工程师在 Reddit 上评论了 COSMIC 使用 Iced 工具包的情况:
1、过去一年里,UX 团队一直在精心设计小部件和应用程序。我们现在正处于工程团队决定 COSMIC 的 GUI 工具包的关键时刻。经过去年的深思熟虑和实验,工程团队决定使用 Iced 而不是 GTK。

2、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 库,“专注于简单性和类型安全”,其设计思路受到了 Elm 语言的启发。Iced 工具包不仅适用于 Linux、macOS 和 Windows,还适用于 Web 应用程序。

COSMIC 并不是从头开始构建的产品,而是基于 GNOME 桌面环境打造,System76 希望以此为基础在 Pop!_OS 中提供完善的、经过精心打磨的桌面用户体验。两者最大的区别 —— 同时也是 COSMIC 最大的亮点就是可定制化。System76 认为这是一个优雅的解决方案,它设想通过定制化的方式让桌面更易于使用,对用户而言,这是一项强大且高效的特性。下面简单介绍 COSMIC 的部分亮点。

技术架构速看

COSMIC 的架构分成几层:

1. 自研 Wayland 合成器 (cosmic-comp)
没有 X11 的历史包袱,纯 Wayland 实现。这意味着更好的安全隔离、更流畅的渲染,以及不用再处理那些十几年前的兼容性补丁。

2. iced 工具包
System76 深度参与开发的跨平台 GUI 库。响应式设计,GPU 加速,专门为现代硬件优化。

3. 内存安全
每一行代码都是 Rust。内存泄漏、缓冲区溢出、释放后使用这些困扰 C/C++ 桌面环境的老毛病?在结构上就不可能发生。这不是理论,这是工程现实。

工作空间和应用(Workspaces and Applications)

在 COSMIC 中,GNOME 原来的 Activities Overview 被划分为两个不同的视图,分别是工作空间和应用 (Workspaces and Applications);工作空间视图用于查看打开的窗口和工作空间,应用视图则会打开应用程序选择器。

Dock


COSMIC 中的 Dock 底栏支持配置在屏幕的右侧,左侧或底部,以及支持自动隐藏,还可以设置将 Dock 底栏的长度扩展到屏幕边缘。

Super Key


在 COSMIC 中,Super Key 默认情况下会激活启动器。用户可通过启动器启动或切换应用程序、执行命令并计算方程式。System76 解释称,此改变基于他们在 GNOME 中观察到的常见行为。在 GNOME 中,用户会按 Super Key 并输入应用程序的名称来启动它。到了 COSMIC 中,用户也可以将 Super Key 设置为打开工作空间或应用程序视图,而不是启动器。

两种工作流模式:鼠标驱动和键盘驱动

COSMIC 通过添加其他的自定义功能,使用户可以更好地控制自己的桌面,以迎合两个主要工作流程:鼠标驱动和键盘驱动。对于习惯使用鼠标的用户,COSMIC 会让他们保持现有习惯的同时无缝过渡到新版本桌面环境。而对于键盘驱动的用户,由于他们喜欢更高效、无干扰的体验,因此在 COSMIC 中,极简主义者可以不使用 Dock 底栏,从而为应用程序窗口提供额外的空间。Auto-tiling 将为键盘驱动的工作流程奠定基础,它主要依靠快捷键和启动器来尽可能快速地浏览桌面。

System76在2023年5月中旬介绍了 COSMIC 最新的开发进展,主要是 “面板” (COSMIC Panels) 功能,类似于 Pop!_OS 中的顶部栏和停靠栏,但功能更丰富,位置调整也更灵活。它包含许多 “小组件”(applets),开发团队称用户可将其视作定制体验的 GNOME 扩展。COSMIC 目前提供了通知、工作区、应用程序、电池、wifi、蓝牙和媒体控制等基本默认小组件。

正在进行的其他工作包括支持 10 位色彩、支持 HDR(包括 Linux 桌面空间的其余部分),以及为新的 COSMIC 设置应用程序提供额外的面板。

COSMIC 桌面完成 App Store 上架工作

System76 的开发人员正在开发由 Rust 编写的 COSMIC 桌面环境,以满足其内部、Ubuntu 衍生的 Pop!_OS Linux 发行版的需要,并提供了该桌面工作的最新每月状态更新。2024年5月的COSMIC桌面一些改进包括:

Display mirroring 支持已接近完成。
Pop!_OS 24.40 软件包现在正在针对 ARM64 构建。
“ultra fast” COSMIC App Store 已接近完成。正在不断完善以解决用户体验问题:

Files 文件管理器新增了 GNOME 虚拟文件系统(GVFS)集成,用于处理外部存储和网络共享。
Greeter 与 logind 的集成。
Edit 现在支持 Windows 上常用的 CRLF 编码文件。
为 COSMIC Files、segmented buttons 和 libcosmic 导航菜单添加了拖放文本和图像的功能。一些与拖放相关的 compositor bugs 也得到了修复。
为 Launcher 和 App Library 添加了剪贴板支持。
为 Libcosmic 添加了通用上下文菜单小部件。
以及添加了许多修复和其他改进。更多详情可查看官方博客。

其给人第一印象:快,真的快。有人在虚拟机里跑了一下,结果让人有些意外:
启动到桌面:8秒;空闲内存占用:780MB。

作为对比,GNOME Shell 空闲时通常要吃掉 1.4GB 内存。COSMIC 几乎只要一半。COSMIC 的意义超出了 Pop!_OS 用户群体,它验证了 Rust 可以用于大规模 GUI 开发。

在 COSMIC 之前,Rust 桌面开发意味着命令行工具、系统实用程序或小型应用。最大的 Rust GUI 项目要么是实验性的,要么范围有限。现在知道了:
Rust 可以处理复杂的 GUI 应用(不只是 CLI 工具)
iced 工具包已经可以用于桌面级项目
内存安全不需要牺牲性能
一个小团队(System76 的桌面团队不到20人)可以构建完整的桌面环境

它打破了 GTK/Qt 的二十年垄断。
25年来,Linux 桌面意味着 GTK 或 Qt,GNOME 或 KDE。COSMIC 引入了第三条路:用 Rust 写,基于 iced,独立于两大工具包。Rust 桌面开发在规模上是可行的。"

如果符合以下情况可以考虑切换到 Pop!_OS 24.04:
想要平铺窗口管理但不想手动配置;
多显示器混合 DPI 设置在其他桌面上让人抓狂;
重视定制化,想在桌面上运行生产级 Rust 基础设施;
开发者想要一个干净、快速的环境(平铺功能对终端重度用户特别友好);
对 GNOME 定制限制感到沮丧,但还没准备好接受 KDE 的复杂性。

最新版本:22.04


项目主页:https://system76.com/pop