Bisakah saya melihat gambar dan menonton film di dalam terminal emulator? Dalam hal konsol virtual saya dapat melakukannya melalui framebuffer, tetapi bagaimana dengan terminal emulator?
Bisakah saya melihat gambar dan menonton film di dalam terminal emulator? Dalam hal konsol virtual saya dapat melakukannya melalui framebuffer, tetapi bagaimana dengan terminal emulator?
Jawaban:
Sejumlah emulator terminal mendukung Sixel Graphics , dari halaman github PySixel , daftarnya adalah:
Anda dapat menampilkan gambar dengan PySixel yang disebutkan sebelumnya , yang tampaknya dapat melakukan konversi yang diperlukan. Opsi lain adalah menggunakan alat dari netpbm
. Saya mendapatkan hasil yang baik menggunakan yang berikut ini untuk mengonversi dan menampilkan gambar JPEG di mlterm:
jpegtopnm image.jpg | pnmquant 256 | ppmtosixel >/dev/tty
Hasil:
XTerm juga dapat menampilkan gambar Sixel, meskipun dukungan saat ini terbatas pada 16 warna (dan juga bermasalah). Arsip yang berisi sampel gambar dapat diunduh di sini , meskipun skripnya tampaknya rusak. XTerm tidak menampilkan output format yang tepat dengan ppmtosixel
(itu tidak mendukung urutan kontrol yang digunakan pada awal / akhir). Sebelum menemukan PySixel
, saya menggunakan skrip berikut untuk meretas ppmtosixel
output menjadi sesuatu yang XTerm akan tampilkan:
#!/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
Gambar tidak akan ditampilkan dalam mode VT420 default. Hanya dalam mode VT240, VT241, VT330 atau VT340 yang akan ditampilkan. Juga --enable-sixel-graphics
opsi membangun diperlukan. Saya menemukan hasil terbaik dengan VT340 ( xterm -ti vt340
). Inilah hasilnya (yang pertama adalah gambar tron yang sangat keren dari arsip sampel):
perl -wpe 'use bytes;s!([\x80-\x9f])!qq(\e).chr(ord($1)-64)!ge'
berfungsi sebagai filter hebat setelah ppmtosixel (dan setiap kali Anda ingin mengganti kode 8bit c1 ke 7bit yang setara).
Misalnya - saya ingin mengubah latar belakang terminal saya?
printf '\033}bp%s\000' \
'http://hdwalldesktops.com/wp-content/uploads/2014/02/background-backgrounds-high-resolution-abstract-picture-background-wallpaper.jpg'
Ini mengemulasi vt100 yang sedikit diperpanjang dengan beberapa ekstensi dan dimasukkan.
> 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...
Anda lihat itu di atas? Ini dilakukan di framebuffer.
Ya, semacam. Mplayer, misalnya, mendukung rendering video aalib (monochrome) dan libcaca (warna) dalam terminal teks. Ini bukan resolusi yang sangat tinggi, tetapi dengan rendering sub-"pixel" dan temporal dithering yang meningkatkan resolusi efektif, Anda biasanya dapat mengetahui apa yang sedang terjadi.
Di terminal dunia Unix, emulator meniru terminal serial, tempat aliran data yang ditampilkan kepada pengguna dikirim satu per satu melalui saluran serial.
Dalam waktu modem ini biasanya sekitar 1000-2000 karakter per detik, tetapi mungkin jauh lebih cepat hari ini jika hanya perangkat keras yang ditiru yang terlibat. Kemudian naik ke terminal untuk memahami byte yang dikirim. Biasanya ini untuk menunjukkan karakter, menggerakkan kursor dan memanipulasi tampilan layar. Beberapa terminal dapat beralih ke mode grafis - gnuplot mendukung sedikit - tetapi bandwidth terlalu kecil untuk melakukan sesuatu yang menarik dalam hal video.
Namun, untuk komputer modern dengan perangkat keras yang ditiru emulator terminal dapat melakukan cukup banyak. Coba cari gambar dengan istilah pencarian "ttyquake" untuk melihatnya. Saya akan mengatakan bahwa jika Anda menginginkan HD, kemungkinan besar Anda akan kecewa.