@visulima/ansi
v5.0.0
Published
ANSI escape codes for some terminal swag.
Downloads
54,902
Maintainers
Readme
Install
npm install @visulima/ansiyarn add @visulima/ansipnpm add @visulima/ansiFeatures
- Comprehensive Cursor Control: Functions for precise cursor positioning, movement, visibility, and style.
- Screen Manipulation: Clear parts of the screen or the entire screen, manage alternative screen buffers, and control scrolling.
- Text Erasure: Erase characters, lines, or parts of lines.
- iTerm2 Integration: Support for iTerm2 specific features like image display.
- Terminal Mode Management: Control various terminal modes like line feed, local echo, and mouse events.
- Mouse Event Handling: Enable and disable different types of mouse tracking.
- Window and Title Control: Manipulate window titles, icons, and basic window operations (maximize, minimize, etc. for supported terminals).
- Status Reporting: Request and report various terminal statuses.
- Hyperlinks: Create clickable hyperlinks in the terminal.
- Utility Functions: Includes functions to strip ANSI codes and passthrough sequences for tmux.
Usage
import { cursorUp, cursorLeft } from "@visulima/ansi";
// Moves the cursor two rows up and to the left
process.stdout.write(cursorUp(2) + cursorLeft);
//=> '\u001B[2A\u001B[1000D'or
import { cursorUp, cursorLeft } from "@visulima/ansi/cursor";
// etc, as above...@visulima/ansi is ESM-only. In a CommonJS module, load it with a dynamic import():
const { cursorUp, cursorLeft } = await import("@visulima/ansi");
// etc, as above...More Examples:
Cursor Manipulation
import { cursorTo, cursorUp, eraseLine } from "@visulima/ansi";
// Move cursor to column 10, row 5
process.stdout.write(cursorTo(10, 5));
// Move cursor up 3 lines
process.stdout.write(cursorUp(3));
// Erase the current line
process.stdout.write(eraseLine);Screen Clearing
import { clearScreenAndHomeCursor, eraseDown } from "@visulima/ansi";
// Clear the entire screen and move the cursor to the top-left
process.stdout.write(clearScreenAndHomeCursor);
// Clear from cursor to end of screen
process.stdout.write(eraseDown);Text Styling (with other libraries)
While @visulima/ansi focuses on terminal control, you can combine it with libraries like chalk for text styling:
import { cursorTo } from "@visulima/ansi";
import chalk from "chalk";
process.stdout.write(cursorTo(0, 0));
process.stdout.write(chalk.blue("This is a blue message at the top left!"));API
This package exports the following functions and constants. For a detailed list of all exports, see the src/index.ts file.
General
beep
Alternative Screen (from alternative-screen.ts)
ALT_SCREEN_OFFALT_SCREEN_ONalternativeScreenOffalternativeScreenOn
Clear (from clear.ts)
clearLineAndHomeCursorclearScreenAndHomeCursorclearScreenFromTopLeftresetTerminal
Clipboard (from clipboard.ts)
setClipboard— write text to the terminal clipboard via OSC 52 (works over SSH/tmux)requestClipboard— request the clipboard contentsclearClipboard— clear a clipboard selectionClipboardSelection(type)
Constants (from constants.ts)
ESC,CSI,OSC,BEL,SEP,DCS,ST,APC,SOS,PM— low-level sequence primitives for composing custom escape sequences
Cursor (from cursor.ts)
CURSOR_BACKWARD_1CURSOR_DOWN_1CURSOR_FORWARD_1CURSOR_UP_1cursorBackwardcursorBackwardTabcursorDowncursorForwardcursorHidecursorHorizontalAbsolutecursorHorizontalForwardTabcursorLeftcursorMovecursorNextLinecursorPositioncursorPreviousLinecursorRestorecursorSavecursorShowcursorTocursorToColumn1cursorUpcursorVerticalAbsoluteeraseCharacter(Note: Also related to erase)REQUEST_CURSOR_POSITIONREQUEST_EXTENDED_CURSOR_POSITIONRESTORE_CURSOR_DECSAVE_CURSOR_DECsetCursorStyle
Erase (from erase.ts)
eraseDisplayeraseDowneraseInLineeraseLineeraseLineEnderaseLineseraseLineStarteraseScreeneraseScreenAndScrollbackeraseUp
Hyperlink (from hyperlink.ts)
hyperlink
Image (from image.ts)
image
iTerm2 Integration (from iterm2.ts and iterm2/)
IT2_AUTOit2Cellsit2Percentit2PixelsiTerm2ITerm2FileITerm2FileEndITerm2FilePartITerm2MultipartFileStart
Mode (from mode.ts)
BDSMBiDirectionalSupportModecreateAnsiModecreateDecModeDECRPMDECRQMInsertReplaceModeIRMisModeNotRecognizedisModePermanentlyResetisModePermanentlySetisModeResetisModeSetKAMKeyboardActionModeLineFeedNewLineModeLNMLocalEchoModereportModeRequestBiDirectionalSupportModeRequestInsertReplaceModeRequestKeyboardActionModeRequestLineFeedNewLineModeRequestLocalEchoModerequestModeRequestSendReceiveModeResetBiDirectionalSupportModeResetInsertReplaceModeResetKeyboardActionModeResetLineFeedNewLineModeResetLocalEchoModeresetModeResetSendReceiveModeRMSendReceiveModeSetBiDirectionalSupportModeSetInsertReplaceModeSetKeyboardActionModeSetLineFeedNewLineModeSetLocalEchoModesetModeSetSendReceiveModeSMSRM
Mouse (from mouse.ts)
disableAnyEventMousedisableButtonEventMousedisableFocusTrackingdisableNormalMousedisableSgrMousedisableX10MouseenableAnyEventMouseenableButtonEventMouseenableFocusTrackingenableNormalMouseenableSgrMouseenableX10MouseencodeMouseButtonByteMouseButtonmouseSgrSequencemouseX10Sequence
Passthrough (from passthrough.ts)
SCREEN_MAX_LEN_DEFAULTSCREEN_TYPICAL_LIMITscreenPassthroughtmuxPassthrough
Progress (from progress.ts)
resetProgressBarsetProgressBarsetErrorProgressBarsetIndeterminateProgressBarsetWarningProgressBar
Reset (from reset.ts)
RESET_INITIAL_STATERIS
Screen (from screen.ts)
clearTabStopdeleteCharacterdeleteLineinsertCharacterinsertLinerepeatPreviousCharacterrequestPresentationStateReportsetLeftRightMarginssetTopBottomMargins
Scroll (from scroll.ts)
SCROLL_DOWN_1SCROLL_UP_1scrollDownscrollUp
Status (from status.ts)
CPRcreateAnsiStatusReportcreateDecStatusReportcursorPositionReportDA1DA2DA3DECXCPRdeviceStatusReportDSRDSR_KeyboardLanguageDECDSR_PrinterStatusDECDSR_TerminalStatusDSR_UDKStatusDECextendedCursorPositionReportreportKeyboardLanguageDECreportPrimaryDeviceAttributesreportPrinterNoPaperDECreportPrinterNotReadyDECreportPrinterReadyDECreportSecondaryDeviceAttributesreportTerminalNotOKreportTerminalOKreportTertiaryDeviceAttributesreportUDKLockedDECreportUDKUnlockedDECrequestCursorPositionReportrequestExtendedCursorPositionReportrequestKeyboardLanguageDECRequestNameVersionrequestPrimaryDeviceAttributesrequestPrimaryDeviceAttributesParam0requestPrinterStatusDECrequestSecondaryDeviceAttributesrequestSecondaryDeviceAttributesParam0requestTerminalStatusrequestTertiaryDeviceAttributesrequestTertiaryDeviceAttributesParam0requestUDKStatusDECXTVERSION
Strip (from strip.ts)
strip
Termcap/Terminfo (from termcap.ts)
requestTermcaprequestTerminfoXTGETTCAP
Title (from title.ts)
decsindecswtsetIconNamesetIconNameAndWindowTitlesetIconNameAndWindowTitleWithSTsetIconNameWithSTsetWindowTitlesetWindowTitleWithST
Window Operations (from window-ops.ts)
deiconifyWindowiconifyWindowlowerWindowmaximizeWindowmoveWindowraiseWindowrefreshWindowreportWindowPositionreportWindowStaterequestCellSizePixelsrequestFullScreenrequestTextAreaSizeCharsrequestTextAreaSizePixelsrequestWindowPositionrequestWindowSizeCharsrequestWindowSizePixelsresizeTextAreaCharsresizeTextAreaPixelsrestoreWindowXTWINOPS
XTerm (from xterm.ts)
keyModifierOptions/XTMODKEYSqueryKeyModifierOptions/XTQMODKEYSsetKeyModifierOptionsresetKeyModifierOptionssetModifyOtherKeys1setModifyOtherKeys2resetModifyOtherKeysqueryModifyOtherKeyspushKittyKeyboard— push Kitty keyboard protocol flags (CSI > flags u)popKittyKeyboard— pop flags off the stack (CSI < n u)setKittyKeyboard— set flags in place (CSI = flags ; 1 u)queryKittyKeyboard— query current flags (CSI ? u)KittyKeyboardFlag— bit-flag constantsKittyKeyboardFlags(type)
Related
- ansi-escapes - ANSI escape codes for manipulating the terminal
- sisteransi - ANSI escape codes for some terminal swag.
- console-clear - Clear the console, cross-platform
Supported Node.js Versions
Libraries in this ecosystem make the best effort to track Node.js' release schedule. Here's a post on why we think this is important.
Contributing
If you would like to help take a look at the list of issues and check our Contributing guidelines.
Note: please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Credits
Made with ❤️ at Anolilab
This is an open source project and will always remain free to use. If you think it's cool, please star it 🌟. Anolilab is a Development and AI Studio. Contact us at [email protected] if you need any help with these technologies or just want to say hi!
License
The visulima ansi is open-sourced software licensed under the MIT
