w3mでmastodonが見れるようになった。が、実は画像が表示できない。仮想コンソールではw3mimgdisplayは動かないのだ。
simplehtmlclientはテキストブラウザ向けにはaltとか指定しているので、w3mでは画像はひとまずリンク付き文字列として表示される。いろいろ試行錯誤したのだが、どうやら外部ブラウザを呼び出すコマンドを実行すれば呼び出したプログラムが仮想コンソールで実行されるようだ。
というわけで、仮想コンソールで簡単にできる画像表示方法をググってみた。
参考になりそうなページが見つかった。ひとまず読んでみる。「エスケープシーケンス改良版」か「pxl」が行けそうだ。
まずは面倒そうだが動けばうれしいpxlから試してみる。なぜか試したい端末のはgolangが入ってみたのでgo getしてみた。
go get github.com/ichinaski/pxl
サクッと終わる。
さて、画像をどこからか取ってこないといけない。w3mでググるさんで検索してみるか。
画像をダウンロードするのはEsc+Iなのね。
「images」というファイル名でゲットできた。さてこれをpxlで呼び出してみる。
~/go/bin/pxl ~/images
なんとなーくそれらしい画像が表示できた。
というわけで、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をファイルとして認識してくれないようだ。
というわけで、次の方法を試す。「エスケープシーケンス改良版」を試す。
display image in Terminal · GitHub
さてと、試行錯誤。まずは「rmagick」を持ってこないといけないか。その前に「imagemagick」なのか。
sudo pacman -S imagemagick
gem install rmagick
さて、ローカルのファイルを表示してみる。
表示できるな。では外部ブラウザを「ruby ~/print_img.rb $W3M_CURRENT_IMG」にしてみて実行。なんか表示できているようだ。ただしすぐ復帰するから一時停止できないな。
「read str」を最後に入れればいいのか。「ruby ~/print_img.rb $W3M_CURRENT_IMG && read str && echo str」で試してみる。
デキター!。ひとまずの目的は達成した。