Можно ли просматривать изображения и смотреть фильмы внутри эмулятора терминала? В случае виртуальной консоли я могу сделать это через framebuffer, но как насчет эмуляторов терминала?
Можно ли просматривать изображения и смотреть фильмы внутри эмулятора терминала? В случае виртуальной консоли я могу сделать это через framebuffer, но как насчет эмуляторов терминала?
Ответы:
Ряд эмуляторов терминала поддерживают Sixel Graphics , со страницы PySixel github , список:
Вы можете отображать изображения с помощью вышеупомянутого PySixel , который, кажется, способен выполнять необходимые преобразования. Другим вариантом является использование инструментов из netpbm
. У меня были хорошие результаты, используя следующие для преобразования и отображения изображения JPEG на mlterm:
jpegtopnm image.jpg | pnmquant 256 | ppmtosixel >/dev/tty
Результат:
XTerm также может отображать изображения Sixel, хотя поддержка в настоящее время ограничена 16 цветами (и также содержит ошибки). Архив, содержащий примеры изображений, можно скачать здесь , хотя скрипты, похоже, не работают. XTerm не отображает точный формат вывода ppmtosixel
(он не поддерживает последовательности управления, используемые в начале / конце). Прежде чем найти PySixel
, я использовал следующий скрипт, чтобы взломать ppmtosixel
вывод в то, что будет отображать 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
Изображения не будут отображаться в режиме VT420 по умолчанию. Только в режимах VT240, VT241, VT330 или VT340 они будут отображаться. Также --enable-sixel-graphics
требуется опция сборки. Я нашел лучшие результаты с VT340 ( xterm -ti vt340
). Вот результаты (первое - очень крутое изображение Трона из примера архива):
perl -wpe 'use bytes;s!([\x80-\x9f])!qq(\e).chr(ord($1)-64)!ge'
работает как отличный фильтр после ppmtosixel (и в любое другое время, когда вы хотите переключить 8-битные коды c1 на их 7-битные эквиваленты).
Например - я хочу изменить фон моего терминала?
printf '\033}bp%s\000' \
'http://hdwalldesktops.com/wp-content/uploads/2014/02/background-backgrounds-high-resolution-abstract-picture-background-wallpaper.jpg'
Он эмулирует слегка расширенный vt100 с некоторыми расширениями и добавлением 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...
Вы видите это выше? Это происходит в фреймбуфере.
Да вроде. Mplayer, например, поддерживает как aalib (монохромный), так и libcaca (цветной) рендеринг видео в текстовом терминале. Это не совсем высокое разрешение, но с помощью субпиксельного рендеринга и временного сглаживания, увеличивающего эффективное разрешение, вы обычно можете сказать, что происходит.
В мире Unix эмуляторы терминалов эмулируют последовательные терминалы, где поток данных, который должен быть показан пользователю, отправляется по одному по последовательной линии.
Во времена модема это обычно было около 1000-2000 символов в секунду, но сегодня может быть намного быстрее, если задействовано только эмулируемое оборудование. Это было тогда до терминала, чтобы понять отправленные байты. Обычно это было для отображения символов, перемещения курсора и манипулирования экраном. Несколько терминалов могут переключаться в графические режимы - gnuplot поддерживает совсем немного - но пропускная способность слишком мала, чтобы делать что-либо интересное с точки зрения видео.
Тем не менее, для современного компьютера с эмулируемым оборудованием эмулятор терминала может многое сделать. Попробуйте найти изображения с поиском «ttyquake», чтобы увидеть некоторые из них. Я бы сказал, что если вы жаждете HD, вы, скорее всего, будете разочарованы.