reblessed
THIS FORK ONLY CONTAINS FIXES & ROUGH PATCHES TO MAKE chjj/blessed AND THEN reblessed USABLE IN NIX-OS BUILDS
NOT FOR EVERYDAY USAGE, NO IMPROVEMENTS OVER kenan238/reblessed, EVEN DOWNGRADES
If you'd like to request a feature, make a new issue

A curses-like library with a high level terminal interface API for node.js.

The library's official author, "chjj", seems to have abandoned the project, as the last commit was in 2016.
All forks have also died, so I took matters into my own hands and forked the project.
Blessed is a fantastic project, so I revived this masterpiece from the dead under the name "Re-Blessed", as I wasn’t able to find any other TUI libraries that had exactly what a TUI application needed!
Install
Latest release
npm install everblessed
Latest source code
git clone git@github.com:shamansir/everblessed.git
Example
This will render a box with line borders containing the text 'Hello world!',
perfectly centered horizontally and vertically.
NOTE: It is recommend you use either smartCSR or fastCSR as a
reblessed.screen option. This will enable CSR when scrolling text in elements
or when manipulating lines.
const everblessed = require('everblessed');
const screen = everblessed.screen({
smartCSR: true
});
screen.title = 'my window title';
const box = everblessed.box({
top: 'center',
left: 'center',
width: '50%',
height: '50%',
content: 'Hello {bold}world{/bold}!',
tags: true,
border: {
type: 'line'
},
style: {
fg: 'white',
bg: 'magenta',
border: {
fg: '#f0f0f0'
},
hover: {
bg: 'green'
}
}
});
screen.append(box);
const icon = everblessed.image({
parent: box,
top: 0,
left: 0,
type: 'overlay',
width: 'shrink',
height: 'shrink',
file: __dirname + '/my-program-icon.png',
search: false
});
box.on('click', (data) => {
box.setContent('{center}Some different {red-fg}content{/red-fg}.{/center}');
screen.render();
});
box.key('enter', (ch, key) => {
box.setContent('{right}Even different {black-fg}content{/black-fg}.{/right}\n');
box.setLine(1, 'bar');
box.insertLine(1, 'foo');
screen.render();
});
screen.key(['escape', 'q', 'C-c'], (ch, key) => {
return process.exit(0);
});
box.focus();
screen.render();
Documentation
Go to the WIKI tab
Contribution and License Agreement
If you contribute code to this project, you are implicitly allowing your code
to be distributed under the MIT license. You are also implicitly verifying that
all code is your original work. </legalese>
New license
See LICENSE.md
Original License
Copyright (c) 2013-2015, Christopher Jeffrey. (MIT License)
See LICENSE for more info.