ターミナルエミュレータ内で画像や映画を見ることができますか?仮想コンソールの場合、フレームバッファを介してそれを行うことができますが、端末エミュレータはどうですか?
ターミナルエミュレータ内で画像や映画を見ることができますか?仮想コンソールの場合、フレームバッファを介してそれを行うことができますが、端末エミュレータはどうですか?
回答:
PySixel githubページから、多くの端末エミュレーターがSixel Graphicsをサポートしています。リストは次のとおりです。
前述の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
ビルドオプションが必要です。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'
いくつかの拡張機能とblingがスローされた、わずかに拡張されたvt100をエミュレートします。
> 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...
上に見えますか?フレームバッファーでこれを行います。
Unixの世界では、ターミナルエミュレータはシリアルターミナルをエミュレートします。ユーザーに表示されるデータストリームは、シリアル回線を介して1つずつ送信されます。
モデムの時間では、これは通常1秒あたり約1000〜2000文字でしたが、エミュレートされたハードウェアのみが関係している場合、今日ははるかに高速です。その後、送信されたバイトを理解するのは端末次第でした。通常、これはキャラクターの表示、カーソルの移動、画面表示の操作のためでした。いくつかの端末はグラフィックモードに切り替えることができます-gnuplotはかなりサポートしています-帯域幅が非常に小さいため、ビデオの面で面白いことをすることができません。
それでも、エミュレートされたハードウェアを備えた最新のコンピューターでは、ターミナルエミュレーターは非常に多くのことを実行できます。検索用語「ttyquake」を使用して画像を検索してみてください。あなたがHDを切望するなら、あなたはおそらく失望するだろうと私は言います。