macOS needs its grid back

macOS needs its grid back

macOS 需要找回它的网格布局

Two decades ago I had a better Mac desktop experience than I have today. I only had a single low res (by todays standards) screen, yet I felt like Hugh Jackman in Swordfish - deftly navigating more than nine displays without thinking, muscle and spatial memory working seamlessly together. TLDR; I built an app to return macOS spaces to its Pre-Lion Grid-enabled Glory. Read on for the increasingly rare experience of an actual human dropping a bit of nostalgia, the thinking behind why make this and some issues encountered along the way. Or just download it here.

二十年前,我拥有的 Mac 桌面体验比现在要好。当时我只有一个(以今天的标准来看)分辨率很低的屏幕,但我却感觉自己像电影《剑鱼行动》里的休·杰克曼一样——无需思考就能灵巧地在九个以上的显示器之间切换,肌肉记忆和空间记忆完美地协同工作。简而言之:我开发了一款应用,旨在让 macOS 的“空间”(Spaces)功能重回 Lion 系统之前的网格辉煌时代。请继续阅读,体验一下在这个时代已不多见的、由真人分享的怀旧感悟,了解我开发这款应用的初衷以及过程中遇到的问题。或者,你也可以直接在这里下载。

2006

2006 年

Around the time I was experimenting with Japanese toilets, I was also experimenting with desktop operating systems. I had spent most of my developer career up to that point using Windows but had begun trying desktop Linux and then macOS after a popular presentation enticed me enough to buy a Mac just so I could start using TextMate. Textmate (and its revolutionary text-snippets) were the catalyst to my migration but funnily enough I don’t remember continuing to use it for very long. Other editors quickly caught up but I stayed with macOS. My career also moved into iOS development so it wasn’t really a choice after that. In any case one thing from that era did stay with me long term.

大约在我研究日本马桶的同一时期,我也在尝试各种桌面操作系统。在那之前,我的大部分开发者生涯都是在 Windows 上度过的,但后来我开始尝试桌面版 Linux,随后又因为一场精彩的演示而心动,买了一台 Mac,只为了能开始使用 TextMate。TextMate(及其革命性的代码片段功能)是我迁移系统的催化剂,但有趣的是,我不记得自己用了它多久。其他编辑器很快就赶上来了,但我留在了 macOS 上。我的职业生涯也转向了 iOS 开发,所以在那之后,我其实没得选。无论如何,那个时代有一件事一直伴随着我。

macOS Leopard Spaces

macOS Leopard 的“空间”功能

The big OS release in 2006 was macOS 10.5 Leopard. It had a bunch of feature releases, the most notable probably being Time Machine. But 20 years on I still don’t use nor miss Time Machine. I miss what John Sciracusa’s epic review labelled a grab bag item. I miss Spaces. Spaces introduced virtual desktops to macOS and allowed you to arrange them in a customisable grid. Anyone who has used virtual desktops in this way knows the benefit. It allows you to treat them like actual displays in spatial locations. I always favoured a 3x3 grid and treated it like I had 9 screens. Centre screen was my web browser, the screen above my web editor so I could flip back and forth with a single key press. Top left was Xcode, the screen below the iOS simulator. The other screens had other allocated applications/purposes that I don’t exactly remember (mail/itunes/chat etc…) but the benefits were obvious, I could move from one screen to another without thinking, it became muscle memory like I was looking at actual separate physical displays. I found this grid layout so useful I ended up incorporating it into other applications I built, the grid of 16 sequencing screens you could navigate in my Drum Machine EasyBeats was directly inspired by Apple’s screens.

2006 年 macOS 的重大版本更新是 10.5 Leopard。它发布了一系列新功能,其中最著名的可能就是 Time Machine(时间机器)。但 20 年过去了,我依然不用也不怀念 Time Machine。我怀念的是 John Sciracusa 在他那篇史诗级评测中称为“杂物袋”功能的东西。我怀念的是 Spaces。Spaces 为 macOS 引入了虚拟桌面,并允许你以可自定义的网格形式排列它们。任何以这种方式使用过虚拟桌面的人都知道它的好处。它让你能把它们当作空间位置上真实的显示器来对待。我一直偏爱 3x3 的网格,把它当作我有 9 个屏幕来用。中间的屏幕放浏览器,上面的屏幕放网页编辑器,这样我只需按下一个键就能在两者间切换。左上角是 Xcode,下面是 iOS 模拟器。其他屏幕分配给其他应用程序或用途,具体我记不清了(邮件、iTunes、聊天等),但好处显而易见:我可以在屏幕间无意识地切换,这变成了肌肉记忆,就像我在看着真实的物理显示器一样。我觉得这种网格布局非常有用,以至于我后来把它融入到了我开发的其它应用中——我的鼓机应用 EasyBeats 中那 16 个可导航的音序屏幕,就是直接受苹果这些屏幕的启发。

2011 macOS Lion

2011 年 macOS Lion

With the release of macOS Lion, Apple introduced Mission Control, its new take on virtual desktops that inexplicably restricted them to a horizontal line only. I remember thinking at first that I just hadn’t seen the setting somewhere, Apple wouldn’t just completely change how I used my computer right? right? Wrong. So Wrong. A single row was/is such a step backwards. If I wanted to get to a particular screen via the keyboard I now had to endure sliding horizontally the whole way. If I remembered the direct keyboard shortcut I could jump directly, but did I leave my browser on screen 7 or 8? This new layout completely destroyed any hope I had of maintaining spatial memory. I wasn’t alone in my frustration. Alternative solutions popped up but the best of them Total Spaces caused me weird slowdowns and relied on modifying the system dock which was a no go once that eventually required bypassing system integrity protection. Over time I gave up, and learned to deal with it. An iOS developer had little choice in the matter, and later when I moved onto a new chapter with my current employer I had already bought the extra physical screens and well… just dealt with it :sadface:.

随着 macOS Lion 的发布,苹果推出了 Mission Control,这是他们对虚拟桌面的新尝试,但令人费解的是,它将桌面限制为只能水平排列。我记得起初我以为只是我没找到设置选项,苹果不可能完全改变我使用电脑的方式,对吧?对吧?错了,大错特错。单行排列简直是一种倒退。如果我想通过键盘切换到特定屏幕,现在必须忍受水平滑过整个过程。如果我记得直接的快捷键,我可以跳过去,但我把浏览器留在第 7 个还是第 8 个屏幕了?这种新布局彻底摧毁了我维持空间记忆的任何希望。感到沮丧的不止我一个。虽然出现了一些替代方案,但其中最好的 Total Spaces 会导致奇怪的卡顿,而且依赖于修改系统 Dock,一旦这需要绕过系统完整性保护(SIP),就变得不可行了。久而久之,我放弃了,学会了忍受。作为一名 iOS 开发者,我别无选择。后来当我进入现任雇主开启职业生涯新篇章时,我已经买了额外的物理显示器,嗯……只能凑合用了 :sadface:。

But but window managers…

但是,窗口管理器呢……

Right now I know some readers are just shouting at their screen “Learn Yabai/Aerospace/whatever”. I’ve tried them all and come away realising they are not for me. I think that its that I don’t particularly like “windows on a desktop” as a concept. It feels like shuffling between papers on a desk, sure the papers can be organised neatly, but I really just want different workstations where everything is as I left it. I like macOS “fullscreen” apps, I sometimes put them in split mode but I really like the concept of dedicated areas for one task only.

我知道现在有些读者正对着屏幕大喊:“去学 Yabai/Aerospace 或者别的什么吧”。我都试过了,最后发现它们不适合我。我想是因为我不太喜欢“桌面上的窗口”这个概念。这感觉就像在桌子上整理纸张,虽然纸张可以整理得很整齐,但我真正想要的是不同的工作站,一切都保持在我离开时的样子。我喜欢 macOS 的“全屏”应用,有时我会用分屏模式,但我真的很喜欢为单一任务分配专用区域的概念。

A Solution Appears

解决方案出现了

Any way like I said, I had learnt to deal with it and merely occasionally complained to my colleagues about maybe moving back to Linux with my next work machine. That was until a couple of months ago, when I saw that someone had managed to remove the animation from macOS when you move from one space to another, without needing system edits. This animation clearly annoyed some people but never really bothered me. However as soon as I saw a space move without an animation I instantly realised I could solve my complaints.

总之,正如我所说,我已经学会了忍受,只是偶尔会向同事抱怨下一台工作电脑可能会换回 Linux。直到几个月前,我看到有人成功去除了 macOS 在空间切换时的动画效果,而且无需修改系统文件。这个动画显然困扰了一些人,但从未真正困扰过我。然而,当我看到空间切换不再有动画时,我立刻意识到我可以解决我的烦恼了。

Passion still has a place?

热情还有一席之地吗?

A common discussion with my tech career aligned friends is, in this new age of LLM code generation, does good software have value? If anyone can create software by simply describing it, does it (or will it) make sense to try to make paid software anymore? I think so. I think there is still real value in someone really refining something to the best it can be, making design decisions about how something should behave. I no longer make my living as an indie developer, but I did for a long time and I’m not sure much of what set a good app apart from the pack has changed. Take a look at any of those knockoff games that flood app stores. Most of the time the problem with them isn’t that they aren’t original or too simple, the problem is the person or team that built them doesn’t care. Caring is what makes the creator “waste” time hunting down things that don’t quite feel right or worry about performance issues most users will never notice. Anyway I really care about grid based navigation of virtual desktops.

我和志同道合的技术圈朋友经常讨论一个问题:在这个 LLM 代码生成的新时代,优秀的软件还有价值吗?如果任何人只需描述一下就能创建软件,那么尝试制作付费软件还有意义吗(或者未来还会有吗)?我认为有。我认为,有人真正将某样东西打磨到极致,并对软件的行为方式做出设计决策,这依然具有真正的价值。我不再以独立开发者为生,但我曾长期从事这一行,我不确定是什么让一款优秀的 App 脱颖而出,这一点发生了多大变化。看看那些充斥应用商店的山寨游戏吧。它们的问题通常不在于缺乏原创性或过于简单,而在于开发它们的人或团队根本不在乎。正是这种“在乎”,让创作者愿意“浪费”时间去寻找那些感觉不对劲的地方,或者去担心大多数用户永远不会注意到的性能问题。总之,我真的很在乎虚拟桌面的网格化导航。

Control aint easy

控制并不容易

I like the idea of a lightweight wrapper around the native spaces,

我喜欢这种围绕原生空间功能构建轻量级包装器的想法。