Skip to content

ColorTool does not output the correct escape sequences #20823

Open

Description

Windows Terminal version

1.25.2733.0

Windows build number

10.0.26300.0

Other Software

colortool v1.0.1904.29002

Steps to reproduce

Set the terminal to use this color scheme:

        {
            "name": "Test",

            "foreground": "#77CC11",
            "background": "#113355",

            "black": "#000000",
            "brightBlack": "#111111",
            "red": "#222222",
            "brightRed": "#333333",
            "green": "#444444",
            "brightGreen": "#555555",
            "yellow": "#666666",
            "brightYellow": "#777777",
            "blue": "#888888",
            "brightBlue": "#999999",
            "purple": "#AAAAAA",
            "brightPurple": "#BBBBBB",
            "cyan": "#CCCCCC",
            "brightCyan": "#DDDDDD",
            "brightWhite": "#EEEEEE",
            "white": "#FFFFFF",

            "cursorColor": "#B4B4B4",
            "selectionBackground": "#4B4B4B"
        }

Run .\ColorTool\ColorTool.exe -c [-x]

Expected Behavior

The background color 40m column should match black. The foreground color 1m row should match foreground. The foreground color 37m row should match white.

The entire output should match this:

PS> .\ansi-color.cmd /a .\colortool.def
                  40m     41m     42m     43m     44m     45m     46m     47m
