Rendering anything rich in a terminal today means drawing offscreen, reading the pixels back, encoding them through the Kitty graphics protocol, and letting the emulator upload them to the GPU again. That’s a lot of round trips per frame.

Subcell borrows from the Wayland protocol instead: the client creates its own EGL context and claims a region of the terminal, and the emulator composites that surface directly. kitty_3D is the baseline it’s measured against: an OpenGL framebuffer rendered through the Kitty graphics protocol.

Posts & devlog