uzullaがブログ

uzullaがブログです。

iTerm2の2.9以降でインライン画像表示できるようになってた

タイトルの通り、最近のiTerm2では、シェルでインライン画像表示できるようになってた

詳しくはこちら

iterm2.com

どういうこと?

以下の画像のようなことができる(上のURLからサポートスクリプトをおとして入れる必要がある)

http://pyazo.hachiojipm.org/image/vuRYUSAnc51aYHZa145585859430592.png

どうなってんの?

エスケープシーケンス的なものを駆使して、すこしのパラメタと、base64エンコードされたボディのデータを受け付けた時にiTerm2がよしなにしている。

みんな大好きアニメーションGifもサポートだ

gyazo.com

使い方は?

Images - Documentation - iTerm2 - macOS Terminal Replacement

からサポートスクリプトをDLして、+xして使う。(ただし、一部環境については後述)

使い道は?

手元で画像がみれてもあまりうれしくないだろうが、sshでログインしてるサーバーの画像をシュッと表示できるのは便利ではないだろうか(どうだ?)

たとえば、当方では雑にサーバー内にしかけたmrtgの画像をhttpd経由でなく、scpもせず、すぐに見れるので良い…気がする。

むつかしい点

watch imgcat *_graph.jpg

とかできればよかったけど、watchとかlessとかはエスケープシーケンスがアレでアレなのでダメだった。ちょっと工夫が必要。

あと、ファイルDLもできる。

指定したファイルを~/Downloadsにダウンロードできる。これもscpで十分でh(以下略)便利。

XMODEMと言う単語をおもいだしますね。

一部Linuxの問題

imgcatをしても、画像がでてこないで0KbyteのファイルをDownloadした状態となることがある。*1

内部でコールしているbase64のオプションが微妙なので

    echo -n "$3" | base64 $BASE64ARG | wc -c | awk '{printf "size=%d",$1}'

    echo -n "$3" | base64 | wc -c | awk '{printf "size=%d",$1}'

とかしたら表示できた。

まとめ

http://pyazo.hachiojipm.org/image/XkrBoIUDqajuM24T145585926817856.png

*1:imgcat img.jpg > /dev/null とかすると、エラーがでてるのに気付く