你的桌面环境底层,到底藏着多少行代码?
如果你用的还是传统的X Window System,答案是让人头皮发麻的400万行。这是堆在Linux图形栈深处的一头巨兽,复杂到连维护者都不敢说彻底弄懂了它的每一根神经。但真的需要这么重吗?挪威一位开发者用自己的汇编项目给出了一个刺眼的对比:只需2万行。
正方观点很明确——X11再臃肿,也是无数设备、应用和窗口管理器运转的基石。它承载着Firefox、GIMP这些庞然大物的正常渲染,十几年的兼容性累积不是摆设。400万行代码确实让人望而生畏,但换来的是一套几乎“什么都能画”的协议体系。
![]()
反方则直接动手了。开发者isene在“掌控自己软件”的执念下,用汇编语言从零写出一个名为Frame的X服务器。没有依赖库、没有垃圾回收、没有多余的热路径和唤醒,空闲时就真的安静下来,不发一言。它目前只有2万行代码,却已经能托管一整个工作桌面,顺畅跑起Firefox和GIMP,这篇博文就是在Frame上敲出来的。更深层的替换从他亮出的数字里看得更清楚:持续测量三分钟,Frame配套的窗口管理器tile和终端glass使用的CPU时间是零。而在空闲状态下,虽然整机功耗因为面板和无线模块的存在与Xorg持平,但Xorg做同样“什么都不做”时消耗的CPU资源,几乎是Frame的三倍。
这种效率不是靠牺牲功能魔术变出来的。Frame还很年轻,有一长串X协议尚未实现,但作者已经拿它当日常主力使用,稳定到“偶尔才会嚎一声”。他坦然接受这份不完美,遇到问题或想加功能时就找Claude描述需求,用对话式编程把图形栈一层层补全。他开玩笑说,现在自己对硬件图层、光标绘制、GPU交接和事件监听的理解,已经超出了自己的职业规划。
辩论的落点不难判断:一边是通用性拉满但资源胃口惊人的庞然大物,一边是把“我的需求”推到极致、榨干每一毫瓦的极简替代。Frame不可能去满足所有人的场景,它甚至还没有替换掉作者浏览器以外的最后一个GUI应用。但它的存在证明了一件事——对于个体用户,那个必须为用不到的协议和抽象买单的时代,是可以选择退出。
![]()
这套思路延续到了整个软件栈。在Frame之上是窗口管理器Tile、终端Glass和Shell Bare,从屏幕锁升级为登录问候的Bolt也踢掉了gdm。所有组件加在一起大约10万行汇编,而被它们一同取代的gdm、X11、i3、conky、wezterm、zsh等等,代码体量是它的50倍以上。作者说这么做的初衷很朴素——为了电池续航,他的笔记本电脑现在安静得像根本没有风扇。除了偶尔冒出一个自己。
手机端也接受了同样的“瘦身手术”:专用启动器、每天定制的新闻摘要、一堆只为一个人设计的应用相继出现。他用一套基于Rust的工具集替换了几乎所有日常程序,留下的最后一个常用图形界面就是Firefox。所有软件全部以公共领域的形式放出,彻底拥抱“为一个人精确匹配”的软件哲学,而不是让最大公约数式的设计来勉强适应所有人。
不可回避的拷问是:这种只为自己写软件的选择,对普通人有多少参考价值?Frame省下的CPU周期和汇编带来的心智成本之间,也许并不是一笔人人愿意算的账。但至少,当一台笔记本可以在极简图形栈上安静到怀疑自己风扇已经停转时,我们有机会重新审视,那些藏在“必须如此”背后的庞然大物,究竟是不是真的必需。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.