Repository navigation
Update terminal environment variables to detect colors #27609
Description
Activity
- addedhelp wantedIssues that need assistance from volunteers or PRs that need help to proceed.Issues that need assistance from volunteers or PRs that need help to proceed.good first issueIssues that are suitable for first-time contributors.Issues that are suitable for first-time contributors.ttyIssues and PRs related to the tty subsystem.Issues and PRs related to the tty subsystem.
on May 8, 2019 VTE-based terminals should automatically export
VTE_VERSIONwith the VTE version value (e.g.5202for v0.52.2).However, other terminals like qterminal (which does support truecolor) don't set anything, not even
COLORTERMcurrently.Something else to keep in mind is that environment variables like these typically are not allowed to pass through on SSH connections.
@BridgeAR ,
May I give this a try? (I hope this only inJavascriptcode :) )Reacted by Onur Kantar@rpgeeganage please go for it. It is all JS. This is mainly meant as a tracking issue.
@mscdex it's definitely not a fool prove solution. I tried very hard to come up with anything or find something but this seemed to be the best we can do so far. If there's any reliable alternative (even only to reliable detect a few terminals), we should go for that instead.
@BridgeAR
Thank you very much. I'll start working on it probably from tomorrow onward.Can I give this a try ? :)
@3mard ,
Please go ahead, Thanks a lot.Hello, Id like to give this a go as well, but I'm not entirely sure what is expected.
is it just as simple as adding my Terminal name to the TERM_ENVS object and the colors it supports?
@dlionz that is pretty much exactly what's required. We could also start a list here.
Reacted by Damien Breaux@BridgeAR, thanks for the quick response.
Ok, I'm using iTerm2, and I ran the script above
printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
and it returns 'TURECOLOR'. Here is also a screen cap of my terminal running this function from the docs above about terminal color.is this all that is needed?
@dlionz,
Your PR seems to be not following the contributing guideline. Can you please check it?@rpgeeganage Yeah can do, just realized I did it wrong.
Reacted by Ruwan Pradeep Geeganage12 remaining items
Hey is this issue still open
I would like to contributeHey is this issue still open
I would like to contributeif you run
env |grep TERMyou can check if your terminal settings are covered in
test/pseudo-tty/test-tty-color-support.jsReacted by Ruben Bridgewater and Swagat KonchadaOn Ubuntu 18.04.3
COLORTERM=truecolor TERM=xterm-256color GNOME_TERMINAL_SERVICE=:1.122COLORTERM:truecoloris covered intest/pseudo-tty/test-tty-color-support.jsbutTERM: xterm-256coloris not covered.
AlthoughTERM: xtermis in the file
Please confirm if I whould edit it@sarthak0906 it is covered by
TERM='xterm-256'. So there's no need to add another entry. Thanks a lot for checking your term settings!Reacted by sarthak khandelwal- added 2 commits that reference this issue
on Nov 27, 2019 - added a commit that references this issue
on Dec 1, 2019 - added a commit that references this issue
on Dec 17, 2019 Hi @BridgeAR a question, is this issue still open? I've seen that the last comment or commit referencing this issue was like a year ago, I am new to open source and I know is nothing about coding, but would like to at least contribute with something.
Or do you know if there's a good new issue to work with?Yes, this issue is resolved by #30474.

Right now we have a pretty decent list of environment variables to detect different terminals that support colors. However, it is often not exactly known from what version on these terminals actually support the colors, if that's detectable and how many colors these support.
I would like to start a list of different terminals / CIs and other things including their corresponding environment variables or other information to detect these and the information how many colors they support.
The current code can be found here: https://github.com/nodejs/node/blob/master/lib/internal/tty.js
A lot of information about terminals that support 16 million colors can be found here: https://github.com/termstandard/colors
Anyone can please check their terminal and post the name, version, corresponding env settings (not all) and the supported colors. This should be pretty straight forward and a good first contribution! The more information we gather here, the better Node.js will become in properly supporting colors.
Just enter the following in your terminal to check for true color:
printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"Update: Please make sure you check what environment variables are set by your terminal! That is important since not all correspond to
$TERMbut some also to e.g.,$TERM_PROGRAM. You can check what environment variables are set by running:node -e 'console.log(process.env)'. You have to check what environment variables correspond to the terminal. Please do not post any environment variables besides those.