web-dev-qa-db-ja.com

端末エミュレーター内で画像を見たり映画を見たりできますか

端末エミュレーター内で画像を表示したり、映画を見たりできますか?仮想コンソールの場合、フレームバッファーを介してそれを行うことができますが、端末エミュレーターはどうですか?

13
FrozenHeart

用語

あなたが欲しいものです。

たとえば、端末の背景を変更したいですか?

printf '\033}bp%s\000' \
  'http://hdwalldesktops.com/wp-content/uploads/2014/02/background-backgrounds-high-resolution-abstract-picture-background-wallpaper.jpg'

それは何をしますか?

わずかに拡張された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...

あなたはそれを上に見ますか?これは、をフレームバッファーで実行します。

6
mikeserv

多くの端末エミュレーターが Sixel Graphics をサポートしています PySixel github page から、リストは次のとおりです:

  • RLogin
  • タナシン
  • mlterm
  • XTerm
  • DECterm
  • カーミット
  • WRQリフレクション
  • ZSTEM

前述の PySixel を使用して画像を表示できます。これは、必要な変換を実行できるようです。別のオプションは、netpbmのツールを使用することです。 mltermでJPEG画像を変換して表示するために、以下を使用して良い結果が得られました。

jpegtopnm image.jpg | pnmquant 256 | ppmtosixel >/dev/tty

結果:

mlterm displaying Sixel picture

XTermはSixel画像を表示することもできますが、サポートは現在16色に制限されています(バグもある)。スクリプトが壊れているようですが、サンプル画像を含むアーカイブをダウンロードできます here 。 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)。結果は次のとおりです(1つ目はサンプルアーカイブの非常にクールなtron画像です)。

enter image description here

5
Graeme

私は最近、フレームバッファイメージビューアfbiを発見しました。

2
mightybs

はい、そうです。たとえば、Mplayerは、テキスト端末でのビデオの aalib (モノクロ)および libcaca (カラー)レンダリングの両方をサポートしています。これは正確には高解像度ではありませんが、サブ「ピクセル」レンダリングと時間ディザリングの両方で有効解像度を上げることで、通常、何が起こっているのかを知ることができます。

1
Mark

Unixの世界では、ターミナルエミュレータはシリアルターミナルをエミュレートします。ユーザーに表示されるデータストリームは、シリアルラインを介して一度に1つ送信されます。

モデム時間では、これは通常、1秒あたり約1000〜2000文字でしたが、エミュレートされたハードウェアのみが含まれる場合は、今日の方がはるかに高速になる可能性があります。その後、送信されたバイトを理解するのは端末次第でした。通常、これは文字の表示、カーソルの移動、および画面表示の操作用です。いくつかの端末はグラフィックモードに切り替えることができます-gnuplotはかなりサポートしています-しかし、帯域幅が非常に狭すぎて、ビデオに関して興味深いことを行うことができません。

それでも、エミュレートされたハードウェアを備えた現代のコンピューターでは、ターミナルエミュレーターはかなりの能力を発揮します。検索キーワード「ttyquake」で画像を検索してみてください。あなたがHDを切望するなら、あなたはおそらく失望するでしょう。

http://onyx.chattanoogastate.edu/~jack/matrix/insert.jpg

画像を表示するには、 fim に移動します

ビデオ再生オプションについては、 mplayer を使用します

編集:

むしろfim picture-tube を試してください。まだテストしていませんが

0
SHW