A full-blown terminal lib featuring: 256 colors, styles, keys & mouse handling, input field, progress bars, screen buffer (including 32-bit composition), text buffer, and many more...
Whether you just need colors & styles, build a simple interactive command line tool or a complexe terminal application: this is the absolute terminal lib for Node.js!
It does NOT depend on ncurses.
- License: MIT
- Platform: linux and any xterm-compatible terminal.
These terminals have been successfully tested:
- xterm
- gnome-terminal
- Konsole
- iTerm
- Terminator
- xfce4-terminal
- Linux Console
- rxvt/urxvt
- Eterm
- Terminology
- Your terminal? Help tracking terminal compatibilities on github!
Some tutorials are available at blog.soulserv.net/tag/terminal.
// Require the lib, get a working terminal
var term = require( 'terminal-kit' ).terminal ;
// The term() function simply output a string to stdout, using current style
// output "Hello world!" in default terminal's colors
term( 'Hello world!\n' ) ;
// This output 'red' in red
term.red( 'red' ) ;
// This output 'bold' in bold
term.bold( 'bold' ) ;
// output 'mixed' using bold, underlined & red, exposing the style-mixing syntax
term.bold.underline.red( 'mixed' ) ;
// printf() style formatting everywhere:
// this will output 'My name is Jack, I'm 32.' in green
term.green( "My name is %s, I'm %d.\n" , 'Jack' , 32 ) ;
// Since v0.16.x, style markup are supported as a shorthand.
// Those two lines produce the same result.
term( "My name is " ).red( "Jack" )( " and I'm " ).green( "32\n" ) ;
term( "My name is ^rJack^ and I'm ^g32\n" ) ;
// Width and height of the terminal
term( 'The terminal size is %dx%d' , term.width , term.height ) ;
// Move the cursor at the upper-left corner
term.moveTo( 1 , 1 ) ;
// We can always pass additional arguments that will be displayed...
term.moveTo( 1 , 1 , 'Upper-left corner' ) ;
// ... and formated
term.moveTo( 1 , 1 , "My name is %s, I'm %d.\n" , 'Jack' , 32 ) ;
// ... or even combined with other styles
term.moveTo.cyan( 1 , 1 , "My name is %s, I'm %d.\n" , 'Jack' , 32 ) ;
// Get some user input
term.magenta( "Enter your name: " ) ;
term.inputField(
function( error , input ) {
term.green( "\nYour name is '%s'\n" , input ) ;
}
) ;
Use Node Package Manager:
npm install terminal-kit
In all examples, termkit
is assumed to be var termkit = require( 'terminal-kit' ) ;
while term
is assumed
to be var term = require( 'terminal-kit' ).terminal ;
or var term = termkit.terminal ;
.
So term
is an instanceof of termkit.Terminal
, that should in almost all cases match correctly the terminal you
are currently using. This is the default terminal.
You can also define your own terminal interface, see .createTerminal().
-
New ScreenBuffer HD
-
New Document model for rich app GUI, available elements:
- Document
- Button
- ColumnMenu
- ColumnMenuMulti
- DropDownMenu
- EditableTextBox
- Form
- LabeledInput
- Layout
- RowMenu
- SelectList
- SelectListMulti
- TextBox
- Text
- ToggleButton
See also those base classes: