Posso vedere immagini e guardare film all'interno dell'emulatore di terminale? In caso di console virtuale posso farlo tramite framebuffer, ma per quanto riguarda gli emulatori di terminale?
Posso vedere immagini e guardare film all'interno dell'emulatore di terminale? In caso di console virtuale posso farlo tramite framebuffer, ma per quanto riguarda gli emulatori di terminale?
Risposte:
Numerosi emulatori di terminale supportano Sixel Graphics , dalla pagina github di PySixel , l'elenco è:
È possibile visualizzare le immagini con il summenzionato PySixel , che sembra essere in grado di fare le conversioni necessarie. Un'altra opzione è quella di utilizzare gli strumenti di netpbm
. Ho ottenuto buoni risultati usando quanto segue per convertire e visualizzare un'immagine JPEG su mlterm:
jpegtopnm image.jpg | pnmquant 256 | ppmtosixel >/dev/tty
Risultato:
XTerm può anche visualizzare immagini Sixel, sebbene il supporto sia attualmente limitato a 16 colori (ed è anche difettoso). Un archivio contenente immagini di esempio può essere scaricato qui , anche se gli script sembrano essere rotti. XTerm non visualizza il formato esatto di output ppmtosixel
(non supporta le sequenze di controllo utilizzate all'inizio / alla fine). Prima di trovare PySixel
, ho usato il seguente script per incidere l' ppmtosixel
output in qualcosa che XTerm mostrerà:
#!/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
Le immagini non verranno visualizzate nella modalità VT420 predefinita. Saranno visualizzati solo nelle modalità VT240, VT241, VT330 o VT340. Inoltre --enable-sixel-graphics
è richiesta l' opzione di compilazione. Ho trovato i migliori risultati con VT340 ( xterm -ti vt340
). Ecco i risultati (la prima è un'immagine tron molto interessante dall'archivio di esempio):
perl -wpe 'use bytes;s!([\x80-\x9f])!qq(\e).chr(ord($1)-64)!ge'
funziona come un ottimo filtro dopo ppmtosixel (e tutte le altre volte che si desidera cambiare i codici c1 a 8 bit con i loro equivalenti a 7 bit).
Ad esempio: voglio cambiare lo sfondo del mio terminale?
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 leggermente esteso con alcune estensioni e bling inseriti.
> 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...
Lo vedi sopra? Lo fa nel framebuffer.
Sì, una specie di. Mplayer, ad esempio, supporta sia il rendering aalib (monocromatico) che libcaca (colore) del video in un terminale di testo. Non è esattamente ad alta risoluzione, ma con sia il rendering sotto "pixel" che il dithering temporale aumentano la risoluzione effettiva, di solito puoi dire cosa sta succedendo.
Nel mondo Unix gli emulatori di terminali emulano terminali seriali, dove il flusso di dati da mostrare all'utente viene inviato uno alla volta su una linea seriale.
Al tempo del modem, in genere, era di circa 1000-2000 caratteri al secondo, ma oggi potrebbe essere molto più veloce se fosse coinvolto solo l'hardware emulato. Spetta quindi al terminale comprendere i byte inviati. Di solito questo era per mostrare i personaggi, spostare il cursore e manipolare la visualizzazione dello schermo. Alcuni terminali potrebbero passare alle modalità grafiche - gnuplot supporta un bel po '- ma la larghezza di banda è troppo piccola per fare qualcosa di interessante in termini di video.
Tuttavia, per un computer moderno con hardware emulato un emulatore di terminale può fare molto. Prova a cercare immagini con il termine di ricerca "ttyquake" per vederne alcune. Direi però che se desideri l'HD sarai molto deluso.