-
Notifications
You must be signed in to change notification settings - Fork 30k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update terminal environment variables to detect colors #27609
Comments
VTE-based terminals should automatically export However, other terminals like qterminal (which does support truecolor) don't set anything, not even Something else to keep in mind is that environment variables like these typically are not allowed to pass through on SSH connections. |
@BridgeAR , |
@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 |
Can I give this a try ? :) |
@3mard , |
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. |
@BridgeAR, thanks for the quick response. Ok, I'm using iTerm2, and I ran the script above is this all that is needed? |
@dlionz, |
@rpgeeganage Yeah can do, just realized I did it wrong. |
@rpgeeganage corrected my pr |
@dmaynard51 please check what terminal you're using and what environment variables are set that correspond with the terminal. |
I just updated the initial description to include some further information about the environment variables. |
I am using Hyper, version: 3.0.2. Some settings I think that are set by the terminal are:
It seems to support only 256 color. I would like to submit a little PR for this @BridgeAR. |
On MacOS terminal,
That is the only env variable that seems to correspond to the terminal. |
The check for the (env.COLORTERM) should occur before the check for env.TERM
|
Hey is this issue still open |
if you run |
On Ubuntu 18.04.3
|
@sarthak0906 it is covered by |
256 color would be return instead of 16m if both env variables were set * tty: improve color check order highest spec first * tty: add test for TERM and COLORTERM set * tty: move COLORTERM check outside TERM closure * tty: remove extra if check for COLORTERM Refs: #27609 PR-URL: #30474 Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
256 color would be return instead of 16m if both env variables were set * tty: improve color check order highest spec first * tty: add test for TERM and COLORTERM set * tty: move COLORTERM check outside TERM closure * tty: remove extra if check for COLORTERM Refs: #27609 PR-URL: #30474 Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
256 color would be return instead of 16m if both env variables were set * tty: improve color check order highest spec first * tty: add test for TERM and COLORTERM set * tty: move COLORTERM check outside TERM closure * tty: remove extra if check for COLORTERM Refs: #27609 PR-URL: #30474 Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
256 color would be return instead of 16m if both env variables were set * tty: improve color check order highest spec first * tty: add test for TERM and COLORTERM set * tty: move COLORTERM check outside TERM closure * tty: remove extra if check for COLORTERM Refs: #27609 PR-URL: #30474 Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
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. |
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
$TERM
but 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.The text was updated successfully, but these errors were encountered: