A drop-in replacement for for Blessed. A high-level terminal interface library for node.js.
Go to file
Christopher Jeffrey 6dad574249 cleanup 2013-02-22 15:54:10 -06:00
example add termcap parser. 2013-02-22 15:51:13 -06:00
lib cleanup 2013-02-22 15:54:10 -06:00
LICENSE readme. license. 2013-01-27 10:06:58 -06:00
README.md readme. example. fixes. response codes. 2013-01-29 23:26:27 -06:00
good better escaping. 2013-02-21 05:39:29 -06:00
index.js initial 2013-01-27 04:30:52 -06:00
package.json v0.0.3 2013-02-01 21:00:51 -06:00

README.md

blessed

A curses-like library for node.js.

As of right now, it does not read all terminfo. It was designed for one terminal's terminfo: xterm, but if you understand the differences between the three popular vt100-based terminals (xterm, screen, rxvt), you should be able to use it for any terminal.

I want this library to eventually become a high-level library for terminal widgets.

Example Usage

var blessed = require('blessed')
  , program = blessed();

program.on('keypress', function(ch, key) {
  if (key.name === 'q') {
    program.clear();
    program.disableMouse();
    program.showCursor();
    program.normalBuffer();
    process.exit(0);
  }
});

program.on('mouse', function(data) {
  if (data.action === 'mouseup') return;
  program.move(1, program.rows);
  program.eraseInLine('right');
  if (data.action === 'wheelup') {
    program.write('Mouse wheel up at: ' + data.x + ', ' + data.y);
  } else if (data.action === 'wheeldown') {
    program.write('Mouse wheel down at: ' + data.x + ', ' + data.y);
  } else if (data.action === 'mousedown' && data.button === 'left') {
    program.write('Left button down at: ' + data.x + ', ' + data.y);
  } else if (data.action === 'mousedown' && data.button === 'right') {
    program.write('Right button down at: ' + data.x + ', ' + data.y);
  } else {
    program.write('Mouse at: ' + data.x + ', ' + data.y);
  }
  program.move(data.x, data.y);
  program.bg('red');
  program.write(' ');
  program.bg('!red');
});

program.on('focus', function() {
  program.move(1, program.rows);
  program.write('Gained focus.');
});

program.on('blur', function() {
  program.move(1, program.rows);
  program.write('Lost focus.');
});

program.alternateBuffer();
program.enableMouse();
program.hideCursor();
program.clear();

program.move(1, 1);
program.bg('black');
program.write('Hello world', 'blue fg');
program.setx((program.cols / 2 | 0) - 4);
program.down(5);
program.write('Hi again!');
program.bg('!black');
program.feed();

program.getCursor(function(err, data) {
  if (!err) {
    program.write('Cursor is at: ' + data.x + ', ' + data.y + '.');
    program.feed();
  }

  program.charset('SCLD');
  program.write('abcdefghijklmnopqrstuvwxyz0123456789');
  program.charset('US');
  program.setx(1);
});

License

Copyright (c) 2013, Christopher Jeffrey. (MIT License)

See LICENSE for more info.