Czy mogę oglądać obrazy i oglądać filmy w emulatorze terminali? W przypadku konsoli wirtualnej mogę to zrobić za pomocą bufora ramki, ale co z emulatorami terminali?
Czy mogę oglądać obrazy i oglądać filmy w emulatorze terminali? W przypadku konsoli wirtualnej mogę to zrobić za pomocą bufora ramki, ale co z emulatorami terminali?
Odpowiedzi:
Na przykład - chcę zmienić tło mojego terminala?
printf '\033}bp%s\000' \
'http://hdwalldesktops.com/wp-content/uploads/2014/02/background-backgrounds-high-resolution-abstract-picture-background-wallpaper.jpg'
Emuluje nieco rozszerzone vt100 z kilkoma rozszerzeniami i wtopieniem.
> 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...
Widzisz to powyżej? Robi to w buforze ramki.
Wiele emulatorów terminali obsługuje grafikę Sixel , ze strony github PySixel lista jest następująca:
Możesz wyświetlać obrazy z wyżej wymienionym PySixel , który wydaje się być w stanie dokonać niezbędnych konwersji. Inną opcją jest użycie narzędzi z netpbm
. Miałem dobre wyniki, wykorzystując poniższe do konwersji i wyświetlania obrazu JPEG na mlterm:
jpegtopnm image.jpg | pnmquant 256 | ppmtosixel >/dev/tty
Wynik:
XTerm może również wyświetlać obrazy Sixel, chociaż obsługa jest obecnie ograniczona do 16 kolorów (i jest również wadliwa). Archiwum zawierające przykładowe obrazy można pobrać tutaj , chociaż skrypty wydają się być uszkodzone. XTerm nie wyświetla dokładnego formatu wyjściowego według ppmtosixel
(nie obsługuje sekwencji sterujących używanych na początku / na końcu). Przed znalezieniem PySixel
użyłem następującego skryptu, aby zhakować dane ppmtosixel
wyjściowe w coś, co wyświetli XTerm:
#!/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
Obrazy nie będą wyświetlane w domyślnym trybie VT420. Wyświetlane będą tylko w trybach VT240, VT241, VT330 lub VT340. --enable-sixel-graphics
Wymagana jest również opcja kompilacji. Najlepsze wyniki uzyskałem dzięki VT340 ( xterm -ti vt340
). Oto wyniki (pierwszy to bardzo fajny obraz tron z przykładowego archiwum):
perl -wpe 'use bytes;s!([\x80-\x9f])!qq(\e).chr(ord($1)-64)!ge'
działa jako świetny filtr po ppmtosixel (i za każdym razem, gdy chcesz zmienić 8-bitowe kody c1 na ich 7-bitowe odpowiedniki).
Tak, w pewnym sensie. Na przykład Mplayer obsługuje rendering wideo aalib (monochromatyczny) i libcaca (kolorowy) w terminalu tekstowym. To nie jest dokładnie wysoka rozdzielczość, ale zarówno renderowanie subpikselowe, jak i dithering czasowy zwiększają efektywną rozdzielczość, zazwyczaj można powiedzieć, co się dzieje.
W świecie uniksowym emulatory terminali emulują terminale szeregowe, gdzie strumień danych, który ma być pokazywany użytkownikowi, jest wysyłany pojedynczo przez linię szeregową.
W czasie modemu było to zwykle około 1000-2000 znaków na sekundę, ale dziś może być znacznie szybsze, jeśli zaangażowany jest tylko emulowany sprzęt. Do terminalu należało zrozumienie wysłanych bajtów. Zwykle służyło to do wyświetlania znaków, przesuwania kursora i manipulowania wyświetlaniem na ekranie. Kilka terminali może przełączyć się w tryby graficzne - obsługa gnuplot jest dość duża - ale przepustowość jest o wiele za mała, aby zrobić coś interesującego pod względem wideo.
Jednak w przypadku nowoczesnego komputera z emulowanym sprzętem emulator terminala może wiele zrobić. Spróbuj wyszukać obrazy z wyszukiwanym terminem „ttyquake”, aby zobaczyć niektóre z nich. Powiedziałbym jednak, że jeśli pragniesz HD, najprawdopodobniej będziesz rozczarowany.