1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsのターミナルエミュレータでwebp画像を表示したい話

Last updated at Posted at 2024-09-29

はじめに

CLIファイルマネージャーというものに先日出会い導入してみたが、Windows上で拡張子がwebpの画像を表示することができずにいる。しかし、何を試したか把握する為にここに備忘録として残しておく。

実行環境

・OS: Windows11 23H2
・ターミナルエミュレータ: Wezterm (20240203-110809-5046fc22)
・ファイルマネージャ: lf (r32)

Wezterm

概要

・Rustで書かれた、クロスプラットフォームで新しいターミナルエミュレータ
・高いカスタマイズ性(と聞いている)

導入方法

  1. Weztermの公式ページのdl欄からWindowsを選択
  2. setup.exeをdl&実行するか、zipをdl&zipファイル解凍してそのexeを実行で起動、あるいはwingetがあるなら
    winget install wez.wezterm
    
    でインストール

lf

概要

・クロスプラットフォームで使える(Linux, macOS, Windows, BSDs)
・Vimと類似したキーバインド
・高いカスタマイズ性
・何も設定しなくてもファイルの欄から拡張子に対応したソフトで開けられる?

等あるが、公式サイトを見て実際に触った方が早いと考える。

コマンド・キーバインド・設定ファイルのOSごとの位置等は以下参照

導入方法

インストール方法も書かれてあるが、念の為

  1. Goの公式サイトのdlページよりMicrosoft Windowsの欄にある".msi"で終わるファイルをdl&実行(自分はこの方法でやったか忘れた)
  2. 以下のどちらかを実行
  3. cmd
    set CGO_ENABLED=0
    go install -ldflags="-s -w" github.com/gokcehan/lf@latest
    
    Powershell
    $env:CGO_ENABLED = '0'
    go install -ldflags="-s -w" github.com/gokcehan/lf@latest
    

実際にやった流れ

ここまでツールの導入だったが、ここからは自分自身の足跡となる。

lfの画像表示

lfで画像ファイルにフォーカス(?)した状態でlキーを押下すると、このように画像を表示できた。
lfから画像を開く
しかし、画像ファイルの様なバイナリーファイルはデフォルトのプレビュー機能ではこのように表示してくれない。
lfのプレビュー機能(デフォルト)

ueberzug

どうにか表示させられないか探してみると、この動画を発見するに至ったが、紹介されているアドオンを見てみると、zshを実行できる環境(書く前はGit bashでは無理だと思っていたが、MSYS2のzshがあれば可能らしい)及びueberzugが必要と書かれていた。

そして、公式ページには2年前にサポートを終了した旨が書かれたREADME.mdのみがあるだけだ。

たとえ入手できたとしても、セキュリティ的にいかがなものかと考え、これは断念。

Imgcat

実は、これは2つ目に検討したものである。
Weztermも、このサイトを参考にして画像を表示できるとのことで導入した。imgcatは、iTerm2内にあるimgcatのファイルをdlし、cygwinのbashを使い

 bash imgcat.bash (画像ファイルのパス)

で行ってみた。
Wezterm上でjpg表示
このように、Wezterm上で表示はできたので、あとはlf上でも実行されるように設定するだけのはずだったが…
Wezterm上でimgcatを使ってwebpが表示できない
と、見事に表示されない。画像が破損しているわけではない。

imgcat.bashの中身を確認してみたが、画像をbase64という文字列の形式にしたうえで特定のエスケープシーケンス(ESC ]1337 ;)の後にその文字列が画像に変換され直す形で表示されるようである。

base64でその画像をエンコード&デコードしても表示されたので、もしかしたらiTerm Image Protocolの変換&表示の機能にwebpは対応されていないか、Weztermが対応していない可能性を考えた。(なお、Linux上ではあるがWeztermで動画形式のwebpの一つだけが表示できないという報告はあったが、動画が一部できるなら画像もいけるはずである。しかし、Windows上というところが違うのでWeztermかプロトコルが原因にあるかもしれない)

(2024/10/21追記)

Linux上でimgcatを試してみたが、同様にwebpは表示できなかった。
また、動くwebpをimgcatでWindows上で表示させようとしたら表示できた。(仕組みが理解できない)

Kitty Graphics Protocol

現在最後に検討したもの。Linux上かmacOSか、BSDsでしか動かないようだが、ソースコードからなんとか組めないか試した。

導入

Powershell
  git clone https://github.com/kovidgoyal/kitty.git
  cd kitty
  bash
bash(cygwin)
   bash dev.sh build

ここまで行うと、Windows上では

 dev.sh: line 8: $'\r': command not found

と表示される(Goのインストールが済んでいれば)。したがって、VSCodeなりで改行コードをCRLFになっているのをLFにするか、コメントアウトの行とコード欄の空白を消して再実行する。

すると、

 Error: Prebuilt dependencies are only available for Linux and macOS
 exit status 1

そう、やはりLinuxかmacOS上でしかビルドできないようなのである。
よってこれも除外。

まとめ

Windowsで、Wezterm上で画像を表示できないか試してみたがueberzugはそもそもサポート終了、Kitty GraphicsはWindowsで走らず、Imgcatはjpg, pngは表示するがwebpは実行できない、といった結果となった。

実は最初に検討したlibsixel内のimg2sixelはビルドが難しい、あるいは途中で阻まれる結果となったがnodeから可能かもしれないのでやり直してみてもいいかもしれない。

あるいは、iTerm Image Protocolをサポートしている他のターミナルエミュレータを試すという手もある。

表示画像引用元

https://commons.wikimedia.org/wiki/File:Contact_Lens_Ayala.jpg by Etan J. Tal(ライセンス: CC BY)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?