框架 – 第一个 Linux 汇编 X 服务器
在我追求拥有我的软件的过程中,有一个基础组件一直让我心烦……那就是 X 服务器。底层的图形引擎,将像素呈现到屏幕上的那个东西。X11 有 400 万行代码,几乎没有人能声称自己完全理解它。因此,我做了合理的事情。我用汇编语言写了自己的,叫做 frame。没有依赖,没有库,没有垃圾回收器。没有热路径,没有不必要的唤醒。当它处于空闲状态时,它安静无声。除非有人请教它,它才会发声。我的软件风格就是如此。它大约有 2 万行代码,已经可以运行我整个桌面以及我需要的 Firefox 和 GIMP。它仍然年轻,还有很长一段 X 协议列表等待我去处理。但它可以启动,能够绘制,我正在上面输入这个内容。因此,现在的技术栈看起来是这样的:在底部是 Linux 内核。在它之上是 frame。然后是带有信息条的窗口管理器 tile。tile 内部运行着终端 glass,而在 glass 里面居住着 shell bare。Bolt 从屏幕锁定器晋升为欢迎器,向 gdm 宣布退出。所有这些都是汇编语言编写的。整个 CHasm 大约有 10 万行代码。它取代的技术栈(gdm、X11、i3、conky、wezterm、zsh)则有超过五十倍的行数。我这么做是为了电池续航。我不确定这台笔记本电脑是否还有风扇,除了我自己。今天我给它上了数字。闲置状态下,frame 和 Xorg 消耗相同的功率,因为面板和 Wi-Fi 本身就决定了这个数值。但 Xorg 消耗的 CPU 是 frame 在空闲时的近三倍。而 tile 和 glass 在超过三分钟的测量中没有使用任何毫秒的时间。桌面在我触碰之前完全静止。除了桌面,我还有我的 Fe₂O₃ Rust 工具套件,现在它已经取代了我以前使用的其他所有工具。除了 Firefox。那是我定期使用的最后一个图形用户界面。其他的都是终端接口,使用相同的快捷键绑定,体积和电力需求都远低于它们所取代的工具。但它稳定吗?足够稳定,以至于我日常使用它,在上面写这篇文章,只有偶尔会大喊。当某些东西出现故障或我想要某个功能时,我会向我的朋友 Claude 描述这个烦恼。他从不疲倦,没有偏见,结果发现他是个很好的老师。我现在知道的关于硬件层、光标绘制、GPU 交接和事件观察者的知识比我原本计划了解的要多。手机也得到了同样的处理,我制作了自己的启动器,一个每日个性化的新闻摘要,以及一堆专门为一个人量身定制的应用程序。好处很简单。我拥有我需要和想要的东西。我控制并拥有软件,所有这些都被捐献给公共领域。为大量受众设计的软件适合每个人一点点。这正好适合一个人。链接到这篇文章:https://isene.org/2026/07/Frame.html
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