Kann ich im Terminalemulator Bilder sehen und Filme ansehen? Im Falle einer virtuellen Konsole kann ich dies über den Framebuffer tun, aber was ist mit Terminalemulatoren?
Kann ich im Terminalemulator Bilder sehen und Filme ansehen? Im Falle einer virtuellen Konsole kann ich dies über den Framebuffer tun, aber was ist mit Terminalemulatoren?
Antworten:
Eine Reihe von Terminal-Emulatoren unterstützen Sixel Graphics . Auf der PySixel-Github-Seite heißt die Liste:
Sie können die Bilder mit dem oben genannten PySixel anzeigen , der anscheinend die erforderlichen Konvertierungen durchführen kann. Eine andere Möglichkeit ist die Verwendung von Werkzeugen aus netpbm
. Ich hatte gute Ergebnisse beim Konvertieren und Anzeigen eines JPEG-Bildes mit mlterm:
jpegtopnm image.jpg | pnmquant 256 | ppmtosixel >/dev/tty
Ergebnis:
XTerm kann auch Sixel-Bilder anzeigen, obwohl die Unterstützung derzeit auf 16 Farben beschränkt ist (und auch fehlerhaft ist). Ein Archiv mit Beispielbildern kann hier heruntergeladen werden , obwohl die Skripte fehlerhaft zu sein scheinen. XTerm zeigt nicht das genaue Ausgabeformat von an ppmtosixel
(es unterstützt nicht die am Anfang / Ende verwendeten Steuersequenzen). Bevor PySixel
ich gefunden habe , habe ich den folgenden Scrip verwendet, um die ppmtosixel
Ausgabe in etwas zu hacken, das XTerm anzeigt:
#!/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
Die Bilder werden im Standard-VT420-Modus nicht angezeigt. Nur in den Modi VT240, VT241, VT330 oder VT340 werden sie angezeigt. Auch die --enable-sixel-graphics
Build-Option ist erforderlich. Ich habe mit VT340 ( xterm -ti vt340
) die besten Ergebnisse erzielt . Hier sind die Ergebnisse (das erste ist ein sehr cooles Tron-Bild aus dem Beispielarchiv):
perl -wpe 'use bytes;s!([\x80-\x9f])!qq(\e).chr(ord($1)-64)!ge'
funktioniert wie ein großartiger Filter nach ppmtosixel (und zu jedem anderen Zeitpunkt möchten Sie 8-Bit-C1-Codes auf ihre 7-Bit-Entsprechungen umschalten).
Zum Beispiel - Ich möchte den Hintergrund meines Terminals ändern?
printf '\033}bp%s\000' \
'http://hdwalldesktops.com/wp-content/uploads/2014/02/background-backgrounds-high-resolution-abstract-picture-background-wallpaper.jpg'
Es emuliert ein leicht erweitertes vt100 mit einigen Erweiterungen und eingeworfenem 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...
Siehst du das oben? Dies geschieht im Framebuffer.
Mehr oder weniger. Mplayer unterstützt zum Beispiel sowohl das AALIB-Rendering (einfarbig) als auch das Libcaca- Rendering (farbig) von Videos in einem Textterminal. Es ist nicht gerade hochauflösend, aber wenn sowohl das Sub-Pixel-Rendering als auch das temporäre Dithering die effektive Auflösung erhöhen, können Sie in der Regel erkennen, was los ist.
In der Unix-Welt emulieren Terminalemulatoren serielle Terminals, bei denen der dem Benutzer anzuzeigende Datenstrom einzeln über eine serielle Leitung gesendet wird.
In der Modem-Zeit waren dies normalerweise 1000-2000 Zeichen pro Sekunde, aber heute kann es viel schneller sein, wenn nur emulierte Hardware verwendet wird. Es lag dann am Terminal, die gesendeten Bytes zu verstehen. Normalerweise diente dies dazu, Zeichen anzuzeigen, den Cursor zu bewegen und die Bildschirmanzeige zu manipulieren. Einige Terminals könnten in den Grafikmodus wechseln - gnuplot unterstützt einiges -, aber die Bandbreite ist viel zu klein, um irgendetwas Interessantes in Bezug auf Video zu tun.
Für einen modernen Computer mit emulierter Hardware kann ein Terminalemulator jedoch eine ganze Menge leisten. Versuchen Sie, nach Bildern mit dem Suchbegriff "ttyquake" zu suchen, um einige davon zu sehen. Ich würde jedoch sagen, dass Sie höchstwahrscheinlich enttäuscht sein werden, wenn Sie sich nach HD sehnen.