Gráficos en TTY


8

Ha surgido algo que me exige trabajar solo en la línea de comandos. Mi trabajo principal es la programación (principalmente en Fortran y Octave) y necesito mostrar gráficos.

Como un ejemplo cojo:

Abro octava y escribo ezplot('sin(x)') y da como resultado que el entorno de pantalla X11 no esté configurado y no pueda abrir la pantalla. ¿Hay alguna forma de ver gráficos en TTY?

Obviamente, no espero gráficos increíbles, pero necesito ver si estoy en el camino correcto de vez en cuando.

Mi algoritmo actual es extremadamente ineficiente. Yo print -djpeg foo.jpegy luego scp a mi computadora vecina. Pide prestado eso y continúa.


Se me ocurren tres preguntas obvias: ¿qué sistema operativo está ejecutando en su máquina de escritorio? ¿Estás en la consola del sistema o estás conectado de forma remota? Y, si está conectado de forma remota, ¿qué protocolo / software utiliza para conectarse a la máquina remota (por ejemplo, SSH usando PuTTY)?
Alexios

1
En realidad tienes dos preguntas diferentes aquí. ¿Hay alguna forma de ver gráficos en TTY? (respuesta: aalib o svgalib); y lo no declarado ¿Cómo puedo imprimir gráficos en ASCII? (gnuplot, cernlib, etc.) ¿Puedes aclarar lo que quieres en lugar de cómo esperas lograrlo?
dmckee --- ex-gatito moderador


Un rápido google sugiere que octava no es compatible con aalib directamente y que a nadie le importa, hay indicios de que algunas personas quieren que funcione con svgalib, aunque no sé si realmente funciona.
dmckee --- ex-gatito moderador

En una nota diferente, si OP no quiere scparchivos todo el tiempo, entonces buscar sshfspodría ser una alternativa.
phk

Respuestas:


5

Si simplemente tiene una serie de .jpegimágenes que desea mostrar en un tty, puede usar aviewo asciiview. Al llamar asciiviewcon una imagen, convertirá la imagen al .pnmformato, utilizando un programa externo como NetPBM o ImageMagic, antes de pasarla a aviewmostrar. El .pnmes el asciiformato de imagen utilizado para representar la imagen como un conjunto de caracteres. Para ver una imagen en este formato, simplemente use:

$ asciiview foo.jpeg

o para guardar una .pnmcopia primero:

$ convert foo.jpeg foo.pnm
$ aview foo.pnm

Estos admiten el controlador de aalib.


Ninguno de los otros métodos palabra.

5

¿No puede ejecutar un servidor X en otro tty y cambiar a él cuando lo necesite? Si tiene una máquina a su lado que ejecuta X, puede usar el reenvío X11 para que se muestre allí.


Un ejemplo de esto se puede encontrar en esta pregunta.
Emanuel Berg

5

La respuesta más directa es usar jp2a : JPEG a ASCII.

Tal vez puedas usar la famosa biblioteca de arte ascii: libcaca . Incluso permite ver películas en un terminal , por lo que también debería funcionar para archivos JPEG simples.


2

Puede dibujar gráficos directamente como ASCII con gnuplot;
Establezca el tipo de terminal en dumb, eso es todo lo que necesita:

$ gnuplot
gnuplot> set terminal dumb
Terminal type set to 'dumb'
Options are 'feed  size 79, 24'
gnuplot> plot sin(x)



    1 ++---------------***---------------+---**-----------+--------**-----++
      +                *  *              +  *  **         +  sin(x) ****** +
  0.8 ++              *   *                 *    *               *    *   ++
      |              *     *               *     *               *     *   |
  0.6 *+             *      *              *     *               *     *  ++
      |*             *      *             *       *             *       *  |
  0.4 +*            *       *             *       *             *       * ++
      |*            *        *            *        *           *        *  |
  0.2 +*           *         *            *        *           *         *++
    0 ++*          *          *          *         *          *          *++
      | *          *          *         *           *         *           *|
 -0.2 ++ *         *          *         *           *         *           *+
      |  *        *           *        *             *        *           *|
 -0.4 ++ *        *            *       *             *       *            *+
      |  *       *              *      *             *      *              *
 -0.6 ++  *      *              *      *             *      *             +*
      |    *    *               *     *               *     *              |
 -0.8 ++   *    *                *   *                 *   *              ++
      +     *  *       +         **  *   +             *  *                +
   -1 ++-----**--------+-----------**----+--------------***---------------++
     -10              -5                 0                5                10

gnuplot>

1
No está relacionado con OP, pero tengo en cuenta que también tiene el terminal de lienzo , ¡lo cual es genial!

@ Amphiteóth Sí, ese también es interesante: está renderizando a un lienzo HTML, ¿verdad? Lo habría mencionado si el navegador en modo linksy elinkstexto pudiera representarlo.
Volker Siegel

1
Sí, con algo así como set output 'output.html'obtener ese archivo, y mirando la fuente, es como JS en línea y llama a canvastext.js y gnuplot_common.js . No sabia esto! ¡Bastante útil!

2

Si está utilizando un programa de terminal que es capaz de mostrar gráficos Sixel , por ejemplo, xtermuno o uno de sus derivados, puede convertir imágenes en formato Sixel con PySixel y salida, o integrar un filtro que imprima los comandos Sixel directamente.

De esa manera, tendrá gráficos en color verdadero (no ASCII) en el terminal.


1

Si está en una consola TTY en Linux o FreeBSD, puede usar svgalib para mostrar imágenes en modo gráfico, sin X11. La biblioteca puede cambiar la consola al modo de gráficos, simplemente no se usa comúnmente hoy en día, porque X11 tiene sus ventajas.

Hay un visor de imágenes para la consola, que puede necesitar algunos ajustes para construirlo porque está algo desactualizado, pero vale la pena intentarlo.

El visor de imágenes zgv: también hay un visor similar para X11, llamado xzgv, en caso de que te guste mucho la interfaz.


0

Para los gráficos reales, su mejor (y posiblemente única) apuesta es svgalib , pero tenga en cuenta que no tiene nada en común con X11, por lo que deberá escribir su propio reemplazo ezplot.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.