はじめに
CLIファイルマネージャーというものに先日出会い導入してみたが、Windows上で拡張子がwebpの画像を表示することができずにいる。しかし、何を試したか把握する為にここに備忘録として残しておく。
実行環境
・OS: Windows11 23H2
・ターミナルエミュレータ: Wezterm (20240203-110809-5046fc22)
・ファイルマネージャ: lf (r32)
Wezterm
概要
・Rustで書かれた、クロスプラットフォームで新しいターミナルエミュレータ
・高いカスタマイズ性(と聞いている)
導入方法
- Weztermの公式ページのdl欄からWindowsを選択
- setup.exeをdl&実行するか、zipをdl&zipファイル解凍してそのexeを実行で起動、あるいはwingetがあるなら
でインストール
winget install wez.wezterm
lf
概要
・クロスプラットフォームで使える(Linux, macOS, Windows, BSDs)
・Vimと類似したキーバインド
・高いカスタマイズ性
・何も設定しなくてもファイルの欄から拡張子に対応したソフトで開けられる?
等あるが、公式サイトを見て実際に触った方が早いと考える。
コマンド・キーバインド・設定ファイルのOSごとの位置等は以下参照
導入方法
インストール方法も書かれてあるが、念の為
- Goの公式サイトのdlページよりMicrosoft Windowsの欄にある".msi"で終わるファイルをdl&実行(自分はこの方法でやったか忘れた)
- 以下のどちらかを実行
-
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キーを押下すると、このように画像を表示できた。
しかし、画像ファイルの様なバイナリーファイルはデフォルトのプレビュー機能ではこのように表示してくれない。
ueberzug
どうにか表示させられないか探してみると、この動画を発見するに至ったが、紹介されているアドオンを見てみると、zshを実行できる環境(書く前はGit bashでは無理だと思っていたが、MSYS2のzshがあれば可能らしい)及びueberzugが必要と書かれていた。
そして、公式ページには2年前にサポートを終了した旨が書かれたREADME.mdのみがあるだけだ。
たとえ入手できたとしても、セキュリティ的にいかがなものかと考え、これは断念。
Imgcat
実は、これは2つ目に検討したものである。
Weztermも、このサイトを参考にして画像を表示できるとのことで導入した。imgcatは、iTerm2内にあるimgcatのファイルをdlし、cygwinのbashを使い
bash imgcat.bash (画像ファイルのパス)
で行ってみた。
このように、Wezterm上で表示はできたので、あとはlf上でも実行されるように設定するだけのはずだったが…
と、見事に表示されない。画像が破損しているわけではない。
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でしか動かないようだが、ソースコードからなんとか組めないか試した。
導入
git clone https://github.com/kovidgoyal/kitty.git
cd kitty
bash
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)