Frame - the first Linux Assembly X server


Frame

On my quest to own my software, one foundational piece kept itching… the X server. The underlying graphics engine, the thing that puts pixels on the screen. X11 is 4 million lines of code, a beast very few can claim they understand. So I did the reasonable thing. I wrote my own, in Assembly.

It is called frame. No dependencies, no libraries, no garbage collector. No hot paths, no unnecessary wakeups. When it is idle, it sits still. It shuts up unless spoken to. My kind of software. It clocks in at some 20 thousand lines, and it already runs my whole desktop plus Firefox and GIMP whenever I need that. It is still young, and there is a long list of X protocol left to chew through. But it boots, it draws, and I am typing this on it.

So the stack now looks like this: The Linux kernel at the bottom. On top of that, frame. Then the window manager tile with the info bar strip. Inside tile runs the terminal glass, and in glass lives the shell bare. Bolt has been promoted from screen locker to greeter, showing gdm the door. All of it Assembly. All of CHasm together is about 100 thousand lines. The stack it replaced (gdm, X11, i3, conky, wezterm, zsh) is somewhere north of fifty times that. I did it for the battery life. I am not sure this laptop has a fan anymore. Except me.

Today I put numbers on it. Idle on battery, frame and Xorg pull the same watts, because the panel and the wifi own that number anyway. But Xorg burns almost three times the CPU that frame needs to do nothing. And tile and glass used zero milliseconds over three minutes of measuring. The desktop sits completely still until I touch it.

Beyond the desktop I have my Fe₂O₃ suite of Rust tools, which by now has replaced everything else I used to run. Except Firefox. That is the last GUI standing that I regularly use. The rest is terminal interfaces with the same keybindings everywhere, and a fraction of the size and electrical appetite of what they replaced.

Frame screenshot

But is it stable? Stable enough that I daily-drive it, write this post on it, and only occasionally yell. When something breaks or I want a feature, I turn to my buddy Claude and describe the itch. He never gets tired, is not opinionated, and turns out to be a really good teacher. I now know more about hardware layers, cursor painting, GPU handoffs and event watchers than I ever planned to.

The phone got the same treatment, with my own launcher, a daily personalized news digest and a pile of apps tailored for an audience of exactly one.

The upside is simple. I have what I need and want. I control and own the software, and all of it is given to the Public Domain. Software designed for a large audience fits everyone a little. This fits one person exactly.


Link to this post: https://isene.org/2026/07/Frame.html