# 窗口管理新论：超越布局，回归对象

> 本文开放前 70% 正文，剩余内容会员可见。

原文：https://utgd.net/article/20817

窗口管理（window manage）是进阶用户间老生常谈的话题，其对应的市场固然不是什么富矿，倒也足够一批开发者活得较为滋润，否则的话，也不可能每年都看到几款新产品问世了。

然而，一如 Power User 在绝大多数问题上的模棱两可，谈及窗口管理时，每个人的概念也非常模糊，你可以随便抓一个人问：窗口管理究竟在管什么？一部分人会当场傻眼，也有人会不假思索地回应：当然是窗口了！然而，多数窗口管理工具都不限于此，例如 macOS 原生切换功能就就兼具软件和窗口两个层级，而一些更细心的第三方工具还深入到窗口之下的标签页。

软件、狭义窗口和标签页，就好像是生物学、分子化学和原子物理，处于不同层级，而广义上的窗口管理则总是混淆了三者。

早年间，我曾写过一篇用 Keyboard Maestro 管理窗口的文章，后来发布 Keyboard Maestro 付费栏目时又将其翻新了一遍再加梳理，自始至终，我都坚持广义窗口管理应当兼顾软件、狭义窗口和标签页三个层面的目标切换（switch），而在狭义窗口层面上还要另外考虑布局（主要是位置和大小）。

总之，所谓的窗口管理，就是如何切换窗口并调整布局。但现有工具并非从统一原理出发，而是零散功能的集合，鉴此，殊值斗胆提出窗口管理新论，以免将来的讨论又落入就工具谈方法的类推风格，明察秋毫却惜乎不见舆薪。

## 超越布局

窗口布局调整功能占据了广义窗口管理的半壁江山，然而，本文无意过多着墨。诚然，市面上多数软件热衷于把玩窗口布局，好像蒙得里安在玩弄格子艺术一样——以老牌的 Moon 为代表——甚至把屏幕分成九块、十六块或二十五块，搞得像在查看股市动态或者通过闭路电视监控器偷窥他人行踪一样，但实际工作恐怕还是左右各半屏居多，那些花哨的窗口布局，大概只能满足那些“我不用但你不能没有”的消费者。

窗口管理工具做了太多的假设，但问题不在于数量多，恰恰相反，在于不够多——总是刚好没有你想要的那种布局。这好像买了一把有几十个刀片的瑞士军刀，但是你要拧的那颗螺丝所对应的起子，偏偏不在其中。更合理的做法是给用户空间，让用户自行设置想要的布局，在这方面，老牌的 Moon、（作古的 ）Spectacle和 Keyboard Maestro 都做得不错。曾有人提出一种“从天而降的终端”，横亘整块屏幕上方，很有黑客帝国的感觉，实际上也非常实用、方便输入一些进阶命令。不过，若继续深挖，就会发现窗口布局话题好像是中国古代的算术例题册，内容确实又多又有趣，但背后没有什么统一的逻辑，基本只是举例子，我想就此打住——当然，也是为了把有趣的讨论留给将来。

唯独需要专门回应的是平铺式窗口管理（Tiling window manage），这类工具旨在自动调整窗口布局，尽可能让诸窗口像浴室瓷砖一样紧紧排布。平铺式窗口管理历史悠久，可以追溯到图形化界面刚刚出现的时候，但是历史悠久不一定总是好事，也可能意味着一个东西有自己的特殊背景：或许是因为电子屏幕非常昂贵，空间非常宝贵，当时的窗口管理完全有理由连一个像素都不放过。反观现在，更时髦的窗口管理则是像 macOS 的台前调度一样，搞一大块儿屏幕空间充当背景，再往中间挂一个小小的工作窗口，浪费如斯，和平铺式布局堪称一段光谱的两端。

平铺式窗口布局至今也有相当数量的拥趸，不过我个人对此兴趣不大。原因在于，窗口并非只是为了尽可能呈现更多内容，也要呈现得够舒服。假设你一边看文献一边做笔记，当你打开一篇新论文，平铺式窗口管理的默认做法就是牺牲其他窗口、给新窗口腾出空间，于是笔记窗口就可能被挤成一个竖条，每行才几个字，根本没法正常编辑或浏览。换言之，平铺式布局很容易破坏原本稳固的窗口状态。自由缩放固然是电子屏幕的优点，但不意味着你要永远让屏幕上的内容风起云涌。平铺式布局固然在利用率上得分不错，但是使用者是否舒服则是另一回事了。

借 Victor Papanek 的话说，许多开发者所设计的软件都是用户不存在的真空，截图看上去很酷，但是不怎么过问实际用起来如何。当代的平铺式窗口管理软件也有此倾向。若一味鼓吹平铺式布局，甚至把它视作窗口管理的终极形态，恐怕就陷入了和那些后现代艺术家一样无视真实世界的窘境。

## 回归对象

> 看不到材料就大谈工具的效率方法，如同不知道原子之存在就大谈吸力斥力，不知道细胞之根本就大谈生命活力，不知道细菌之广布就大谈天命神罚。浮在空中的楼阁已经多到每天产生无数思想交通事故，如今，有必要开拓一种分析下层基础的效率方法论。——工具的物理学：作为材料的软件，或言软件场

广义窗口切换实乃窗口管理最大的难题，而多数软件或是一叶障目，或是趋利避害，纷纷分而治之，却未见谁敢于一统三个层级。讨论确实需要分开，但是最终的解法却不见得是安装半打软件。

软件层面的窗口切换甚为简单，无非列出当前正在运行的软件——至于是否包含后台运行者，则至于细枝末节，此处不议——选中目标后再将其带到最前面，就像使用老式的英国转盘电话。不过，正因为目标太少，许多软件默认径直把软件图标照搬上来，无论 macOS 原生软件切换界面还是 Keyboard Maestro 这样的第三方工具，本质上呈现的都是图标列表，好像不过脑子就复制了 Dock 栏。

如果仅仅考虑软件切换，似乎上述设计无可非议，但如果继续考虑下面两个层级，那么这种像博物馆展架的一样的界面就值得商榷。事实上，恰是系统原生界面和一批老软件固化了我们的印象，进而让软件切换、狭义窗口切换和标签页切换变得泾渭分明，好像放置过久而分层的花生酱。但它们或许本应是一体的。

再来看狭义窗口切换：窗口管理软件的主战场。在这里，不难发现切换方式变得多元，不过还是能够摸到两个基本方向：一边在追求极端的视觉效果，把窗口缩略图铺在屏幕上；另一边则是抽象派，列出当前窗口的清单，供你从中选择。前者自然不必多言，macOS 自带的窗口管理就是这种模式，而我最喜欢的第三方窗口管理工具 AltTab 同样默认为铺开布局，只不过第三方软件多了几种风格——比如模仿 Windows 系统直来直去四四方方的视觉效果。

抽象派的代表当推 Keyboard Maestro，它并未傻乎乎地摆出窗口缩略图，而是在各个软件下列出当前窗口的清单。让我们记住两个极端的呈现方式，因为在理想的窗口管理中，三个层级应当有统一的呈现方式和交互逻辑，而能够担此重任的，只有抽象的列表界面。

注：不少 Keyboard Maestro 用户发现这玩意儿还自带窗口管理后，纷纷坦言 Keyboard Maestro 才是最好的窗口管理工具。与其说是因为它以软件为据将窗口分类，或许列表式的布局才是更深层的原因。

如果说前面两个层级尚且很多审美因素介入，最后让讨论不了了之，终结在“颜值即正义”这种肤浅的层面上，那么当我们讨论标签页切换时，就不得面对瞬间爆炸的对象数量。Finder 和浏览器均为适例，后者更是许多人的心头大患，不少工具已经着手解决浏览器标签页管理和切换问题，从 Chrome 浏览器的各式标签页管理插件、Firefox 浏览器的垂直标签页到 Safari 浏览器的侧边栏标签页分组，可谓八仙过海。但无论如何，在浏览器内部解决标签页切换问题，仍然局限在单个软件内，而标签页爆炸的地方远不止一处——Finder 怎么办呢？笔记软件又如何处理？或许你可以给浏览器装插件，但是在 macOS 的封闭花园里，似乎已经没有 Finder 插件的立锥之地，至于其他第三方软件，就算苹果不阻拦你，估计你也找不到愿意人给你写插件。

窗口管理貌似只有三个层级，但由于各个软件的标签页构架不同（如果不考虑有些软件没有标签页的话），基本没什么现成的统一切换方法。最终你可能要装半打软件，才能在常用软件中轻松切换标签页——这还不包括上面两个窗口管理的层级。

不过，一旦我们将目光投向自动化工具，则大有希望统一标签页切换方式。我目前选择的工具是 LaunchBar，

---

[前往标准阅读页](https://utgd.net/article/20817?audience=web)
