#はじめに
Vim ライクなキーバインドで操作可能なコンソール用ファイルマネージャー、Ranger は高速なライブプレビューを備えており、テキストの内容はもちろん、画像や、設定により PDF の文書や動画のサムネイルもサクサク端末上で確認できます。
ビューアで画像表示を実現するためには w3m の w3mimgdisplay や Mac の iTerm2 が備える画像表示の仕組みが利用できますが、最近 Überzug
というツールにも対応した事を知ったので、このツール自体と Ranger との組み合わせ方法を紹介してみたいと思います。
#Überzug について
Überzug は子ウィンドウを使って端末上に画像を描くことができるコマンドラインユーティリティで、readme によると以下の様な特徴があるそうです。
- 画像を表示するために新しいウィンドウが作成されるため、競合条件がない。
- Expose イベントが処理される為、ワークスペースを切り替えると画像が再描画される。
- tmux 上での使用がサポートされている。
等々。早速使って見ましょう。
インストール
Python 製のツールで pip でインストールしますが、 X11 と Xext に依存するため X Window System 上で動作する OS でしか使用出来ないと思われます。
私は Ubuntu 20.04 LTS
で試しました。 WSL2 & x410(WSL 用の Xサーバ)ではインストールは出来ますがエラーで正常動作しませんでした。
下記の手順で必要なライブラリと Überzug を導入します。
~% sudo apt-get install python3 python3-dev libx11-dev libxext-dev python3-distutil
~% curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
~% sudo python3 get-pip.py
~% sudo pip3 install ueberzug
使用方法
無事にインストール出来たら、試しに下記のスクリプトを準備してシェルから使ってみます。
X
の機能を使ってレンダリングするので、ターミナルエミュレータの種類は恐らく問わないと思います。
#!/bin/bash
[ -z "$5" ] && echo "Usage: $0 <image> <x> <y> <max height> <max width>" && exit
source "`ueberzug library`"
ImageLayer 0< <(
ImageLayer::add [identifier]="example0" [x]="$2" [y]="$3" [max_width]="$5" [max_height]="$4" [path]="$1"
read
)
chmod +x show.sh
して、例えば ./show.sh images/AX141105107519_TP_V4.jpg 50 10 20 20
みたいに叩くと、
こんな感じに端末上の任意の場所に任意の大きさで画像が表示できます。もう一度 [Enter] を叩くと終了します。
その他にも色々オプションがあるようなので、詳細は Github を参照して頂ければと思います。
#Ranger から使ってみる
Ranger 1.9.3
で ranger --copy-config=all
した後の $HOME/.config/ranger/rc.conf
の雛形を確認してみます。
# * ueberzug:
# Preview images in full color with the external command "ueberzug".
# Images are shown by using a child window.
# Only for users who run X11 in GNU/Linux.
とのコメントがあるので、 set preview_images_method
の設定を下記の様に行います。
set preview_images_method ueberzug
これでOKです。
こんな感じで「画像/PDF/動画のサムネイル」が爆速でプレビュー出来ます。
tmux で 分割したそれぞれのペインでの表示や、ウィンドウを切り替えた場合でも問題なさそうです。画像が消えたり残ったりする事がありません。
Vim のターミナルモードで立ち上げた Ranger でも同様に画像表示できたので、多分 Ranger と連携するプラグインでも、試してはいませんが使えるんじゃないかな、と思います。
#おわりに
現状使用出来る OS が限られますが、 Linux Desktop を普段使いされてる様な方ならとても便利に使えるんじゃないでしょうか。
個人的には Windows10(WSL2) と Xサーバの組み合わせでも使える様に出来たらいいなーと考えています。
ではでは、是非試してみてください!