Build a terminal dashboard with boxes, scrollable lists, progress bars, and tables updating in real time, without handling escape sequences manually.
Create a text-based interactive UI in Node.js with a layout system that supports percentage-based sizing, similar to CSS positioning.
Serve a blessed terminal UI app over a network connection so multiple users can share the same interactive session from their own terminals.
blessed is a JavaScript library for Node.js that lets you build interactive applications that run inside a terminal window. Instead of dealing with the low-level details of terminal escape sequences, you get a set of pre-built widgets, similar to the kind of interface elements you would find in a desktop application, but displayed in text mode. The library includes a wide range of widgets: boxes, text areas, scrollable lists, file browsers, forms with inputs and checkboxes, progress bars, tables, image viewers, and even a terminal widget that can run a terminal inside your terminal. Layout, positioning, and sizing can be specified in pixels or percentages, and styling supports colors, transparency, shadows, and hover effects. The API is designed to feel familiar to anyone who has built web interfaces, as it is modeled closely on the browser DOM. Under the hood, blessed reimplements ncurses from scratch in JavaScript by parsing terminfo and termcap definitions. Rather than redrawing the entire screen on each update, it tracks which parts of the screen have changed and only sends the minimum number of escape sequences needed to update those regions. This makes rendering fast even in complex layouts. The library supports event bubbling (events propagate up through parent widgets the way they do in a browser), artificial cursors, multiple screens, and server-side use (running a blessed app over a network connection in a shared terminal). It has been used as the foundation for other projects, including a text editor and a terminal dashboard library. The full README is longer than what was shown.
← chjj on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.