Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

114
Visualizações
xtermjs no se muestra correctamente y muestra texto torcido

Estoy guardando datos de una sesión tmux con panel de captura en un archivo.txt y obtengo, por ejemplo, este resultado:

 PC1:/path$ cd /usr PC1:/usr$ ll total 0 drwxr-xr-x 1 root root 4096 May 21 2019 [1;34m.[0;39m/ drwxr-xr-x 1 root root 4096 Aug 1 2019 [1;34m..[0;39m/ drwxr-xr-x 1 root root 4096 Mar 17 15:09 [1;34mbin[0;39m/ drwxr-xr-x 1 root root 4096 Apr 12 2016 [1;34mgames[0;39m/ drwxr-xr-x 1 root root 4096 Feb 8 09:44 [1;34minclude[0;39m/ drwxr-xr-x 1 root root 4096 Feb 8 09:44 [1;34mlib[0;39m/ drwxr-xr-x 1 root root 4096 Nov 26 14:52 [1;34mlocal[0;39m/ drwxr-xr-x 1 root root 4096 May 21 2019 [1;34msbin[0;39m/ drwxr-xr-x 1 root root 4096 Feb 8 09:44 [1;34mshare[0;39m/ drwxr-xr-x 1 root root 4096 May 21 2019 [1;34msrc[0;39m/ PC1:/usr$`

Si hago cat file.txt , se muestra correctamente con colores. Si escribo algunos datos en xtermjs, se muestran todos torcidos:

ingrese la descripción de la imagen aquí

He intentado:

  • Ajuste de las columnas, filas en las opciones de la Terminal (obtengo las columnas y filas actuales con tput cols y tput lines en Linux)
  • Usando "xterm-addon-fit"
  • He intentado varias formas de cargar el archivo solo para ver si no estoy perdiendo información al copiar/pegar
  • Probé con el paquete xterm-for-reacth
  • También probé vanilla js pero tuve los mismos problemas.

Nada funcionó. En este momento, solo quiero encontrar una forma de obtener el texto de una sesión de tmux y mostrarlo correctamente en xtermjs.

Puede ver el problema en estecodesandbox .

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

editar:

xtermjs solo acepta CRLF (también conocido como \r\n), por lo que si \r se convierte en \r\n, funcionará.


Tenía varias suposiciones incorrectas:

  • Esa write de xtermjs procesaría los finales de línea (como procesa todo lo demás)
  • Había pestañas en mi texto

Solo descubrí el problema cuando representé los finales de línea y noté que no había pestañas al principio.

La rareza en la imagen de arriba es solo el ajuste de palabra. xterm funciona enfocado en agregar líneas y no cargar pantallas completas.

El siguiente ejemplo funciona, aunque solo con fines de prueba.

 import { useEffect } from "react"; import { Terminal } from "xterm"; import "./styles.css"; import "xterm/css/xterm.css"; const txt = ` PC1:/path$ cd /usr PC1:/usr$ ll total 0 drwxr-xr-x 1 root root 4096 May 21 2019 [1;34m.[0;39m/ drwxr-xr-x 1 root root 4096 Aug 1 2019 [1;34m..[0;39m/ drwxr-xr-x 1 root root 4096 Mar 17 15:09 [1;34mbin[0;39m/ drwxr-xr-x 1 root root 4096 Apr 12 2016 [1;34mgames[0;39m/ drwxr-xr-x 1 root root 4096 Feb 8 09:44 [1;34minclude[0;39m/ drwxr-xr-x 1 root root 4096 Feb 8 09:44 [1;34mlib[0;39m/ drwxr-xr-x 1 root root 4096 Nov 26 14:52 [1;34mlocal[0;39m/ drwxr-xr-x 1 root root 4096 May 21 2019 [1;34msbin[0;39m/ drwxr-xr-x 1 root root 4096 Feb 8 09:44 [1;34mshare[0;39m/ drwxr-xr-x 1 root root 4096 May 21 2019 [1;34msrc[0;39m/ PC1:/usr$`; let terminal; export default function App() { useEffect(() => { terminal = new Terminal(); terminal.open(document.getElementById("terminal")); const lines = txt.split(/\n/); lines.forEach((l) => terminal.write(l + "\r\n")); }, []); return ( <div className="App"> <h1>Hello CodeSandbox</h1> <div id="terminal" /> </div> ); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda