Answers:
例如-我想更改终端的背景吗?
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...
你在上面看到了吗?它在帧缓冲区中执行此操作。
许多终端模拟器都支持Sixel Graphics,从PySixel github页面开始,列表为:
您可以使用上述PySixel显示图像,该PySixel似乎能够进行必要的转换。另一种选择是使用的工具netpbm
。使用以下命令在mlterm上转换并显示JPEG图像,我获得了良好的结果:
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
build选项是必需的。我用VT340(xterm -ti vt340
)找到了最佳结果。结果如下(第一个是样本档案中非常酷的tron图像):
perl -wpe 'use bytes;s!([\x80-\x9f])!qq(\e).chr(ord($1)-64)!ge'
在ppmtosixel之后(以及您希望将8位c1代码切换为7位等效代码的任何其他时间)起一个很好的过滤器的作用。
在Unix世界中,终端仿真器模拟串行终端,其中要显示给用户的数据流通过串行线路一次发送一次。
在调制解调器时代,这通常约为每秒1000-2000个字符,但如果仅包含模拟硬件,则今天可能会更快。然后由终端了解发送的字节。通常,这是为了显示字符,移动光标和操纵屏幕显示。一些终端可以切换到图形模式-gnuplot支持很多-但带宽太小,无法进行视频方面的任何有趣的操作。
对于具有仿真硬件的现代计算机而言,终端仿真器仍然可以完成很多工作。尝试使用搜索词“ ttyquake”搜索图像,以查看其中的一些内容。我想说的是,如果您渴望高清,您很可能会失望。