プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

仮想コンソールで画像を表示してみた

w3mmastodonが見れるようになった。が、実は画像が表示できない。仮想コンソールではw3mimgdisplayは動かないのだ。
simplehtmlclientはテキストブラウザ向けにはaltとか指定しているので、w3mでは画像はひとまずリンク付き文字列として表示される。いろいろ試行錯誤したのだが、どうやら外部ブラウザを呼び出すコマンドを実行すれば呼び出したプログラムが仮想コンソールで実行されるようだ。
というわけで、仮想コンソールで簡単にできる画像表示方法をググってみた。

u10e10.hatenablog.com

参考になりそうなページが見つかった。ひとまず読んでみる。「エスケープシーケンス改良版」か「pxl」が行けそうだ。
まずは面倒そうだが動けばうれしいpxlから試してみる。なぜか試したい端末のはgolangが入ってみたのでgo getしてみた。

go get github.com/ichinaski/pxl

github.com

サクッと終わる。
さて、画像をどこからか取ってこないといけない。w3mググるさんで検索してみるか。
画像をダウンロードするのはEsc+Iなのね。

w3m.sourceforge.net

「images」というファイル名でゲットできた。さてこれをpxlで呼び出してみる。

~/go/bin/pxl ~/images

f:id:kaias1jp:20210111221536j:plain

なんとなーくそれらしい画像が表示できた。
というわけで、pxlが動くことは確認できた。さあ、pxlに画像のURLをどう渡すかだ。

qh73xebitbucketorg.readthedocs.io

このページを見ると環境変数で何かを渡しているようだ。とりあえず、printenvの出力をviで見てみる。「o」キーで設定画面を開いて「外部ブラウザ」に「printenv >> temp.txt && vi temp.txt」を指定してみる。
外部ブラウザを呼び出すのは「M」キーのようだ。さて実行。
なるほど、「W3M_」で始まる環境変数を定義しているのだな。スクロールすると、あった、「W3M_CURRENT_IMG」に画像のURLが入っているようだ。
もう一度設定画面を開いて外部ブラウザに今度は「~/go/bin/pxl $W3M_CURRENT_IMG」を指定。何度か「M」キーを押してみるが表示されない。一度w3mを終了してみるとエラーが。pxlがpanicメッセージを出していた。どうやらURLをファイルとして認識してくれないようだ。

というわけで、次の方法を試す。「エスケープシーケンス改良版」を試す。

qiita.com

display image in Terminal · GitHub

さてと、試行錯誤。まずは「rmagick」を持ってこないといけないか。その前に「imagemagick」なのか。

techacademy.jp

sudo pacman -S imagemagick
gem install rmagick

さて、ローカルのファイルを表示してみる。

f:id:kaias1jp:20210111230120j:plain

表示できるな。では外部ブラウザを「ruby ~/print_img.rb $W3M_CURRENT_IMG」にしてみて実行。なんか表示できているようだ。ただしすぐ復帰するから一時停止できないな。

eng-entrance.com

「read str」を最後に入れればいいのか。「ruby ~/print_img.rb $W3M_CURRENT_IMG && read str && echo str」で試してみる。

f:id:kaias1jp:20210111231217j:plain

デキター!。ひとまずの目的は達成した。