6年,2190天,一个窗口位置记忆的协议终于落地。对普通用户来说,这不过是"关掉电脑再打开,窗口还在老地方"的小事。但对Linux桌面生态,这是一块被踢来踢去的烫手山芋。
2020年2月:有人开了个头
GitLab上出现一条记录:"staging: Add xdg-session-management protocol"。提交者想解决一个具体场景: compositor崩溃、意外注销、或者后台应用主动销毁界面节省资源时,窗口位置能找回来。
这个需求听起来像基础功能。但当时Wayland(韦兰,Linux新一代显示服务器协议)的设计哲学是"极简",把很多传统X11(埃克斯十一,旧显示系统)里由服务器代劳的事,推给了应用自己和桌面环境协商。
协商就需要标准。没有标准,每个桌面环境各搞一套,应用开发者得写N套适配代码。于是这个协议被提出来,参考了Enlightenment(启蒙桌面环境)已经跑了两年的"session recovery"实现。
然后,它就在评审队列里躺下了。
6年拉锯:为什么一个"记住坐标"能拖这么久
Wayland的协议合并流程出了名的谨慎。每个改动要过三关:技术合理性、安全边界、以及——最关键的——各方利益平衡。
窗口位置恢复牵扯到三个角色:应用自己要知道"我刚才在哪",合成器(compositor,负责把应用画面拼到屏幕上)要配合存取数据,桌面环境要决定"什么时候恢复、恢复成什么样"。
三方接口要对齐,任何一方的过度设计都会变成另一方的负担。比如早期草案里关于"资源受限时主动销毁界面"的条款,就引发过争论:这会不会给应用开发者太多负担?合成器要不要强制参与决策?
更实际的阻力来自优先级。Wayland社区过去6年忙着解决更底层的问题:屏幕共享协议、输入法框架、高DPI缩放、NVIDIA驱动的兼容。窗口位置记忆属于"体验优化",排期一再后延。
但用户投诉没停过。Reddit和Fedora论坛里,"Wayland会话恢复"是高频抱怨词。有人甚至把这条GitLab issue链接贴在签名档里,每次有人吐槽就甩过去:"看,他们2019年就知道这事了。"
2025年3月:协议终稿落地
xdg-session-management终于合并进wayland-protocols主分支。这不是功能上线,而是"菜谱定稿"——工具集齐了,但菜还没炒。
真正的竞争现在才开始。KDE Plasma团队在"This Week in Plasma"博客里第一时间表态:KWin(KDE的窗口管理器)已有草稿实现,"serious movement soon"。
GNOME这边节奏稍慢。原本计划塞进GNOME 48,但开发日志显示进度没赶上。Mutter(GNOME的合成器)的补丁还在review,可能要等到48.x小版本或GNOME 49。
两边实现路径也有差异。KDE选择先在KWin层打通协议,再逐步暴露给应用;GNOME倾向于配合GTK(其自有工具包)做端到端优化。哪种更顺滑,得等用户实测。
对开发者意味着什么
协议定了,应用适配是下一步。Electron、Qt、GTK这些主流框架都得跟进。好消息是协议设计时参考了现有实践,迁移成本可控。
Electron应用可能受益最明显——很多跨平台工具在Wayland下窗口行为怪异,部分原因就是缺少会话恢复的标准接口。现在有了统一规范,Chromium内核的窗口管理可以少写一堆平台特例代码。
对独立开发者,这减少了一个"要不要为Wayland单独适配"的决策点。以前有些小工具干脆放弃Wayland支持,或者在XWayland(韦兰的X11兼容层)里凑合跑。协议标准化后,"原生Wayland"的维护门槛会降低。
但别指望明天就全员就位。协议合并只是起点,桌面环境实现、框架适配、应用更新、发行版集成,每一环都有延迟。保守估计,主流Linux发行版的默认体验改善要到2025年底或2026年。
一个窗口位置的蝴蝶效应
这件事的吊诡之处在于:Windows和macOS用户从未意识到这是个"功能"。系统崩溃后窗口归位,在这些平台是基线预期,不是卖点。
Wayland花了6年追赶这个基线,恰恰说明Linux桌面的碎片化代价。不是技术做不到,是"谁来做、按谁的标准做"的协调成本太高。
现在协议尘埃落定,KDE和GNOME的抢先实现也有竞争意味——谁家的会话恢复更顺滑,可能成为2025年桌面环境选型的一个微妙筹码。毕竟对每天开十几个窗口的开发者来说,"崩溃后不用重新摆窗口"是实打实的效率收益。
热门跟贴