explaingit

chjj/blessed

11,832JavaScriptAudience · developerComplexity · 3/5Setup · easy

TLDR

A Node.js library for building rich interactive apps that run inside a terminal window, offering pre-built widgets like boxes, lists, forms, tables, and progress bars without dealing with terminal escape codes.

Mindmap

mindmap
  root((blessed))
    What it does
      Terminal UI widgets
      Efficient screen rendering
      DOM-like event system
    Widgets
      Boxes and text
      Lists and tables
      Forms and inputs
      File browser
      Nested terminal
    Features
      Percentage layout
      Event bubbling
      Server-side mode
    Audience
      Node.js developers
      CLI tool builders
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a terminal dashboard with boxes, scrollable lists, progress bars, and tables updating in real time, without handling escape sequences manually.

USE CASE 2

Create a text-based interactive UI in Node.js with a layout system that supports percentage-based sizing, similar to CSS positioning.

USE CASE 3

Serve a blessed terminal UI app over a network connection so multiple users can share the same interactive session from their own terminals.

Tech stack

JavaScriptNode.js

Getting it running

Difficulty · easy Time to first run · 30min

In plain English

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.

Copy-paste prompts

Prompt 1
I want to build a terminal monitoring dashboard in Node.js using the blessed library. Show me how to create a screen with a CPU stats box, a scrollable log list, and a progress bar that all update every second.
Prompt 2
Using blessed in Node.js, how do I create a form with text inputs and checkboxes that captures user input and returns the submitted values?
Prompt 3
I want to add a file browser widget to my blessed terminal app. Show me how to set up the file manager widget and handle the file selection event.
Prompt 4
How do I build a blessed terminal app that runs as a server and renders the UI to multiple simultaneous SSH or TCP connections?
Open on GitHub → Explain another repo

← chjj on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.