tty: add color support for more terminals
This adds support for a couple more terminals. PR-URL: https://github.com/nodejs/node/pull/19730 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit is contained in:
parent
1b715221b9
commit
ceaeee0120
@ -31,6 +31,41 @@ const COLORS_16 = 4;
|
||||
const COLORS_256 = 8;
|
||||
const COLORS_16m = 24;
|
||||
|
||||
// Some entries were taken from `dircolors`
|
||||
// (https://linux.die.net/man/1/dircolors). The corresponding terminals might
|
||||
// support more than 16 colors, but this was not tested for.
|
||||
//
|
||||
// Copyright (C) 1996-2016 Free Software Foundation, Inc. Copying and
|
||||
// distribution of this file, with or without modification, are permitted
|
||||
// provided the copyright notice and this notice are preserved.
|
||||
const TERM_ENVS = [
|
||||
'Eterm',
|
||||
'cons25',
|
||||
'console',
|
||||
'cygwin',
|
||||
'dtterm',
|
||||
'gnome',
|
||||
'hurd',
|
||||
'jfbterm',
|
||||
'konsole',
|
||||
'kterm',
|
||||
'mlterm',
|
||||
'putty',
|
||||
'st',
|
||||
'terminator'
|
||||
];
|
||||
|
||||
const TERM_ENVS_REG_EXP = [
|
||||
/ansi/,
|
||||
/color/,
|
||||
/linux/,
|
||||
/^con[0-9]*x[0-9]/,
|
||||
/^rxvt/,
|
||||
/^screen/,
|
||||
/^xterm/,
|
||||
/^vt100/
|
||||
];
|
||||
|
||||
// The `getColorDepth` API got inspired by multiple sources such as
|
||||
// https://github.com/chalk/supports-color,
|
||||
// https://github.com/isaacs/color-support.
|
||||
@ -89,8 +124,19 @@ function getColorDepth(env = process.env) {
|
||||
if (env.TERM) {
|
||||
if (/^xterm-256/.test(env.TERM))
|
||||
return COLORS_256;
|
||||
if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(env.TERM))
|
||||
return COLORS_16;
|
||||
|
||||
const termEnv = env.TERM.toLowerCase();
|
||||
|
||||
for (const term of TERM_ENVS) {
|
||||
if (termEnv === term) {
|
||||
return COLORS_16;
|
||||
}
|
||||
}
|
||||
for (const term of TERM_ENVS_REG_EXP) {
|
||||
if (term.test(termEnv)) {
|
||||
return COLORS_16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (env.COLORTERM)
|
||||
|
Loading…
x
Reference in New Issue
Block a user