Xterm.js: Os códigos de cores ANSI não são renderizados corretamente

Criado em 20 ago. 2017  ·  4Comentários  ·  Fonte: xtermjs/xterm.js


A cor de fundo ANSI padrão não é renderizada corretamente no subsistema Windows para Linux (terminal bash nativo para Windows), criando uma cor de fundo azul na saída quando não deveria haver nenhuma.

Detalhes

  • Navegador e versão do navegador: terminal integrado VSCode e terminal Hyper.is (versões mais recentes)
  • Versão do sistema operacional: Windows 10

Passos para reproduzir

  1. Nova reinstalação do subsistema Windows para Linux
  2. Abra o terminal em VSCode ou Hyper.is
  3. Defina o terminal padrão para o shell bash (VSCode: "terminal.integrated.shell.windows": "C:\\WINDOWS\\Sysnative\\bash.exe" , Hyper: shell: 'C:\\Windows\\System32\\bash.exe' )
  4. A cor de saída padrão terá um fundo azul

Para referência, o prompt é o padrão:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

onde [\033[00m\] deveria ser redefinido para o padrão, o que acontece, mas o padrão parece estar errado. Usar [\033[39m\] também dá o mesmo efeito.

Usar o CMD ou PS padrão do Windows não reproduz os mesmos efeitos.

Imagens mostrando problema

As bordas nas imagens refletem o fundo real do aplicativo.

VSCode:
vscode
Hyper:
hyper

needs more info typbug

Todos 4 comentários

Obrigado por relatar @ christopher-tse. Acho que precisaremos de um pouco mais de informações aqui.

Você poderia seguir os próximos passos e voltar com os detalhes solicitados:

  1. Defina seu prompt para algo muito mais simples, sem quaisquer códigos ANSI (por exemplo, PS1="\u:\w $ " ). Isso deve dar a você um terminal preto e branco típico
  2. Execute o seguinte comando em seu terminal (ele deve imprimir apenas green test , com green sendo realmente verde 😅):
    echo -e "\033[1;32mgreen\033[0m test"
  3. Cole uma captura de tela do resultado aqui. O que você deveria ver é algo assim:
    image

Por último, se houver uma maneira de definir a opção debug do terminal xterm.js para true no código do VS e puder enviar logs de terminal de volta, isso também seria muito útil. Eles devem ser assim:

data: 
[1;32mgreen[0m test
www-data<strong i="21">@e167814701c2</strong>:/mnt/project $  undefined
Terminal.ts:1917 CSI  1;32  m undefined
Terminal.ts:1917 CSI  0  m undefined

PS: Você também pode enviar a versão específica do hyper que está usando? O Hyper ainda não integrou o xterm.js (https://github.com/zeit/hyper/pull/1983), então, se esse é um problema que aparece tanto no software que usa xterm.js quanto no hyper.is, provavelmente é um problema de o subsistema Linux.

Já vi isso antes quando você tem cores fora do padrão em cmd.exe. Se isso resolver o problema, é um problema com https://github.com/rprichard/winpty

@Tyriar Você acertou em

@parisk Suponho que você não precise dos detalhes acima, então? Terei todo o prazer em fazer algumas capturas de tela, se você ainda quiser.

@ christopher-tse legal, vou encerrar isso porque é um problema do upstream. Os detalhes não deveriam ser necessários 😃

Esta página foi útil?
0 / 5 - 0 avaliações