Frame - the first Linux Assembly X server

[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.

own my software

X11

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.

frame

GIMP

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.

tile

strip

glass

bare

Bolt

CHasm

battery life

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.

Fe₂O₃ suite

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.

Claude

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.

phone got the same treatment

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

#Geekery

#Technology