10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CLI 画像ビューアの Überzug と Ranger の組み合わせがとっても便利

Last updated at Posted at 2020-07-16

#はじめに

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 の機能を使ってレンダリングするので、ターミナルエミュレータの種類は恐らく問わないと思います。

show.sh
#!/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 みたいに叩くと、
img.png
こんな感じに端末上の任意の場所に任意の大きさで画像が表示できます。もう一度 [Enter] を叩くと終了します。

その他にも色々オプションがあるようなので、詳細は Github を参照して頂ければと思います。

#Ranger から使ってみる

Ranger 1.9.3 で ranger --copy-config=all した後の $HOME/.config/ranger/rc.conf の雛形を確認してみます。

$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/動画のサムネイル」が爆速でプレビュー出来ます。
Peek 2020-07-16 10-18.gif

tmux で 分割したそれぞれのペインでの表示や、ウィンドウを切り替えた場合でも問題なさそうです。画像が消えたり残ったりする事がありません。
Peek 2020-07-16 10-28.gif

Vim のターミナルモードで立ち上げた Ranger でも同様に画像表示できたので、多分 Ranger と連携するプラグインでも、試してはいませんが使えるんじゃないかな、と思います。

#おわりに

現状使用出来る OS が限られますが、 Linux Desktop を普段使いされてる様な方ならとても便利に使えるんじゃないでしょうか。
個人的には Windows10(WSL2) と Xサーバの組み合わせでも使える様に出来たらいいなーと考えています。

ではでは、是非試してみてください!

10
5
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
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?