ターミナル上で画像を表示するlibsixelを試してみた

スポンサード リンク

ssh接続先で数値計算結果を確認するため,matplotlibでグラフ画像を生成することはよくある。今までは画像ファイルをscpでローカルに転送し,表示していたがいちいちコピーするのは面倒だ。ssh先のcatコマンドで画像も表示できたらいいのになーとはよく思っていた。

ところでw3mやemacsでは,ターミナルに画像を表示する機能があったはず。 ということで調べてみると,どうやらsixelという規格を使えばターミナルに画像を表示できるようだ。

libsixel はsixelとして表示するためのプログラム。 libsixelと sixelに対応したターミナル を組み合わせれば,画像を表示できるはずだ。

libsixelのインストール

Ubuntuなら下記コマンドでlibsixelをインストールできる。

sudo apt install libsixel1

Cygwinならソースコードからコンパイルする。

git clone https://github.com/saitoha/libsixel.git
cd libsixel
./configure
make
make install

libsixelを使ってみる

今回はWindowsのCygwinでminttyにsixelを表示してみた。 img2sixel コマンドを使えば,ssh接続先でも特に問題なくターミナルに画像を表示できた。

sixelで夕焼けの写真を表示してみた例

minttyでsixelを使って夕焼けの写真(jpeg)を表示してみた例。 sixelでは256色?に劣化するそうだが,違和感なく綺麗に写真が表示できている

sixelで夕焼けの写真を表示してみた例

ssh先でsixelを使ってmatplotlibのグラフ(png)を表示してみた例

libsixelとscreen

libsixelのimg2sixelでは, screenで画像表示するための --penetrate オプションがある。 私の環境では,statuslineの設定のせいか一瞬だけ画像が表示された後に消えてしまった。

また,screenを二重に起動する環境では画像が表示されず,エスケープシーケンスの 文字列が延々と表示されるだけになる。ということで,screenとsixelの併用は要注意なようだ。

Comments !

social