Skip to content

Update terminal environment variables to detect colors #27609

Description

@BridgeAR

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.

Activity

  1. added
    help wantedIssues that need assistance from volunteers or PRs that need help to proceed.
    good first issueIssues that are suitable for first-time contributors.
    ttyIssues and PRs related to the tty subsystem.
    on May 8, 2019
  2. mscdex commented on May 8, 2019

    @mscdex
    Contributor

    VTE-based terminals should automatically export VTE_VERSION with the VTE version value (e.g. 5202 for v0.52.2).

    However, other terminals like qterminal (which does support truecolor) don't set anything, not even COLORTERM currently.

    Something else to keep in mind is that environment variables like these typically are not allowed to pass through on SSH connections.

  3. rpgeeganage commented on May 8, 2019

    @rpgeeganage
    Contributor

    @BridgeAR ,
    May I give this a try? (I hope this only in Javascript code :) )

  4. BridgeAR commented on May 8, 2019

    @BridgeAR
    MemberAuthor

    @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.

  5. rpgeeganage commented on May 8, 2019

    @rpgeeganage
    Contributor

    @BridgeAR
    Thank you very much. I'll start working on it probably from tomorrow onward.

  6. 3mard commented on May 13, 2019

    @3mard

    Can I give this a try ? :)

  7. rpgeeganage commented on May 13, 2019

    @rpgeeganage
    Contributor

    @3mard ,
    Please go ahead, Thanks a lot.

  8. dlionz commented on May 15, 2019

    @dlionz

    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?

  9. BridgeAR commented on May 15, 2019

    @BridgeAR
    MemberAuthor

    @dlionz that is pretty much exactly what's required. We could also start a list here.

  10. dlionz commented on May 15, 2019

    @dlionz

    @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.

    Screen Shot 2019-05-15 at 3 14 18 PM

    is this all that is needed?

  11. dlionz commented on May 15, 2019

    @dlionz

    @BridgeAR I went ahead and created this PR tty: add color support for iterm2 #27722 please let me know if there is anything I can do if there is an issue.

    thanks,
    Damien

  12. rpgeeganage commented on May 15, 2019

    @rpgeeganage
    Contributor

    @dlionz,
    Your PR seems to be not following the contributing guideline. Can you please check it?

  13. dlionz commented on May 15, 2019

    @dlionz

    @rpgeeganage Yeah can do, just realized I did it wrong.

  14. 12 remaining items

  15. sarthak0906 commented on Nov 26, 2019

    @sarthak0906

    Hey is this issue still open
    I would like to contribute

  16. duncanhealy commented on Nov 26, 2019

    @duncanhealy
    Contributor

    Hey is this issue still open
    I would like to contribute

    if you run env |grep TERM you can check if your terminal settings are covered in
    test/pseudo-tty/test-tty-color-support.js

  17. sarthak0906 commented on Nov 26, 2019

    @sarthak0906

    On Ubuntu 18.04.3

    COLORTERM=truecolor
    TERM=xterm-256color
    GNOME_TERMINAL_SERVICE=:1.122
    

    COLORTERM:truecolor is covered in test/pseudo-tty/test-tty-color-support.js but TERM: xterm-256color is not covered.
    Although TERM: xterm is in the file
    Please confirm if I whould edit it

  18. BridgeAR commented on Nov 26, 2019

    @BridgeAR
    MemberAuthor

    @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!

  19. deleted a comment from tacoto12 on Apr 8, 2020
  20. Edu93Jer commented on Dec 26, 2020

    @Edu93Jer

    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?

  21. Mesteery commented on Aug 10, 2021

    @Mesteery
    Contributor

    Yes, this issue is resolved by #30474.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueIssues that are suitable for first-time contributors.help wantedIssues that need assistance from volunteers or PRs that need help to proceed.ttyIssues and PRs related to the tty subsystem.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions