从经典到激进重构:GNOME 桌面环境的演进历程与设计争议
Cheech
AI-assisted summary of 以人为本还是脱离实际?GNOME 桌面环境的演进及争议 — original source.
Article summary — original
从经典到激进重构:GNOME 桌面环境的演进历程与设计争议
随着 Linux 在北美市场份额突破 10%,Linux 桌面再次受到关注。作为主流桌面环境之一,GNOME 经历了从仿传统视窗布局到激进重构的重大转变,期间经历了大量设计迭代与社区争议。
Linux 在北美市场占有率突破 10%,Steam Deck 与 Win10 停止支持等因素促成了用户的迁移趋势。
GNOME 已从最初的技术缩写演变为独立的非营利品牌名,其演进历经 GNOME 1、2、3 及 GNOME 40 等阶段。
GNOME 3 推出的 Activities Overview 打破了传统 WIMP 范式,但初期由于崩溃和激进变动导致用户流失,促成了 MATE 和 Cinnamon 等桌面的诞生。
GNOME 40 改为水平工作区排列并引入 Libadwaita,将视觉风格与 GTK 解耦,逐步走向渐进式改进。
早期演进:从拟传统桌面到 GNOME 2 的成功
GNOME 1 创立之初沿用了类似 Windows 95 的桌面图标、控件与底栏任务栏习惯,但已引入工作区和支持 Lisp 深度定制的 Sawfish 窗口管理器。随后的 GNOME 2 采用双面板布局,因直观高效和良好的定制性成为多数主流 Linux 发行版的默认桌面,并在 Ubuntu 崛起过程中超越 KDE。其经典的桌面范式至今仍在 MATE 项目和 GNOME Classic Session 中得以延续。
GNOME 3 的激进重构与社区反弹
2011 年发布的 GNOME 3 彻底放弃了拼凑式面板,推出由 GNOME Shell 驱动的 Activities Overview。该设计整合了启动器、窗口与动态工作区,取消了传统任务栏并默认禁止放置桌面图标。然而,这种激进的交互重塑加上发布初期的频繁崩溃引发了严重水土不服与用户流失,促使不满的用户和开发者分流创建了基于旧代码的 MATE 或回归传统体验的 Cinnamon。面对批评,GNOME 承诺放缓激进变革,转入渐进式演进。
现代转型:GNOME 40 与 Libadwaita
在吸取前期教训后,GNOME 开展了充分的可用性研究,并在 GNOME 40 中将工作区从垂直排列改为水平排列,以提升空间隐喻和手势一致性。同时,GNOME 引入了 Wayland 支持,并通过 GTK 4 库 Libadwaita 将桌面视觉风格与底层框架解耦,不仅增强了 GTK 的跨平台通用性,也为开发者构建契合 GNOME 人机界面指南的应用提供了统一规范。
Article summary — zh
从经典到激进重构:GNOME 桌面环境的演进历程与设计争议
随着 Linux 在北美市场份额突破 10%,Linux 桌面再次受到关注。作为主流桌面环境之一,GNOME 经历了从仿传统视窗布局到激进重构的重大转变,期间经历了大量设计迭代与社区争议。
Linux 在北美市场占有率突破 10%,Steam Deck 与 Win10 停止支持等因素促成了用户的迁移趋势。
GNOME 已从最初的技术缩写演变为独立的非营利品牌名,其演进历经 GNOME 1、2、3 及 GNOME 40 等阶段。
GNOME 3 推出的 Activities Overview 打破了传统 WIMP 范式,但初期由于崩溃和激进变动导致用户流失,促成了 MATE 和 Cinnamon 等桌面的诞生。
GNOME 40 改为水平工作区排列并引入 Libadwaita,将视觉风格与 GTK 解耦,逐步走向渐进式改进。
早期演进:从拟传统桌面到 GNOME 2 的成功
GNOME 1 创立之初沿用了类似 Windows 95 的桌面图标、控件与底栏任务栏习惯,但已引入工作区和支持 Lisp 深度定制的 Sawfish 窗口管理器。随后的 GNOME 2 采用双面板布局,因直观高效和良好的定制性成为多数主流 Linux 发行版的默认桌面,并在 Ubuntu 崛起过程中超越 KDE。其经典的桌面范式至今仍在 MATE 项目和 GNOME Classic Session 中得以延续。
GNOME 3 的激进重构与社区反弹
2011 年发布的 GNOME 3 彻底放弃了拼凑式面板,推出由 GNOME Shell 驱动的 Activities Overview。该设计整合了启动器、窗口与动态工作区,取消了传统任务栏并默认禁止放置桌面图标。然而,这种激进的交互重塑加上发布初期的频繁崩溃引发了严重水土不服与用户流失,促使不满的用户和开发者分流创建了基于旧代码的 MATE 或回归传统体验的 Cinnamon。面对批评,GNOME 承诺放缓激进变革,转入渐进式演进。
现代转型:GNOME 40 与 Libadwaita
在吸取前期教训后,GNOME 开展了充分的可用性研究,并在 GNOME 40 中将工作区从垂直排列改为水平排列,以提升空间隐喻和手势一致性。同时,GNOME 引入了 Wayland 支持,并通过 GTK 4 库 Libadwaita 将桌面视觉风格与底层框架解耦,不仅增强了 GTK 的跨平台通用性,也为开发者构建契合 GNOME 人机界面指南的应用提供了统一规范。
Saved original article
1999 年,时任 SUSE 首席技术官的 Dirk Hohndel 大概不会想到,自己口中的「Linux 桌面元年」此后会被反复提起,成为圈内一个著名的迷因。每年都有人扮演先知,然后看着统计报告上的数字在 5% 下方徘徊。
然而今年 8 月,Linux 在北美市场上的占有率突破 10%。Win10 结束支持、Steam Deck 的火爆都在一定程度上促使用户向 Linux 桌面迁移。就在前不久,Ruby on Rails 的创始人 DHH 更是凭其个人影响力为旗下的发行版 Omarchy 募集到 800 万美元的资金。Linux 桌面走进大众视野,似乎又要迎来曙光。
那明年会是 Linux 桌面元年吗?恐怕依旧不会。
现在是尝试 Linux 桌面的最好时机吗?我认为是的。
Freedom is not just for geeks.
我第一次接触 Linux 桌面要追溯到十几年前。而今系统和驱动的安装远比过去容易,软件生态也逐步摆脱贫瘠<sup>1</sup>。目前新用户面对的挑战主要来自两方面:命令行,以及绕不过的发行版碎片化问题。
但不论你选择哪个发行版,其默认的桌面环境大概率是 KDE 或者 GNOME。前者比较贴合 Windows 用户的使用习惯,后者则挑战那些「习惯」。作为多年的 GNOME 用户,我将在下文中介绍它一路来的设计演进,以及这些年发生过的争议与纠缠。
GNOME,即**G**NU **N**etwork **O**bject **M**ethod **E**nvironment。然而该全称目前不再有任何意义,原因在于:
所以目前 GNOME 不再被视为某种缩写,而是作为一个非营利组织下的独立品牌名存在。一些官方视频中仍将 GNOME 读作*guh-NOME*,就上面的论述可见,将 GNOME 直接读作*NOME* 也有充足理由。
GNOME 的演进大致分为如下几个阶段:
创立之初,GNOME 并未急于开拓新的工作流范式。从下图可见,当时的 GNOME 类似 Win95,桌面图标、窗口控件及底部的任务栏仍符合大多数用户的使用习惯。留心底栏,你会发现工作区在 GNOME 1 时便已经存在。
值得一提的是,当时的窗口管理器 Sawfish 支持用户使用 Lisp 脚本进行深度定制,此后 GNOME 的设计目标开始转变,而 Sawfish 也被更简洁,同时自定义程度更低的窗口管理器所替代。
同 GNOME 1 相比,GNOME 2 界面上最明显的变化是其全新的双面板布局。面板上的组件可自由摆放,一般情况下,用户会在顶栏上放置主菜单与系统托盘,底栏上则是窗口列表和工作区切换器。
GNOME 2 朴素的界面对用户来说十分直观高效。由于其不错的定制性与生产力,GNOME 2 成为了多数主流发行版的默认桌面,并随 Ubuntu 的崛起,在占有率上逐渐超越当时的 KDE。其里程碑式的成功也在后来推动了[MATE](https://mate-desktop.org/)等项目的诞生。而 GNOME 至今都包含一个 Classic Session,来为「怀旧」的用户提供一个 GNOME 2 桌面布局的模拟。
早在 2005 年,对下一代 GNOME 的[概念性探索](<https://wiki.gnome.org/BrianMuhumuza(2f)ToPaZ(2f)DeskTop.html>)就已开始。2008 年 10 月,在为期 5 天的 GNOME UX Hackfest 上,GNOME 3 完成了最初的构想。开发者希望用一个整体性的界面层——后来被称为 GNOME Shell,来取代 GNOME 2 的中面板、菜单等独立部件的拼凑。他们期待一次重新设计能解决 GNOME 2 时期的一些顽疾,比如:
设计的最终成果,便是 GNOME Shell 中的 Activities Overview。
结合图上标注,让我们看看 Activities Overview 是如何解决上述问题的:
对比 macOS 中的 Mission Control,可以发现两者的设计存在一定的相似性。其中最大的一个差异是:GNOME 中工作区默认是动态的,即 GNOME 会根据工作区内的窗口数量自动新增或删除工作区。
Activities Overview 集应用启动、窗口与工作区切换等功能于一身。这种一体化的导航机制是对 WIMP 范式<sup>4</sup>的一次激进重构。而在 Activities Overview 之外,原来的桌面又如何呢?
GNOME 3 中,用户可以通过按下 Super 键<sup>5</sup>在 Activities Overview 与桌面中来回切换。桌面被分为两个区域,即顶栏和顶栏下的窗口区域。任务栏消失了。而在默认情况下,用户不可以在桌面上放置图标。
历经数年开发,GNOME 3 终于在 2011 年 4 月 6 日正式发布。在发布后的一次[采访](https://thegnomejournal.wordpress.com/2011/04/06/how-we-got-here-part-i-of-a-design-history-of-gnome-3-the-shell/)中,主设计师 Jon McCann 提到,他希望这一代的 GNOME 能让用户感到更加专注、敏锐、高效、能干、被尊重、愉悦,并且自在。
很不幸,他的希望落空了。
相对 GNOME 2,GNOME 3 并非是一次渐进式的改进,必然引发大量用户的水土不服。同时,GNOME Shell 初期的频繁崩溃堪称灾难,直接导致 GNOME 2 时代积攒的用户大量流失。种种不满也催动了新的桌面环境产生:前文提及的 MATE 就基于 GNOME 2,而[Cinnamon](https://github.com/linuxmint/cinnamon/)则选择在 GNOME 3 的基底上,回归传统的桌面范式。
面对铺天盖地的批评,GNOME 方否认在设计过程中无视反馈、忽视用户需求,同时保证:预计在很长一段时间内,团队都不会再做出如此程度的变革了。于是,代替 GNOME 2,GNOME 3 踏上了自己的渐进式演进之路。
GNOME 每半年发布一个稳定版本,在 GNOME 3 时期,稳定版的版本号以偶数结尾(例如 GNOME 3.6 的下一个稳定版为 GNOME 3.8),除了对细节、性能的打磨外,GNOME 在这一时期最主要的变化是引入了下一代显示服务器协议[Wayland](https://wayland.freedesktop.org/)的支持。在 GNOME 3.38 后,GNOME 团队将版本号改为 GNOME 40,同时带来了全新的 Activities Overview 设计。
人不能在同一个地方摔倒两次。此次 GNOME 吸取了先前的教训,在正式设计前展开了充分的可用性研究。新设计中,工作区从垂直排列变为从左到右的水平排列,为用户提供了更好的空间隐喻与触摸手势上的一致性。
除了改进 Activities Overview 的设计,GNOME 团队的另一个成果是为 GTK<sup>6</sup> 4 开发的库:Libadwaita。过去,GNOME 的主题 Adwaita 与 GTK 直接捆绑,Libadwaita 的出现将 GNOME 的视觉风格与 GTK 解耦,使后者拥有更好的通用性和平台无关性。而开发者也能借 Libadwaita 编写更符合 GNOME[人机界面指南](https://developer.gnome.org/hig/)的应用。
这一节中,我将为读者粗略地介绍一下当前 GNOME 桌面环境<sup>7</sup>的使用。读者可在[线上](https://help.gnome.org/gnome-help/)或 GNOME 自带的帮助应用内阅读更为详尽的使用文档。若你想完整体验 GNOME,最好的方式是通过某个发行版(比如 Fedora)的 Live CD,或是在虚拟机中安装[GNOME OS](https://os.gnome.org/)。
GNOME 桌面环境主要由 GNOME Shell 和一些自带的核心应用组成。当前的 GNOME Shell 同 GNOME 3 发布之初相比并没有太多结构性上的变化,依旧可视为普通桌面与 Activities Overview 的组合。
让我们先从桌面看起:
结合标注,上图中:
`Super+L`进行锁屏。`Super+Tab`/`` Super+` ``在不同窗口或同一应用的不同窗口间进行切换,并通过三指在触摸板上左右滑动或`Ctrl`+`Alt`+左右方向键来切换工作区。注意默认情况下,GNOME 下的 GTK 应用只在右侧显示「关闭」的窗口按钮。我会在后文中对这一点进行展开。
接下来让我们进入 Activities Overview。从桌面进入 Overview 有三种方式:
上图中,按标注从上往下,依次是: