Hyprland
同是天涯沦落人,相逢何必曾相识。——白居易
一个不肯将就的窗口管理器
先说一件很小的事
你每天在这个东西上面花八个小时,却几乎从不注意它。
窗口管理器就是这样一个角色:它决定窗口怎么摆、切桌面时有没有动画、边框是灰的还是带渐变的、你按下那个键之后屏幕是立刻响应还是迟疑半秒。它不该抢戏,但它决定了你一天里几百次微小交互的手感。
绝大多数人用的是系统给的默认选项,能开窗口、能拖动、能最小化,就到此为止。
而有一小部分人不肯。他们愿意为「切换窗口时的曲线是贝塞尔还是弹簧」折腾一整个下午。
Hyprland 就是为这一小部分人准备的,而且它一点也不掩饰这一点。
项目地址:https://github.com/hyprwm/Hyprland
它的自我介绍是:一个独立的、高度可定制的、动态平铺的 Wayland 合成器,而且不在外观上做任何妥协。
最后半句是关键。通常一个平铺窗口管理器的宣传语会是「高效」「轻量」「键盘驱动」。而它把「好看」写进了第一句,还用了「不牺牲」这种带情绪的措辞。
三个词,各有各的分量
独立。 这个词在下面会单独讲,因为它在这份文档里的分量最重。
动态平铺。 窗口自动铺满屏幕,不留缝隙,但又是「动态」的——你可以随时把某个窗口拎出来浮动,可以让它占两块地,可以让它进一个标签组。不是那种死板的、一旦排好就不许动的平铺。
不牺牲外观。 这一条在平铺圈子里其实是个叛逆的宣言。很长一段时间里,这个圈子的审美是「越素越好」:一条细边框,一个纯色背景,最好的动画是没有动画。
Hyprland 的选择正相反。它把「糖果」当成一等公民。
「100% 独立」这四个字,是拿工程量换的
文档里那句话列了四个否定:不用 wlroots,不用 libweston,不用 kwin,不用 mutter。
前两个是 Wayland 世界里最常见的两块地基,后两个是 KDE 和 GNOME 的合成器核心。四个都不用的意思是:从协议到渲染,这条路它自己走了一遍。
这件事的代价,任何写过图形程序的人都能估算:你得自己处理缓冲区、自己对接 DRM、自己实现输入、自己踩平每个显卡驱动的坑。
而收益也很清楚:没有中间层,就没有中间层的限制。
想要一条别人没有的渲染路径?自己写。想让某个效果在合成阶段就完成,而不是等某个上游库开恩?自己写。
这也解释了它为什么敢在功能列表里写「最新的 Wayland 特性」和「不怕提供前沿功能」。站在别人的地基上,你只能等别人先盖;自己打地基,你想盖多高盖多高,塌了也算自己的。
致谢名单里有一句很诚实的话:wlroots——「过去为 Hyprland 提供动力」。它没有假装自己从来都是独立的。
「好看」被拆成了可执行的清单
最有意思的地方在于,它没有停在「好看」这个形容词上,而是把它拆成了一串具体名词:
渐变边框。很多种模糊。动画。辉光。阴影。以及「更多」。
这五样东西,每一样都能让一个窗口管理器多烧几毫秒的 GPU。放在一台轻薄本上,它们是电池续航的敌人;放在一块好屏幕上,它们是每天几百次的愉悦。
而动画那一栏,它专门提了一句:自定义的贝塞尔曲线和弹簧曲线,为了「最好的动画」。
贝塞尔和弹簧是两种不同的手感哲学。贝塞尔是可预测的、有始有终的;弹簧是带过冲的、有回弹的。愿意同时给你这两套,说明设计者知道不同的人对「顺滑」的定义不一样。
一个窗口管理器把动画曲线当成可配置项,而不是写死的常量——这大概就是「不牺牲外观」的实际含义。
布局:五种,外加一种语言
平铺窗口管理器通常有一种主打布局,其他靠插件补。
它给了五种:Dwindle、Scrolling、Master、Monocle,以及用 Lua 写的自定义布局。再加一条:用插件写的自定义布局。
而且还有「每个工作区各自的布局」。
最后这一条是很多人真正需要、但很少被满足的东西。写代码的时候你想要 Master,左边一列代码右边一列终端;看资料的时候你想要 Dwindle,几个窗口并排互相参考;打游戏的时候你只想要 Monocle,一个窗口占满。
大多数窗口管理器的答案是「你换一个工作区,我再换一套规则」。它的答案是:工作区一可以 Master,工作区二可以 Dwindle,各自记住各自的脾气。
那些「好像不该由它管」的功能
功能清单里有一批条目,看着像越界:
撕屏支持,为了更好的游戏性能。 撕裂在图形圈里一直是脏词,垂直同步才是政治正确。但竞技游戏玩家要的恰恰是那一帧的即时性。它把这个选项摆出来,让你自己选。
全局快捷键直接传给应用。 很多合成器会把某些组合键吃掉,导致你在游戏或 IDE 里的快捷键失灵。这条功能是在说:该你的键,我不抢。
Socket 的 IPC。 一条能被脚本调用的通道,意味着状态栏、快捷键守护、自动化脚本都能跟它对话。
原生 IME 与输入面板支持。 这一条在英文社区的窗口管理器里经常被忽略,而对中文、日文、韩文用户来说,它是「能不能日常用」的分水岭。
特殊工作区,也就是草稿纸。 一个随时呼出、随时收起的临时空间。
窗口组,标签模式。 把几个窗口叠成一组,像浏览器的标签页。
强大的窗口、显示器、图层规则。 一条规则能做的事,通常需要十个插件。
把这些放在一起看,它想覆盖的不是「技术用户的玩具」,而是「一个人从早到晚的全部桌面行为」。
保存即生效
功能列表里有一行字很短,但含金量很高:
配置文件一保存,立刻重载。
窗口管理器的配置,传统上是「改文件、重启、看看效果、不满意再改、再重启」。这个循环里,重启是最大的摩擦——它会关掉你所有的窗口,让你每次调整都要重建工作现场。
即时重载把这个循环压到了「改、看」两步。听着像个小功能,实际上是决定一个人愿不愿意真的去调它的关键。
配置这东西,改得越容易,人越会改;越难,人越会将就。
插件,和一个内置的插件管理器
「强大的插件支持」加上「内置的插件管理器」,这两条要一起读。
插件生态最容易死在两件事上:装起来太麻烦,和版本一升级全崩。
内置管理器解决前者。至于后者,那是所有插件系统的宿命,只能靠维护。
不过值得注意的是它的措辞:不是「支持插件」,是「最强大的插件」。这种话通常要挨打,除非真拿得出东西。
一句价值观声明
功能列表里有两条,不是功能,是态度:
代码库易于扩展、易于阅读。
快速且活跃的开发。
第一条很少见。窗口管理器这种底层项目,代码通常是「能跑就行」的重灾区。把「可读」当成卖点写进功能列表,等于向未来的贡献者承诺:你打开这个仓库,不会看到一坨没人敢碰的宏。
而「不怕提供前沿功能」这句,基本就是它的性格总结。它宁可让你在更新后遇到一个奇怪的 bug,也不愿意为了稳妥把功能压三年。
这种取向注定不会讨好所有人。但它会精准地讨好某一类人。
致谢名单,是一部家谱兼吐槽集
整份文档里我最喜欢的是这一节。六行,每行一个项目,每行后面一句括号:
wlroots——过去为 Hyprland 提供动力。
tinywl——展示了「事情该怎么做」。
Sway——展示了「用杀鸡用牛刀的方式该怎么做」。
Vivarium——展示了「用简单的方式该怎么做」。
dwl——展示了「用歪门邪道的方式该怎么做」。
Wayfire——展示了「某些图形活儿该怎么做」。
这六句话,把 Wayland 合成器这个圈子的几条技术路线一次讲完了:官方教程、重型实现、极简实现、极限 hack、图形专用。
写这段话的人显然是真心读过这些代码的。因为只有读过的人,才知道 Sway 是「过度的」,dwl 是「取巧的」,而这两句都不是贬义——它们描述的是两种不同的美学。
一个项目的致谢名单,往往比它的功能列表更能说明它从哪儿来。
顺手解释一下:平铺到底解决了什么
如果你从来没离开过默认桌面,这个词大概没什么实感。
普通桌面的逻辑是「窗口是纸,桌面是桌子」。你打开十个窗口,它们就一层层叠起来,你想找第三个,得先看看它被压在哪一层,或者去任务栏里翻。
平铺的逻辑是「窗口是瓷砖,桌面是墙」。每开一个窗口,墙上的砖自动重排,没有一块被遮住。你不需要找窗口,因为窗口永远在那儿。
代价是你要放弃「随意拖动摆放」这种自由,换来的是「永远不需要整理」这种自由。
而「动态」这两个字,就是在给这种交换留后路:想浮动就浮动,想全屏就全屏,想让它占两格就占两格。它不逼你做一个纯粹的人。
理解了这一层,才能理解那五种布局到底在争什么——它们争的不是美学,是「你想让屏幕按什么优先级分配」。
四扇门,和一份不打算哄你的文档
这份 README 很短,短到几乎没有安装命令。
它只在最上面摆了四个按钮:安装、快速开始、配置、参与贡献。四扇门,全部通向 wiki。
这是一个很明确的姿态:仓库负责展示它能做什么,不负责手把手教你装。
对比一下那些把「五分钟上手」写满三屏的项目,你会发现这是两种完全不同的产品观。一种假设你随时可能放弃,所以要拼命降低第一分钟的门槛;另一种假设你既然来了,就已经知道自己在找什么。
这种姿态有代价。它会劝退大量好奇的人,也会让新手在第一个权限报错前就掉头。
但对一个要接管你整个桌面、还要你亲手写配置文件的软件来说,这种筛选未必是坏事。装上一个不合心意的窗口管理器,比装不上更浪费时间。
谁该装,谁别装
把功能清单当需求对照表来读,答案其实很清楚。
该装的人:愿意手写配置、并且把「桌面手感」当成值得投资的一件事。你要的如果是一个能记住每个工作区布局、能把常驻窗口缩成草稿纸、能用脚本通过 socket 查询状态的桌面,那这份清单几乎每一条都在回答你。
可以试试的人:打游戏,又不想放弃平铺的人。撕屏支持和「全局快捷键不抢」这两条,明显是冲着这个场景写的。
必须确认一件事的人:日常用中文、日文或韩文输入的人。原生 IME 与输入面板支持写在功能列表里,这不是所有平铺合成器都能给的。但能不能真的顺手,取决于你的输入法与你的发行版,装之前先确认。
别装的人:想要「装完就能用」的人。这份文档连安装命令都放在 wiki 里,就说明它没打算哄你。你会得到一份配置文件、一堆选项和一大片空白,那片空白得你自己填。
这几类分完,你会发现它根本不是在跟 GNOME 或 KDE 抢用户。它抢的是那批已经决定「桌面要自己搭」的人——只不过过去他们只能在「好看」和「好用」之间二选一。
最后
回到最初那句话:不在外观上做任何妥协。
这句话其实可以翻译得更直白一点:它认为「好用」和「好看」不是一道单选题。
在这个圈子里,这个立场并不主流。主流的说法是「华丽的东西会拖慢你」,而它偏要证明两件事可以同时成立——用自己重写的地基,用可调的曲线,用一堆愿意为几毫秒买单的开关。
它当然有代价。你自己打地基,就得自己修每一处裂缝;你不怕前沿,就得接受偶尔的不稳定;你把选择权全给用户,就别指望有一套开箱即用的默认值能让所有人满意。
但这些代价,恰好是它那群用户愿意付的。
一个窗口管理器最理想的状态,是让你忘记它的存在。而 Hyprland 走的是另一条路:它希望你在切窗口的那零点二秒里,注意到那条曲线,然后心里想一句「嗯,好看」。
为了这零点二秒,它把地基重写了一遍。这事儿说起来挺不理智的——但桌面这东西,本来就不全是理智的事。
