XTerm Widget for Blessed Curses Environment
XTerm Widget for Blessed Curses Environment
This is an XTerm emulating terminal widget for the awesome
Blessed Curses environment of
Node.js. It allows the execution of interactive terminal programs in a
Blessed Box-derived widget while providing a full-featured and fully
compatible emulated XTerm rendering environment to those programs.
Blessed XTerm is actually a more modern variant of the Terminal widget
as shipped with the Blessed Curses environment. The difference to the
regular Terminal widget is: (1) the Blessed XTerm widget uses the
newer and more portable node-pty
module, instead of the ancient pty.js
module, for Pseudo TTY management, (2) it uses the newer and more
sophisticated XTerm.js module, instead of the
ancient Term.js module, for XTerm
emulation, (3) it provides full scrollback buffer support and (4) it
supports starting and stopping multiple commands while the widget is
active.
To see Blessed XTerm in action, check out stmux,
the utility for which Blessed XTerm originally was developed for.
$ npm install blessed blessed-xterm
NOTICE: The node-pty
dependency module is a Node.js module with
a native C/C++ component. For this a C/C++ compiler environment is
required during npm install
. For macOS, ensure you have Apple XCode
and its Command-Line Tools installed (you can find them in XCode
under menu Xcode
/ Preferences
/ Downloads
). For Windows,
you need Microsoft’s Visual C/C++ Build Tools installed (you can
conveniently install them with npm install --global --production
windows-build-tools
from an elevated shell).
The Blessed XTerm widget supports all configuration options of
Blessed Box,
Blessed Element,
Blessed Node and
Node.js EventEmitter,
plus the following ones:
shell
(default: process.env.SHELL || "sh"
):args
(default: []
):env
(default: process.env
):cwd
(default: process.cwd()
):cursorType
(default: block
):block
, underline
or line
.scrollback
(default: 1000
):controlKey
(default: C-w
):ignoreKeys
(default: []
):mousePassthrough
(default: false
):style.scrolling.border.fg
(default: red
):The Blessed XTerm widget supports all methods of
Blessed Box,
Blessed Element,
Blessed Node and
Node.js EventEmitter,
plus the following ones:
enableInput(enable: Boolean): Void
:injectInput(input: String): Void
:write(output: String): Void
:getScrollHeight(): Number
:getScroll(): Number
:setScroll(index: Number): Void
:scrollTo(index: Number): Void
:getScrollPerc(): Number
:setScrollPerc(percent: Number): Void
:scroll(offset: Number): Void
:resetScroll(): Void
:spawn (shell: String, args: String[], cwd?: String, env?: Object): Void
:terminate(): Void
:kill(): Void
:The Blessed XTerm widget supports all events of
Blessed Box,
Blessed Element,
Blessed Node and
Node.js EventEmitter,
plus the following ones:
title
(title: String
):title
.beep
():scrolling-start
():scrolling-end
():scroll
():exit
(code: Number
):code
.spawn()
method.update
():screenshot()
method.Copyright (c) 2017-2024 Dr. Ralf S. Engelschall (http://engelschall.com/)
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
“Software”), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.