The beauty of accurate rendering

If DOOM is the speed test for a terminal, btop is the accuracy test. It is a system monitor, and on the surface it does nothing exotic. But look at what it puts on the screen every second: CPU and memory graphs drawn in Braille dots, boxes with rounded corners, block-character meters, 24-bit color gradients on nearly every cell, mouse-driven scrollbars, and a full redraw wrapped in a synchronized-output frame so nothing tears. It uses almost every rendering trick a modern terminal application can use, and it uses all of them at once, forever.

A terminal that gets one thing slightly wrong shows it in btop immediately. Graphs that look like rows of dots instead of a line. Box corners with a gap where the sides should meet. A screen that flickers on every refresh. A cursor that is somehow in the wrong place after the first frame. Over the last few months we fixed a long list of things in AbsoluteTelnet/SSH that fall into exactly this category, and btop is the cleanest way to show what changed.

Graphs that are actually graphs

btop draws its history graphs with Braille characters. Each cell is a 2-by-4 grid of dots, so a row of Braille cells is really a tiny bitmap eight dots tall, and a graph is a run of those cells side by side. For the graph to look like a line, the dots in one cell have to line up with the dots in the next one. The pitch between dots has to be the same across the cell boundary as it is inside the cell.

A font cannot do that. A font centers each Braille glyph inside its advance width with side bearings on either side, so the dots clump toward the middle of every cell and the grid breaks up at every boundary. That is why btop graphs in a lot of terminals look like a string of beads rather than a curve.

AbsoluteTelnet now draws the entire Braille block itself instead of asking the font. The cell is partitioned into a 2-by-4 grid of sub-cells on a rounded pixel lattice, and each dot is its sub-cell inset by a uniform gap. Because the cell origins are exact multiples of the cell size, the lattice lines up across cell boundaries, and a run of Braille cells becomes one continuous pixel grid. When the cell width is odd or the height is not a multiple of four, the leftover pixel goes into the size of a dot, where you cannot see it, instead of into a gap, where you can.

Boxes that connect

The same idea applies to the box-drawing characters btop uses for its panels. The whole box-drawing range, including the rounded corners btop turns on by default, is drawn directly from geometry rather than from font glyphs. Lines are exactly cell-relative, so a horizontal line meets a vertical one with no sliver at the join, and heavy, double, and single lines share a common center so a double rail lines up with the single line that crosses it. The rounded corners are real quarter circles, tangent to the lines they connect, rather than the square corners some fonts substitute.

The shade blocks, the light, medium, and dark stipples, are drawn as an ordered dither aligned to a global pixel grid instead of a per-cell pattern. A run of them reads as one continuous field with no seam at the cell edge.

None of this is configurable and none of it depends on which font you picked. It looks the same in Cascadia, Consolas, or anything else.

Frames that arrive whole

btop wraps every refresh in synchronized output, the DEC private mode 2026 that says “hold the display until I tell you the frame is complete.” A terminal that ignores it paints whatever has arrived so far, which is where the flicker comes from.

AbsoluteTelnet honors it, and the implementation was rebuilt this year to do it properly. When the frame closes, the terminal captures a snapshot of the screen on the data thread and hands that to the painter. The application never waits on the paint and the paint never sees a half-written frame. The row where the cursor sat before the frame began is invalidated too, which closed a bug where a ghost cursor from the previous frame stayed on screen.

One more fix in this area matters for anything that redraws quickly. When a frame took longer to paint than the interval between frames, the presentation messages backed up in the Windows message queue ahead of mouse and keyboard input, and the terminal’s own interface went dead while the animation kept running. Presentation now rides the ordinary paint message, so Windows’ own queue priority keeps input alive no matter how fast the host is drawing.

Try it

btop is in every major package repository. Connect to a Linux host with AbsoluteTelnet/SSH, run btop, and press Escape for the options menu if you want to confirm the settings the screenshot uses. Graph symbol set to braille and rounded corners on are both defaults.

sudo apt install btop      # Debian and Ubuntu
sudo dnf install btop      # Fedora and RHEL family
btop

A 24-bit color theme and a UTF-8 locale on the host are all it needs. If your graphs still look like beads, the terminal is the problem, not btop.

AbsoluteTelnet/SSH 14.15 is available now. Download it here. Existing customers with a current maintenance subscription get it as a free update.

Leave a Comment

Your email address will not be published. Required fields are marked *