A desktop made for one
A desktop made for one / 为一人打造的桌面
For the first time in twenty-five years I’m sitting in front of a computer where almost every program I touch was designed by me. One tool at a time, the off-the-shelf option got swapped out for something a little closer to how my hands wanted to work. (I wrote about the start of this a couple of weeks ago — that post laid out the early swaps; this one is the view from the other side of the journey.)
这是二十五年来,我第一次坐在电脑前,所触及的几乎每一个程序都是由我亲自设计的。我将现成的工具逐一替换,换成了更符合我操作习惯的方案。(几周前我写过这个过程的开端——那篇文章记录了早期的替换工作;而这一篇则是这段旅程另一端的视角。)
It’s been a crazy few weeks guiding Claude Code inbetween all the other stuff I’m doing in life. I direct CC, it works while I do other stuff. I get a second or few in between tasks, and I respond. Then off it goes adding features or hunting bugs.
过去几周非常疯狂,我一边处理生活中的琐事,一边引导 Claude Code (CC) 工作。我指挥 CC,它在我忙别的事情时自动运行。我在任务间隙抽出几秒钟进行响应,然后它就继续去添加功能或修复 Bug 了。
Two suites in a happy marriage: CHasm, the bedrock — pure x86_64 assembly, no libc, the layer that paints pixels and reads keys. Fe₂O₃, the application layer in Rust, sitting on a small shared TUI library called crust.
两套系统完美结合:CHasm 是基石——纯 x86_64 汇编,无 libc,负责绘制像素和读取按键;Fe₂O₃ 是应用层,使用 Rust 编写,构建在一个名为 crust 的小型共享 TUI 库之上。
The CHasm layer (assembly) / CHasm 层(汇编)
| Role | Was | Now |
|---|---|---|
| Window manager | i3-wm | tile |
| Status bar / tray | i3bar + conky | strip + asmites |
| Screen locker | i3lock | bolt |
| Terminal emulator | kitty | glass |
| Login shell | zsh | rsh |
| File viewer | less | show |
The Fe₂O₃ layer (Rust on crust) / Fe₂O₃ 层(基于 crust 的 Rust)
| Role | Was | Now |
|---|---|---|
| Text editor | VIM | scribe |
| File manager | ranger | RTFM |
| Email / RSS / chat | mutt + newsbeuter + various web logins | pointer |
| Calendars | Google + MS web | kastrup |
| Astronomy panel | astropanel | tock |
| Movies / series | IMDB-terminal | astro |
What’s left? WeeChat for IRC and other chats. Firefox — the only GUI program I still use regularly. That’s it. Everything else is mine.
还剩下什么?用于 IRC 和其他聊天的 WeeChat。Firefox——这是我唯一还在经常使用的 GUI 程序。仅此而已。其他一切都是我自己的作品。
The vim line / 关于 Vim 的告别
Let me get a bit sentimental about vim, because vim was the one I thought I’d never replace. I started using it in 2001. For twenty-five years, every email I wrote went through vim. Every article. Every blog post. Every line of code, every HyperList, and every book. It was the one tool I would have called part of how I think. The muscle memory was so deep that I’d open random text fields in browsers and ended with typing :w.
请允许我为 Vim 感伤片刻,因为我曾以为自己永远不会替换掉它。我从 2001 年开始使用 Vim。二十五年来,我写的每一封邮件、每一篇文章、每一篇博客、每一行代码、每一个 HyperList 和每一本书,都是通过 Vim 完成的。它是我思维方式的一部分。这种肌肉记忆深深刻在骨子里,以至于我在浏览器中打开随机文本框时,最后总会下意识地输入 :w。
Then in three days I had scribe and stopped using vim. The first commit landed at 00:09 on May 1st. By afternoon today (May 3rd) vim was replaced. Twenty-five years of muscle memory rerouted in seventy-two hours. Vim is wonderful, but scribe is mine.
然而,仅仅用了三天,我就写出了 scribe 并停止使用 Vim。5 月 1 日凌晨 00:09 提交了第一次代码,到今天(5 月 3 日)下午,Vim 就被彻底取代了。二十五年的肌肉记忆在七十二小时内被重塑。Vim 很棒,但 scribe 是属于我的。
It’s modal like vim, but missing the ninety percent of features I never used, and carrying the handful of writer-shaped tweaks I always wished vim had. Soft-wrap by default. Reading mode with Limelight-style focus. AI in the prompt without leaving the buffer. HyperList editing with full syntax highlighting and the encryption format the Ruby HyperList app uses. Persistent registers shared across concurrent sessions is a cool feature. None of it revolutionary, but all of it shaped to my exact workflow. And whenever I think of an enhancement I want, it’s just minutes away. It used to be waiting for months or years or forever for some developer to get the same idea as mine and introduce it into the tool I use.
它像 Vim 一样是模态编辑,但去掉了我从不使用的 90% 的功能,并加入了那些我一直希望 Vim 能有的、专为写作者设计的调整:默认软换行;带有 Limelight 风格聚焦的阅读模式;无需离开缓冲区即可在提示符中使用 AI;支持完整语法高亮和 Ruby HyperList 应用加密格式的 HyperList 编辑。跨会话共享的持久寄存器也是个很酷的功能。这些功能谈不上革命性,但它们完全契合我的工作流。每当我想到一个改进点,只需几分钟就能实现。而过去,我往往需要等待数月、数年甚至永远,才能等到某个开发者产生和我一样的想法并将其引入工具中。
Why this is possible now / 为什么现在可以实现
It used to be that writing your own editor, your own file manager, your own window manager, was a project of years. I know, it took me a few years to get RTFM right. A serious undertaking with a serious cost. The economics of it didn’t work for most people, even programmers. You’d touch a piece of it, get most of the way, run out of weekend, and go back to the off-the-shelf tool.
过去,编写自己的编辑器、文件管理器或窗口管理器往往需要数年时间。我深有体会,光是把 RTFM 做好就花了我几年。这是一项代价高昂的艰巨任务。对于大多数人(甚至是程序员)来说,这种经济账算不过来。你可能动手做了一部分,进展大半,结果周末结束了,最后只能灰溜溜地回到现成的工具上。
That barrier is much lower now. With Rust, CC as the workhorse, and the fact that the hard problems of TUI programming have been documented to death… the cost of “build the tool you actually want” has fallen by orders of magnitude. I don’t think this is a story about AI or about Rust specifically. Both helped. But the deeper point is that the gap between “I wish my editor did X” and “okay, here’s an editor that does X” is now small enough to fit inside a few evenings of focused work.
现在这个门槛大大降低了。有了 Rust,有了作为主力工具的 CC,再加上 TUI 编程中的难题已经被彻底文档化……“构建你真正想要的工具”的成本已经下降了几个数量级。我不认为这仅仅是关于 AI 或 Rust 的故事,尽管它们都提供了帮助。更深层的意义在于,“我希望编辑器能做 X”与“好吧,这就是一个能做 X 的编辑器”之间的鸿沟,现在已经缩小到只需几个晚上的专注工作就能跨越。
I’m not selling anything / 我不是在推销什么
I should say what this post is not. It’s not an invitation to use my software. Honestly, please don’t. None of it is built for you. It’s built for me — for the way I hold my hands, the way I think about email, the way I want my calendar to render. I’m sure other people would find a hundred sharp edges I’ve never noticed because they happen to align perfectly with what I do.
我得说明这篇文章不是什么。它不是邀请你使用我的软件。老实说,请不要使用。它们都不是为你构建的,而是为我构建的——为了我放置双手的方式、我思考邮件的方式、我希望日历呈现的方式。我相信其他人会发现一百个我从未注意到的“尖锐边缘”,因为它们恰好与我的习惯完美契合。
It’s also not a request for kudos. The code isn’t novel, nor are the ideas. There’s nothing here that hasn’t been done before by someone with more taste, discipline or talent. What I want to do is show one specific thing: it is now genuinely feasible to make a desktop computing environment that fits one person. Instead of a configuration of someone else’s tools. This is no longer a heroic decade-long undertaking. This is an actual, weekend-by-weekend, “this thing in my life now does exactly what I want” replacement.
这也不是为了寻求赞美。代码并不新颖,想法也非首创。这里的一切,都有比我更有品味、更自律或更有天赋的人做过。我想展示的是一点:现在确实可行,去打造一个完全适合个人的桌面计算环境,而不是去配置别人的工具。这不再是一项需要十年时间的英雄式工程,而是一个实实在在的、利用周末时间、让生活中的工具“完全按我想要的方式运行”的替换过程。
The joy of an audience of one / 仅为一人服务的乐趣
The best part of building for myself: the relief of not having to care. I don’t have to think about configurability for someone with different preferences. And I don’t have to support corner cases I’d never personally hit. Nor do I have to write documentation for users who don’t exist. No more arguing on issue trackers about whether a default is the right default — of course it’s the right default, it’s the one I want. The editor’s ? cheatsheet shows the keys I memorised, in the order I prefer, with the bindings I think are sensible. Arrogance? Nope, it’s design without committee. The audience is one person. Decisions take seconds.
为自己构建软件最好的部分是:不必在乎他人的解脱感。我不必考虑那些有着不同偏好的人的配置需求,不必支持我个人永远不会遇到的边缘情况,也不必为不存在的用户编写文档。再也不用在 Issue 追踪器上争论某个默认设置是否正确——当然是正确的,因为那是我想要的。编辑器的 ? 速查表显示的是我记忆中的按键,按我偏好的顺序排列,绑定着我认为合理的快捷键。傲慢吗?不,这是没有委员会干预的设计。受众只有一个人,决策只需几秒钟。
It turns out an enormous amount of software complexity comes from accommodating users who aren’t you. Strip that out and what’s left is small, fast, exactly-shaped, and a quiet pleasure to use.
事实证明,大量的软件复杂性源于为了迁就“非你本人”的用户。剥离掉这些,剩下的部分小巧、快速、形状精准,使用起来是一种安静的愉悦。
So If you’ve ever caught yourself thinking “I wish my editor / file manager / status bar / shell just did this one thing differently” and you’ve been told the answer is to write a plugin, learn an obscure config language, or accept the way it is, then consider that the third option is more available than it used to be: Build Your Own Software (BYOS).
所以,如果你曾发现自己想:“我希望我的编辑器/文件管理器/状态栏/ Shell 能以不同的方式处理这件事”,而得到的回答总是“去写个插件”、“学习一种晦涩的配置语言”或“接受现状”,那么请考虑第三种选择,它比以往任何时候都更容易实现:构建你自己的软件 (BYOS)。