microsoft / terminal

The new Windows Terminal and the original Windows console host, all in the same place!
MIT License
95k stars 8.22k forks source link

Inconsistent terminal color (on startup) #16996

Open lindhe opened 5 months ago

lindhe commented 5 months ago

Windows Terminal version

1.19.10573.0

Windows build number

10.0.22631.0

Other Software

> wsl --version
WSL version: 2.1.5.0
Kernel version: 5.15.146.1-2
WSLg version: 1.0.60
MSRDC version: 1.2.5105
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22631.3296

Steps to reproduce

I cannot reproduce it 100% reliably, but I do get it fairly regularly (at least once per day).

It typically happens for the first terminal I create after I boot my computer.

Expected Behavior

If I open multiple panes/tabs/windows, they should all have the same colorscheme (or render the colors the same way).

Actual Behavior

For the first terminal I create, I get colors that are slightly off. All panes/tabs/windows I create after that have correct colors:

Screenshot 2024-04-02 162159

In this example, the upper pane is the first pane and the lower pane was created later.

According to the color picker from PowerToys, these are the colors I get in the screenshot example:

Black White Green Blue
Upper pane #0c0c0c #f0f0f0 #4be14b #4040bd
Lower pane #0c0c0c #f0f0f0 #15b40c #3b78ff

Node that there is some variation caused by aliasing, so I may have accidentally picked the wrong colors. But it's an honest attempt. πŸ˜…

github-actions[bot] commented 5 months ago

Hi I'm an AI powered bot that finds similar issues based off the issue title.

Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it. Thank you!

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

zadjii-msft commented 5 months ago

Could you share your settings.json file/?

lindhe commented 5 months ago

Of course! Here: settings.json

carlos-zamora commented 5 months ago

Thanks for filing! We took a look at the settings.json file and nothing stood out. Could you capture a Debug Tap of when the terminal launches with this unexpected configuration/? Be sure to hold both alt buttons when the terminal launches to get it to work.

lindhe commented 5 months ago

I've activated the debug trap now, but I was not able to immediately reproduce the issue. It comes every now and then for me, I'll post here as soon as I catch one!

lindhe commented 5 months ago

I have so far been unable to reproduce the bug with the debug tap active. I will keep trying for a while longer, but maybe the bug does not show up with the tap active?

zadjii-msft commented 5 months ago

But it does show up relatively consistently without the debug tap? That would be.... extremely bizarre. Especially since the color values in the image don't actually look like they're coming from the color schemes, so that would seemingly suggest that there's something in your prompt that's manually emitting those colors?

lindhe commented 5 months ago

Yes, it happens multiple times per day, but I have not yet figured out a way to reliably reproduce it. Mostly I think it's when I leave the computer on for a while and the screen goes dark after screen lock (e.g. during lunch). When I come back, it's very frequent that this problem occurs.

Next time I catch it, I'll try to echo a color (e.g. echo -e '\e[34m\e[1m\u25A0\e[0m') and inspect what color that is. That might give us a clue if this is the text output that goes wrong or if all colors are off. Β―\_(ツ)_\/Β―

I'll do my best to try and figure out the exact circumstances. Will keep you posted!

lindhe commented 4 months ago

Just FYI: I'll get back whenever I have new info. If this is automatically closed, I'll just reopen it. πŸ‘

DHowett commented 4 months ago

Thanks! If you don't have the rights to reopen it, let one of us know and we will!

lindhe commented 4 months ago

I just had it occur again and was able to capture the output of echo '\e[34m\e[1m\u25A0\e[0m':

image

Upper pane: #5454ff Lower pane: #3b78ff

lhecker commented 4 months ago

The image you shared has a background color of #050505 but the settings.json you previously shared doesn't have such a color anywhere. The first screenshot you shared in the beginning has #0c0c0c which does exist in one of the themes. Couple related questions:

I think this may be a memory corruption of our color table(s).

lindhe commented 4 months ago
  • Did you change your settings.json since then?

No.

  • Are you using an HDR display?

On the monitor I took the screenshot on (my external monitor): no. On my laptop: yes. And would that really matter when taking a screenshot or measuring with the color picker tool from PowerToys?

  • If you open the Settings app and go to System > Display > Color Management, do you have a display profile set up?

I didn't find "Color management". Is it the same as "Colour profile"? I've got a profile for my external monitor but not the built in one: image

  • ...and if you have a "Automatically manage color for apps" toggle there, is it turned on or off?

It's off for both displays.

I think this may be a memory corruption of our color table(s).

I always find the bizarre ones: πŸ˜‚

lhecker commented 4 months ago

And would that really matter when taking a screenshot or measuring with the color picker tool from PowerToys?

Yes, at least in my understanding. DWM composites all applications into a single surface which has a color format and space that fits the target display. Windows Terminal renders text into a BGR (reverse RGB) 8-bit surface, which DWM composites into for instance (I'm not actually sure which one specifically) RGB with 16-bit floats to later output it on a HDR display. When you take a screenshot, it'll take a copy from that DWM surface and then convert it back to 8-bit RGB.

I've got a profile for my external monitor but not the built in one:

GPUs should apply color profiles very late with a matrix or LUT transform, only when actually sending the image to the monitor. I was just wondering if it's possible that a color profile may get applied early by DWM and if so, if it may not be applied to all swap chains (= all panes/tabs). I don't think that's possible, but...

Well maybe it's indeed a memory corruption. But it'd definitely be the first and only report about it so far!