m       ␛[m  gYw  ␛[m ␛[m␛[40m  gYw  ␛[m ␛[m␛[41m  gYw  ␛[m ␛[m␛[42m  gYw  ␛[m ␛[m␛[43m  gYw  ␛[m ␛[m␛[44m  gYw  ␛[m ␛[m␛[45m  gYw  ␛[m ␛[m␛[46m  gYw  ␛[m ␛[m␛[47m  gYw  ␛[m
1m      ␛[1m  gYw  ␛[m ␛[1m␛[40m  gYw  ␛[m ␛[1m␛[41m  gYw  ␛[m ␛[1m␛[42m  gYw  ␛[m ␛[1m␛[43m  gYw  ␛[m ␛[1m␛[44m  gYw  ␛[m ␛[1m␛[45m  gYw  ␛[m ␛[1m␛[46m  gYw  ␛[m ␛[1m␛[47m  gYw  ␛[m
30m     ␛[30m  gYw  ␛[m ␛[30m␛[40m  gYw  ␛[m ␛[30m␛[41m  gYw  ␛[m ␛[30m␛[42m  gYw  ␛[m ␛[30m␛[43m  gYw  ␛[m ␛[30m␛[44m  gYw  ␛[m ␛[30m␛[45m  gYw  ␛[m ␛[30m␛[46m  gYw  ␛[m ␛[30m␛[47m  gYw  ␛[m
1;30m   ␛[1;30m  gYw  ␛[m ␛[1;30m␛[40m  gYw  ␛[m ␛[1;30m␛[41m  gYw  ␛[m ␛[1;30m␛[42m  gYw  ␛[m ␛[1;30m␛[43m  gYw  ␛[m ␛[1;30m␛[44m  gYw  ␛[m ␛[1;30m␛[45m  gYw  ␛[m ␛[1;30m␛[46m  gYw  ␛[m ␛[1;30m␛[47m  gYw  ␛[m
31m     ␛[31m  gYw  ␛[m ␛[31m␛[40m  gYw  ␛[m ␛[31m␛[41m  gYw  ␛[m ␛[31m␛[42m  gYw  ␛[m ␛[31m␛[43m  gYw  ␛[m ␛[31m␛[44m  gYw  ␛[m ␛[31m␛[45m  gYw  ␛[m ␛[31m␛[46m  gYw  ␛[m ␛[31m␛[47m  gYw  ␛[m
1;31m   ␛[1;31m  gYw  ␛[m ␛[1;31m␛[40m  gYw  ␛[m ␛[1;31m␛[41m  gYw  ␛[m ␛[1;31m␛[42m  gYw  ␛[m ␛[1;31m␛[43m  gYw  ␛[m ␛[1;31m␛[44m  gYw  ␛[m ␛[1;31m␛[45m  gYw  ␛[m ␛[1;31m␛[46m  gYw  ␛[m ␛[1;31m␛[47m  gYw  ␛[m
32m     ␛[32m  gYw  ␛[m ␛[32m␛[40m  gYw  ␛[m ␛[32m␛[41m  gYw  ␛[m ␛[32m␛[42m  gYw  ␛[m ␛[32m␛[43m  gYw  ␛[m ␛[32m␛[44m  gYw  ␛[m ␛[32m␛[45m  gYw  ␛[m ␛[32m␛[46m  gYw  ␛[m ␛[32m␛[47m  gYw  ␛[m
1;32m   ␛[1;32m  gYw  ␛[m ␛[1;32m␛[40m  gYw  ␛[m ␛[1;32m␛[41m  gYw  ␛[m ␛[1;32m␛[42m  gYw  ␛[m ␛[1;32m␛[43m  gYw  ␛[m ␛[1;32m␛[44m  gYw  ␛[m ␛[1;32m␛[45m  gYw  ␛[m ␛[1;32m␛[46m  gYw  ␛[m ␛[1;32m␛[47m  gYw  ␛[m
33m     ␛[33m  gYw  ␛[m ␛[33m␛[40m  gYw  ␛[m ␛[33m␛[41m  gYw  ␛[m ␛[33m␛[42m  gYw  ␛[m ␛[33m␛[43m  gYw  ␛[m ␛[33m␛[44m  gYw  ␛[m ␛[33m␛[45m  gYw  ␛[m ␛[33m␛[46m  gYw  ␛[m ␛[33m␛[47m  gYw  ␛[m
1;33m   ␛[1;33m  gYw  ␛[m ␛[1;33m␛[40m  gYw  ␛[m ␛[1;33m␛[41m  gYw  ␛[m ␛[1;33m␛[42m  gYw  ␛[m ␛[1;33m␛[43m  gYw  ␛[m ␛[1;33m␛[44m  gYw  ␛[m ␛[1;33m␛[45m  gYw  ␛[m ␛[1;33m␛[46m  gYw  ␛[m ␛[1;33m␛[47m  gYw  ␛[m
34m     ␛[34m  gYw  ␛[m ␛[34m␛[40m  gYw  ␛[m ␛[34m␛[41m  gYw  ␛[m ␛[34m␛[42m  gYw  ␛[m ␛[34m␛[43m  gYw  ␛[m ␛[34m␛[44m  gYw  ␛[m ␛[34m␛[45m  gYw  ␛[m ␛[34m␛[46m  gYw  ␛[m ␛[34m␛[47m  gYw  ␛[m
1;34m   ␛[1;34m  gYw  ␛[m ␛[1;34m␛[40m  gYw  ␛[m ␛[1;34m␛[41m  gYw  ␛[m ␛[1;34m␛[42m  gYw  ␛[m ␛[1;34m␛[43m  gYw  ␛[m ␛[1;34m␛[44m  gYw  ␛[m ␛[1;34m␛[45m  gYw  ␛[m ␛[1;34m␛[46m  gYw  ␛[m ␛[1;34m␛[47m  gYw  ␛[m
35m     ␛[35m  gYw  ␛[m ␛[35m␛[40m  gYw  ␛[m ␛[35m␛[41m  gYw  ␛[m ␛[35m␛[42m  gYw  ␛[m ␛[35m␛[43m  gYw  ␛[m ␛[35m␛[44m  gYw  ␛[m ␛[35m␛[45m  gYw  ␛[m ␛[35m␛[46m  gYw  ␛[m ␛[35m␛[47m  gYw  ␛[m
1;35m   ␛[1;35m  gYw  ␛[m ␛[1;35m␛[40m  gYw  ␛[m ␛[1;35m␛[41m  gYw  ␛[m ␛[1;35m␛[42m  gYw  ␛[m ␛[1;35m␛[43m  gYw  ␛[m ␛[1;35m␛[44m  gYw  ␛[m ␛[1;35m␛[45m  gYw  ␛[m ␛[1;35m␛[46m  gYw  ␛[m ␛[1;35m␛[47m  gYw  ␛[m
36m     ␛[36m  gYw  ␛[m ␛[36m␛[40m  gYw  ␛[m ␛[36m␛[41m  gYw  ␛[m ␛[36m␛[42m  gYw  ␛[m ␛[36m␛[43m  gYw  ␛[m ␛[36m␛[44m  gYw  ␛[m ␛[36m␛[45m  gYw  ␛[m ␛[36m␛[46m  gYw  ␛[m ␛[36m␛[47m  gYw  ␛[m
1;36m   ␛[1;36m  gYw  ␛[m ␛[1;36m␛[40m  gYw  ␛[m ␛[1;36m␛[41m  gYw  ␛[m ␛[1;36m␛[42m  gYw  ␛[m ␛[1;36m␛[43m  gYw  ␛[m ␛[1;36m␛[44m  gYw  ␛[m ␛[1;36m␛[45m  gYw  ␛[m ␛[1;36m␛[46m  gYw  ␛[m ␛[1;36m␛[47m  gYw  ␛[m
37m     ␛[37m  gYw  ␛[m ␛[37m␛[40m  gYw  ␛[m ␛[37m␛[41m  gYw  ␛[m ␛[37m␛[42m  gYw  ␛[m ␛[37m␛[43m  gYw  ␛[m ␛[37m␛[44m  gYw  ␛[m ␛[37m␛[45m  gYw  ␛[m ␛[37m␛[46m  gYw  ␛[m ␛[37m␛[47m  gYw  ␛[m
1;37m   ␛[1;37m  gYw  ␛[m ␛[1;37m␛[40m  gYw  ␛[m ␛[1;37m␛[41m  gYw  ␛[m ␛[1;37m␛[42m  gYw  ␛[m ␛[1;37m␛[43m  gYw  ␛[m ␛[1;37m␛[44m  gYw  ␛[m ␛[1;37m␛[45m  gYw  ␛[m ␛[1;37m␛[46m  gYw  ␛[m ␛[1;37m␛[47m  gYw  ␛[m

Actual Behavior

Image

The background color 40m column should match black and not background. The foreground color 1m row should match foreground and not white. The foreground color 37m row should match white and not foreground.

Bright foreground isn't really a well defined state, so 1m should perhaps be different than m, but 37m is very clearly defined as white. Similarly with 40m being clearly defined as black and not background.

Activity

  1. added
    Needs-TriageIt's a new issue that the core contributor team needs to triage at the next triage meeting
    on Oct 19, 2026
  2. DHowett commented on Oct 19, 2026

    @DHowett
    Member

    FWIW, colortool predates 18-color support where the foreground and background are distinct from the indexed colors.

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

    Issue-BugIt either shouldn't be doing this or needs an investigation.Needs-TriageIt's a new issue that the core contributor team needs to triage at the next triage meeting

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions