article_image

注:这篇基于 macOS,但原理应当可移植到其他主流桌面系统。考虑到文章首发于 UNTAG,此地多数文章都在讨论 Apple 环境,故文中不再反复强调背景。

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

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

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

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

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

超越布局

“管理”一词过于模糊,狭义上基本等于窗口布局管理,广义上则还包括目标切换,且无论中英文社区都用词随意,故我将两者置于同一文章中讨论。如果您早已厘清布局管理和目标切换,则不读本节也罢。

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

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

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

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

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

回归对象

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

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

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

Alt text
macOS 和 Keyboard Maestro 的软件切换界面均为图标式

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

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

Alt text
macOS 默认的窗口切换为铺开式

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

Alt text
Keyboard Maestro 的窗口切换界面为列表式

author_avatar

Lawyer, macOS/iOS Automation Amateur