¿Puedo ver imágenes y ver películas dentro del emulador de terminal? En el caso de la consola virtual, puedo hacerlo a través de framebuffer, pero ¿qué pasa con los emuladores de terminal?
¿Puedo ver imágenes y ver películas dentro del emulador de terminal? En el caso de la consola virtual, puedo hacerlo a través de framebuffer, pero ¿qué pasa con los emuladores de terminal?
Respuestas:
Varios emuladores de terminal admiten Sixel Graphics , desde la página de github de PySixel , la lista es:
Puede mostrar las imágenes con el PySixel mencionado anteriormente , que parece poder realizar las conversiones necesarias. Otra opción es usar herramientas de netpbm
. Tuve buenos resultados usando lo siguiente para convertir y mostrar una imagen JPEG en mlterm:
jpegtopnm image.jpg | pnmquant 256 | ppmtosixel >/dev/tty
Resultado:
XTerm también puede mostrar imágenes Sixel, aunque el soporte actualmente está limitado a 16 colores (y también tiene errores). Aquí se puede descargar un archivo que contiene imágenes de muestra , aunque las secuencias de comandos parecen estar rotas. XTerm no muestra el formato exacto de salida ppmtosixel
(no admite las secuencias de control utilizadas al inicio / final). Antes de encontrar PySixel
, utilicé el siguiente script para piratear la ppmtosixel
salida en algo que XTerm mostrará:
#!/bin/bash
echo -e '\eP0;0;0;q"1;2;400;400'
jpegtopnm "$1" |
pnmquant 16 |
ppmtosixel |
tail -n +2 |
head -c -3
echo -e '\x1b\x5c\x0d'
tput cup "$(tput lines)" 0
Las imágenes no se mostrarán en el modo VT420 predeterminado. Solo se mostrarán en los modos VT240, VT241, VT330 o VT340. También --enable-sixel-graphics
se requiere la opción de compilación. Encontré los mejores resultados con VT340 ( xterm -ti vt340
). Aquí están los resultados (el primero es una imagen tron muy buena del archivo de muestra):
perl -wpe 'use bytes;s!([\x80-\x9f])!qq(\e).chr(ord($1)-64)!ge'
funciona como un gran filtro después de ppmtosixel (y en cualquier otro momento que desee cambiar los códigos c1 de 8 bits a sus equivalentes de 7 bits).
Por ejemplo, ¿quiero cambiar el fondo de mi terminal?
printf '\033}bp%s\000' \
'http://hdwalldesktops.com/wp-content/uploads/2014/02/background-backgrounds-high-resolution-abstract-picture-background-wallpaper.jpg'
Emula un vt100 ligeramente extendido con algunas extensiones y bling.
> Most escapes supported by xterm, rxvt etc. work
> Xterm 256 color escapes work
> Backgrounds (bitmap, scalable/vector, animated gif, videos)
> Transparency
> Bitmap and scalable fonts supported
> Themes for the layout and design
> URL, file path and email address detection and link-handling
> Inline display of link content
> Multiple copy and paste selections and buffer support
> Works in X11
> Works in Wayland
> Works directly in the linux framebuffer (fbcon)
> Can be finger/touch controlled
> Scan scale by UI scaling factors
> Can render using OpenGL or OpenGL-ES2 (not a requirement - just an
option)
> Can display inlined media content (images, video, documents)
> Can do multiple "tabs"
> Can do splitting into multiple panes
> Block text selection
> Drag and drop of text selections and links
> Can stream media from URLs
> Tab switcher has live thumbnail content
> Single process, multiple windows/terminals support
> Fast (gives urxvt a run for its money)
> Themable visual bell
> Compress backscroll
> Text reflow on resize
> Color palette selection
> More...
¿Ves eso arriba? Lo hace en el framebuffer.
Sí, más o menos. Mplayer, por ejemplo, admite la representación de video aalib (monocromo) y libcaca (color) en un terminal de texto. No es exactamente de alta resolución, pero con el renderizado de subpíxeles y el tramado temporal que aumentan la resolución efectiva, generalmente se puede saber qué está sucediendo.
En el mundo de Unix, los emuladores de terminal emulan terminales en serie, donde el flujo de datos que se mostrará al usuario se envía uno a la vez a través de una línea en serie.
En el tiempo del módem, esto normalmente era de alrededor de 1000-2000 caracteres por segundo, pero hoy puede ser mucho más rápido si solo se trata de hardware emulado. Luego fue hasta el terminal entender los bytes enviados. Por lo general, esto era para mostrar caracteres, mover el cursor y manipular la pantalla. Algunos terminales podrían cambiar a modos gráficos (gnuplot admite bastante), pero el ancho de banda es demasiado pequeño para hacer algo interesante en términos de video.
Aún así, para una computadora moderna con hardware emulado, un emulador de terminal puede hacer mucho. Intente buscar imágenes con el término de búsqueda "ttyquake" para ver algunas de ellas. Sin embargo, diría que si anhelas HD, lo más probable es que te decepciones.