GNOME Shell Design Dreams

GNOME Shell Design Dreams

The GNOME Shell user interface has mostly seen minor refinements and quality of life updates in recent cycles, but on the design side we’ve explored a lot of longer-term things we’d like to do. Some of these we have relatively complete plans for, others are more vague ideas that need more research and prototyping. As always, getting things like these implemented depends on developer capacity and interest (and sometimes funding). While each of these ideas may require additional discussion, prototyping, and testing, we (the design team) have collected them all together here to share our longer-term vision and to give each idea more visibility.

在最近的几个版本周期中,GNOME Shell 用户界面主要进行了一些细微的改进和体验优化,但在设计层面,我们探索了许多希望在长期内实现的目标。其中一些我们已有相对完整的计划,另一些则仍是需要更多研究和原型设计的模糊构想。一如既往,这些功能的实现取决于开发者的能力、兴趣(有时还有资金支持)。虽然每一个想法可能都需要进一步的讨论、原型设计和测试,但我们(设计团队)将它们汇总于此,旨在分享我们的长期愿景,并提高每个构想的可见度。

The coherent and fluid spatial model was one of our proudest achievements with GNOME 40. When you navigate GNOME Shell, interface elements always come from somewhere, and exit to somewhere else, in a way that’s semantic and predictable over time. However, there are a few areas we’ve never been able to fully extend this ethos to. This includes GNOME Shell search, which just replaces the entire overview with search results when you start typing, with no animation or spatial model. We’ve long had the idea to switch to a more semantic layout for this, namely a search results overlay which spawns out of the search entry, above the rest of the overview. Very recently there has been some movement towards implementing this, and it’s likely that it will ship in 51 this fall.

搜索

连贯且流畅的空间模型是我们对 GNOME 40 最引以为傲的成就之一。当你在 GNOME Shell 中导航时,界面元素总是从某处出现,并移动到某处,这种方式在语义上是连贯且可预测的。然而,仍有一些领域我们未能完全贯彻这一理念。其中包括 GNOME Shell 的搜索功能——当你开始输入时,它会直接用搜索结果替换整个概览界面,没有任何动画或空间逻辑。我们长期以来一直构想将其改为更具语义的布局,即从搜索框中衍生出一个覆盖在概览界面之上的搜索结果浮层。最近,实现这一功能的进展顺利,很可能会在今年秋季发布的 51 版本中推出。

In addition to the layout change, we’d also like to update the search results with richer types of content and actions. Other OSes and various third-party apps (Alfred, Raycast, etc.) have search with built-in file previews, multiple actions per search results, search filters, and more. Some of this would probably require new APIs and apps to be ported to them, but there is a lot we could do here by just redesigning the existing UI.

除了布局调整外,我们还希望通过更丰富的内容类型和操作来更新搜索结果。其他操作系统和各种第三方应用(如 Alfred、Raycast 等)的搜索功能都内置了文件预览、针对搜索结果的多项操作、搜索过滤器等功能。虽然其中一些可能需要新的 API 和应用适配,但仅通过重新设计现有 UI,我们就能实现很多改进。

Editable Quick Settings

The Quick Settings pattern has seen wide adoption across all OS interfaces over the past decade, for obvious reasons: It puts a few essential pieces of information at your fingertips, and makes it easy to toggle some frequently needed system settings without going to the Settings app. We’re quite happy with our implementation, but as we’ve added more features (dark style, night light, power modes, keyboard backlight, etc.) the quick settings menu has grown larger and larger. And there’s more: There are a number of additional, even more niche things people would like in this area, such as a way to stop the computer from sleeping (the “Caffeine” extension adds a toggle for this). In order to accommodate all these cases, Android and iOS allow customizing this menu, allowing people to add or remove the more niche quick toggles depending on personal use. We would like to do something similar, with an inline editor as part of the menu in GNOME Shell.

可编辑的快速设置

过去十年中,快速设置模式在所有操作系统界面中得到了广泛应用,原因显而易见:它将一些关键信息置于触手可及之处,并使用户无需进入“设置”应用即可轻松切换常用的系统设置。我们对目前的实现感到满意,但随着我们添加了更多功能(深色模式、夜间模式、电源模式、键盘背光等),快速设置菜单变得越来越臃肿。不仅如此,用户还希望在这一区域加入更多小众功能,例如阻止电脑休眠的开关(“Caffeine”扩展程序就提供了此功能)。为了满足这些需求,Android 和 iOS 允许用户自定义此菜单,根据个人使用习惯添加或移除小众的快速开关。我们希望在 GNOME Shell 中实现类似的功能,即在菜单中内置一个编辑器。

Simplified Calendar Popover

The Calendar Popover in the top center has always been a bit of an odd mix of things. It contains several loosely related elements that can each have wildly different amounts of content: Sometimes there are lots of notifications, but no calendar events or clocks. Some people have lots of world clocks but don’t get many notifications. Until a few releases ago we even had the Do Not Disturb switch in this popover, despite functionally being a quick setting. Other systems (e.g. Android, Chrome OS) solve this by having the most important part of this menu (notifications) grouped with quick settings. This leaves only smaller, and less important items, which are also thematically better aligned: Calendar, events, world clocks, and weather. This move would also group the most frequently accessed systems status items (notifications and quick settings) in a single location, rather than having them spread across two separate ones.

简化的日历弹窗

顶部中央的日历弹窗一直是一个有些奇怪的混合体。它包含几个关联性不强的元素,每个元素的内容量差异巨大:有时通知很多,但没有日历事件或时钟;有些人有很多世界时钟,却没多少通知。直到几个版本前,我们甚至还将“勿扰模式”开关放在这个弹窗里,尽管从功能上讲它属于快速设置。其他系统(如 Android、Chrome OS)通过将菜单中最核心的部分(通知)与快速设置合并来解决这个问题。这样剩下的就只有更小、更次要且主题更统一的项目:日历、事件、世界时钟和天气。此举还能将最常访问的系统状态项(通知和快速设置)集中在一个位置,而不是分散在两个不同的地方。

Drag & Drop Window Organization

During the process of experimentation and user testing leading up to GNOME 40 we also played with alternatives to the mini-workspaces in the overview. One particularly interesting concept revolved around drag & drop: Instead of having to target one of the tiny workspaces at the top, the real workspaces would scale down when you start dragging a window, allowing for larger, richer drop targets and simplifying the spatial model to a single set of representations for windows in the overview. The specific interactions would need some refinements, but the testing we did leading up to GNOME 40 was promising, so we feel it would be worth giving this another try. In recent weeks, Cleo Menezes Jr. put together an extension testing this idea. We’re hoping to iterate on the design in the extension, and see where things go from there.

拖拽窗口组织

在 GNOME 40 发布前的实验和用户测试过程中,我们还尝试了概览界面中迷你工作区的替代方案。一个特别有趣的构想围绕“拖拽”展开:与其必须瞄准顶部微小的工作区,不如在开始拖拽窗口时让实际的工作区缩小,从而提供更大、更丰富的放置目标,并将空间模型简化为概览中窗口的一套统一表示。具体的交互方式还需要进一步打磨,但我们在 GNOME 40 之前所做的测试结果令人鼓舞,因此我们认为值得再次尝试。最近几周,Cleo Menezes Jr. 开发了一个测试该想法的扩展程序。我们希望通过该扩展迭代设计,并观察后续的发展。

Mosaic & Tiling

More powerful tiling is something we’ve long wanted, but which has never quite materialized for technical reasons. More generally we’re interested in improving window management as a whole though, making it a lot less manual and fiddly. A while back we designed a concept called “Mosaic”, which auto-resizes windows to fit new windows, negotiating space between different windows’ optimal sizes. This blog post describes the concept in more detail. There have been a number of extensions trying to implement parts of this concept over the years, but fundamentally the problem is that this would need better support in the compositor, so it can’t be cleanly done in an extension. That said, Cleo Menezes Jr’s MosaicWM extension is currently actively maintained and implements most of the concept. As the design team we’re in touch with them, and want to continue collaborating to evaluate and refine the design further.

马赛克与平铺

我们一直渴望实现更强大的平铺功能,但由于技术原因始终未能完全实现。更广泛地说,我们有兴趣全面改进窗口管理,使其不再那么依赖手动操作且繁琐。前段时间,我们设计了一个名为“Mosaic”的概念,它能自动调整窗口大小以适应新窗口,并在不同窗口的最佳尺寸之间协调空间。这篇博文详细描述了该概念。多年来,已有不少扩展程序试图实现这一概念的部分功能,但根本问题在于这需要合成器(Compositor)提供更好的支持,因此无法仅通过扩展程序完美实现。话虽如此,Cleo Menezes Jr. 的 MosaicWM 扩展目前维护活跃,并实现了该概念的大部分功能。作为设计团队,我们正与他们保持联系,并希望继续合作以评估和进一步完善该设计。