Skip to content
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

In terminal emulators, bash fails to render correct background color #88

Closed
bitcrazed opened this issue Feb 16, 2018 · 18 comments
Closed
Labels
Resolution-Fix-Available It's available in an Insiders build or a release

Comments

@bitcrazed
Copy link
Contributor

From @Elderry on July 17, 2017 8:2

My Windows build number: Microsoft Windows [Version 10.0.15063]

It seems that in many terminal emulators, after running a command that outputs colors to the terminal using bash, the background will become a strange gray or black. But the default Windows Console doesn't has this problem. Here are the examples:

Integrated Terminal of Visual Studio Code:
1

Integrated Terminal of Intellij IDEA:
2

Default Windows Console:
3

To provide more detail, here is my bash prompt:

BLUE='\e[1;34m'
GREEN='\e[1;32m'
RESET='\e[0m'
source $HOME/Projects/Personal/posh-git-sh/git-prompt.sh
PROMPT_COMMAND='__posh_git_ps1 "" "${BLUE}\w\n${GREEN}\u@\h${RESET} > "'

Copied from original issue: microsoft/WSL#2344

@bitcrazed
Copy link
Contributor Author

From @zadjii-msft on July 17, 2017 16:35

I believe this is already fixed in Insider's builds - I believe it's a dupe of #1706

image

@bitcrazed
Copy link
Contributor Author

From @Elderry on October 18, 2017 5:50

@zadjii-msft I'm afraid this issue remains, today my Windows updated to: Microsoft Windows [Version 10.0.16299.19], and I reinstalled Ubuntu using Microsoft Store.
capture

@bitcrazed
Copy link
Contributor Author

From @zadjii-msft on October 18, 2017 15:56

Hmm. That's certainly weird.

@Elderry Can you open a powershell window, and post a screenshot of the colors tab of the property sheet?

image
image

@bitcrazed
Copy link
Contributor Author

From @Elderry on October 19, 2017 1:25

@zadjii-msft Here it is:
capture

@bitcrazed
Copy link
Contributor Author

From @zadjii-msft on October 19, 2017 15:22

@Elderry Okay, this is gonna sound crazy, but what happens if you switch the first and last values of the color table in the Powershell properties dialog, and instead choose the first color (now white) as your "Screen Background" and the last (now black) as the "Screen Text", then open a new vscode?

@bitcrazed
Copy link
Contributor Author

From @Elderry on October 23, 2017 2:1

@zadjii-msft I did as you say, nothing changes:
2

@bitcrazed
Copy link
Contributor Author

From @zadjii-msft on October 23, 2017 17:30

Okay shoot. I was hoping that might help. Can you try pasting this file into a file called 256color.pl and running it (with perl 256color.pl) in both the console window and the vscode window?

@bitcrazed
Copy link
Contributor Author

From @Elderry on October 24, 2017 1:30

It looks terrible in vscode's terminal:
1

@bitcrazed
Copy link
Contributor Author

From @Elderry on October 24, 2017 1:38

@zadjii-msft Seems it is an upstream issue caused by winpty referred here.

@bitcrazed
Copy link
Contributor Author

From @zadjii-msft on October 24, 2017 16:1

Oh, that's not the issue I was mostly concerned about. I was more concerned about the white and black entries in the first 8 colors printed are reversed in VScode from what you'd expect.

I think I have an idea of how this happened. If you look in the registry, under Computer\HKEY_CURRENT_USER\Console, is ScreenColors set to 0xf0 (240)?

I think VSCode is using the console defaults, not the properties. So because your default color selection is Color00 (dark_black) text on Color15 (bright_white) background, and VScode changes 00->white and 15-> black, your "default" colors in vscode are white on black, even if the rest of the background is white.

If you really want black text on white for all of your terminals, then I'd just replicate VSCode's behavior in your defaults manually, and switch the first and last entries of the "Defaults" in the console settings.

@bitcrazed
Copy link
Contributor Author

From @Elderry on October 25, 2017 2:16

@zadjii-msft You are right, my ScreenColors entry is set to 0xf0, and other things happen just like you say. I prefer to keep my current settings because switching entries will change the definition of my DARK_BLACK and BRIGHT_WHITE. Thank you for your time.

Now my problem is why vscode choose to changes 00->white and 15->black, even Intellij IDEA's integrated terminal does the same.

@Elderry
Copy link

Elderry commented May 5, 2018

It seem this issued is fixed in windows 10 1803.

@david50407
Copy link

@Elderry how this get fixed on 1803?
It still happened on my vscode with 1803

@Elderry
Copy link

Elderry commented May 9, 2018

I tested it again and confirmed 1803 fixed part of this issue.

capture

@david50407 You can compare this capture to the above, the mainly difference is that the black background no longer overflow. Though white and black entries are still reversed, the pain point for me no longer exists.

@david50407
Copy link

@Elderry oh ok thanks

But the color cube still broken in 3rd-party terminal simulators...
It seems that Windows doesn't provide enough API to get the 256 color information to let these simulators to paint the correct color

@miniksa
Copy link
Member

miniksa commented May 9, 2018

Correct, our API ReadConsoleOutput and friends doesn't provide the ability to read this information out of the screen buffer. VSCode uses WinPTY which scrapes this information out of our buffer with the console APIs.

We've been focusing on #57 instead to allow 3rd-party terminals to receive this information on a standard PTY stream like other platforms instead.

@zadjii-msft
Copy link
Member

Thanks @Elderry for confirming that this is fixed in 1803.

I'm going to close this as resolved, @miniksa is right about the 256 color stuff.

@zadjii-msft zadjii-msft added the Resolution-Fix-Available It's available in an Insiders build or a release label May 9, 2018
@zadjii-msft zadjii-msft added this to the RS4 milestone May 9, 2018
@Elderry
Copy link

Elderry commented Oct 4, 2018

I'm sad to say that this issue re-occurred in Windows 10 1809.
capture
You can see that in VScode's terminal, there are white characters on black background, while this is reversed in 1803.
@zadjii-msft

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Resolution-Fix-Available It's available in an Insiders build or a release
Projects
None yet
Development

No branches or pull requests

5 participants