Xterm.js: ANSI-Farbcodes werden nicht richtig gerendert

Erstellt am 20. Aug. 2017  ·  4Kommentare  ·  Quelle: xtermjs/xterm.js


Die Standard-ANSI-Hintergrundfarbe wird auf dem Windows-Subsystem für Linux (natives Bash-Terminal für Windows) nicht richtig gerendert, wodurch bei der Ausgabe eine blaue Hintergrundfarbe erstellt wird, wenn keine vorhanden sein sollte.

Einzelheiten

  • Browser und Browserversion: VSCode Embedded Terminal und Hyper.is Terminal (neueste Versionen)
  • Betriebssystemversion: Windows 10

Schritte zum Reproduzieren

  1. Neuinstallation von Windows Subsystem für Linux
  2. Öffnen Sie das Terminal in VSCode oder Hyper.is
  3. Setzen Sie das Standardterminal auf die Bash-Shell (VSCode: "terminal.integrated.shell.windows": "C:\\WINDOWS\\Sysnative\\bash.exe" , Hyper: shell: 'C:\\Windows\\System32\\bash.exe' )
  4. Die Standardausgabefarbe hat einen blauen Hintergrund

Als Referenz ist die Eingabeaufforderung die Standardeinstellung:

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

Dabei sollte [\033[00m\] auf den Standard zurückgesetzt werden, was der Fall ist, aber der Standard scheint falsch zu sein. Die Verwendung von [\033[39m\] ebenfalls den gleichen Effekt.

Bei Verwendung von Standard-Windows CMD oder PS werden nicht dieselben Effekte reproduziert.

Bilder zeigen Problem

Die Ränder in den Bildern spiegeln den tatsächlichen Hintergrund der Anwendung wider.

VSCode:
vscode
Hyper:
hyper

needs more info typbug

Alle 4 Kommentare

Vielen Dank für die Meldung @ christopher-tse. Ich denke, wir werden hier ein bisschen mehr Informationen brauchen.

Könnten Sie die nächsten Schritte ausführen und mit den angeforderten Details zurückkehren?

  1. Stellen Sie Ihre Eingabeaufforderung viel einfacher ein, ohne ANSI-Codes (z. B. PS1="\u:\w $ " ). Dies sollte Ihnen ein typisches Schwarz-Weiß-Terminal geben
  2. Führen Sie den folgenden Befehl in Ihrem Terminal aus (es sollte nur green test drucken, wobei green tatsächlich grün ist 😅):
    echo -e "\033[1;32mgreen\033[0m test"
  3. Fügen Sie hier einen Screenshot des Ergebnisses ein. Was Sie sehen sollten, ist ungefähr so:
    image

Wenn Sie die Option debug des Terminals xterm.js im VS-Code auf true und Terminalprotokolle zurücksenden können, ist dies ebenfalls sehr hilfreich. Sie sollten so aussehen:

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: Können Sie auch die bestimmte Version von Hyper senden, die Sie verwenden? Hyper hat xterm.js noch nicht integriert (https://github.com/zeit/hyper/pull/1983). Wenn dies also ein Problem ist, das sowohl in Software mit xterm.js als auch in hyper.is auftritt, ist es wahrscheinlich ein Problem von das Linux-Subsystem.

Ich habe das schon einmal gesehen, als Sie nicht standardmäßige Farben in cmd.exe haben. Wenn dies das Problem behebt, liegt ein Problem mit https://github.com/rprichard/winpty vor

@ Tyriar Du hast Recht mit dem Geld. Ich musste die Hintergrundfarbe im Menü "Standard" der cmd.exe ändern und nicht im Menü "Eigenschaften". Das Zurücksetzen auf die schwarze Farbe scheint das Problem behoben zu haben.

@parisk Ich nehme an, Sie werden dann die oben genannten Details nicht benötigen? Gerne mache ich ein paar Screenshots, wenn Sie sie noch mögen.

@ christopher-tse cool, ich werde das schließen, da es ein Upstream-Problem ist. Die Details sollten nicht notwendig sein 😃

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

kolbe picture kolbe  ·  3Kommentare

Tyriar picture Tyriar  ·  4Kommentare

circuitry2 picture circuitry2  ·  4Kommentare

albinekb picture albinekb  ·  4Kommentare

Mlocik97-issues picture Mlocik97-issues  ·  3Kommentare