高速イメージビューア sxiv を使うことのメモ

シンプルで軽い sxiv : Simple X Image Viewer

画像ビューアは沢山あるけれど、CLI(TUI)中心の利用で素早く扱えるものがないかと探していたところ sxiv を知るに至った。

GitHub – muennich/sxiv: Simple X Image Viewer

C で書かれた軽量な画像ビューア。その名の意味するところは “Simple or Small or Suckless X Image Viewer” という。 feh や qiv よりさらにシンプルに、gtk に依存しないでタイル型ウィンドウマネージャなんかでうまく動くものを目指して作られた、とされる。

sxiv とは

sxiv をひとことで評するならば、シンプルだけれどやるべきことはうまくて素早い画像ビューア、ということだろう(ひとことじゃなかった)。

画像ファイルの拡大や回転、反転表示など、画像表示に関する基本的な機能は十分に備わっている。アニメGIFなどのマルチフレームにも対応していて、フレーム毎の表示とアニメーション再生が可能。

イメージ単体の表示に加えて、サムネールを並べて選択できるブラウザ機能(サムネールモード)もある。サムネール表示にはキャッシュを使うので再表示でもたつかない。

ステータスバーは他のコマンドとの連携で表示内容をカスタマイズ可能。シンプルゆえの連携のしやすさが功を奏している。

キーバインディングについてはコンパイル時に変更が可能だけれど、デフォルトのものは直感的で使いやすい vim ライクなものだ。

また、キーイベントハンドラを指定することができ、デフォルトでは Ctrl+x キーとのコンボでキーコマンドを追加できるようになる。

sxiv のインストール

Ubuntuや Arch Linux ではバイナリリポジトリにあるものをインストールできる。

## Ubuntu
sudo apt install sxiv
## ArchLinux
$ sudo pacman -S sxiv

ソースをとってきてコンパイルするという方法であれば、設定用ソースの一部を書き換えてキーバインドを変更することも可能となる。

sxivの起動

sxiv コマンドにファイル名を引数として与えてやる。例えば、

$ ls
hoge.jpg  hogefuga.jpg  hogehoge.jpg
$ sxiv *

とすると hoge.jpg が表示される。この状態が「イメージモード」。

n で次の hogefuga.jpg を表示。

<enter> でウインドウの中にサムネールが並ぶ「サムネールモード」に切り替わる。 j k h l でカーソルを移動して <enter> でその画像を表示(イメージモードに戻る)。

起動オプションを指定してみる。

端からサムネールモードで実行するには -t 、フルスクリーンは -f

$ sxiv -tf *

とすると最初からサムネールモードでフルスクリーン表示してくれる。

起動オプション群はコマンド連携するようなニーズに十分応えるものだろう。詳細は man page sxiv(1) を参照のこと。

sxiv の使い方

イメージモードの操作

  • イメージをめくる
    Pre キー操作 機能 他のキー
    <n> n 次の画像を表示する <space>
    <n> p 前の画像を表示する <backspace>
      g 最初のイメージへジャンプする  
    <n> G 最後のイメージ あるいは <n>番めのイメージへジャンプする  
    <n> [ 10個前の画像 / (<n>×10)個前の画像  
    <n> ] 10個先の画像 / (<n>×10)個前の画像  
    <n> s スライド表示開始/停止 (表示間隔を<n>で指定可能)  
      f フルスクリーン表示にする/しない  
      b ステータスバーを表示する/しない  
      D 画像を表示候補から削除  
      <enter> サムネールモードへ切り替える  
      q 終了する  

    なお、 Pre 欄に <n> とあるものは、コマンドの前に数字を入力することでステップ値を与えられるもの。例えば 3n と打てば3つ先の画像を表示し、 12G と打てば最初から12番目のイメージにジャンプする。

  • イメージのスクロール
    Pre キー操作 機能 他のキー
    <n> j 下へスクロール(画面の1/5ずつ) <down>
    <n> k <up>
    <n> h <left>
    <n> l <right>
      C-j 1画面分下へスクロール C-<down>
      C-k 1画面分上 C-<up>
      C-h 1画面分左 C-<left>
      C-l 1画面分右 C-<right>
      J 下端までスクロール  
      K 上端  
      H 左端  
      L 右端  
  • イメージのズームと回転
    Pre キー操作 機能
      + ズームイン
      - ズームアウト
    <n> = 100% あるいは <n>% の大きさにする
      w 100%もしくはウィンドウの大きさにあわせる
      W ウィンドウの大きさに合わせる
      e ウィンドウ幅にあわせる
      E ウィンドウ高にあわせる
      > イメージを時計回りに90度回転
      < イメージを反時計回りに90度回転
      ? イメージを180度回転
      イメージを左右反転
      _ イメージを上下反転
      r 画像をリロード (回転や反転をキャンセル)
  • イメージ表示の調整
    Pre キー操作 機能
    <n> } ガンマ補正値を増やす(明るくなる)
    <n> { ガンマ補正値を減らす(暗くなる)
      C-g ガンマ補正値を元に戻す
      a アンチエイリアス表示する/しない
  • マルチフレームイメージ(アニメGIFなど)の操作
    キー操作 機能
    C-n 表示イメージを次のフレームにする
    C-p 表示イメージを前のフレームにする
    C-<space> アニメーションを再生/停止
  • マーク
    Pre キー操作 機能
      m マークする/マークを解除する
      M マークを反転
      C-m マークを全て解除
    <n> N マークした画像へジャンプ(次)
    <n> P マークした画像へジャンプ(前)

サムネールモードの操作

  • サムネールモードの基本操作
    Pre キー操作 機能 他のキー
    <n> h カーソルを左へ <left>
    <n> j カーソルを下へ <down>
    <n> k カーソルを上へ <up>
    <n> l カーソルを右へ <right>
      + ズームイン  
      - ズームアウト  
      R サムネールをリロードする  
      f フルスクリーン表示にする/しない  
      b ステータスバーを表示する/しない  
      D 画像を表示候補から削除  
      <enter> イメージモードへ切り替える  
      q 終了する  

    ガンマ補正やアンチエイリアス、マークについてもイメージモードと同様のキーで操作できる。

  • サムネールファイル

    sxiv はサムネールを ~/.cache/sxiv の下に作成する。元画像がなくなったサムネールを削除するには以下のように -c オプションで sxiv を実行する。

    $ sxiv -c
    

    また、~/.cache/sxiv の下には元画像同様のディレクトリ構成が再現されており、空になったサブディレクトリを削除するには以下のコマンドを利用するといいと man page に記述がある。

    $ cd ~/.cache/sxiv
    $ find . -depth -type d -empty ! -name '.' -exec rmdir {} \;
    

sxiv に工夫を加える

ステータスバーの内容をカスタマイズ

ステータスバー(ウィンドウ下端)の左寄りにはファイル名が表示されているだけだけれど、この表示内容は ~/.config/sxiv/exec/image-info にスクリプトを書くことでカスタマイズが可能。

サンプルが /usr/share/sxiv/exec の下にあるので使ってみましょう。

Ubuntu で sxiv を apt インストールした場合は /usr/share/doc/sxiv/examples にあるよう。

$ mkdir -p ~/.config/sxiv/exec; cd $_
$ cp /usr/share/doc/sxiv/examples/image-info .
$ chmod +x ./image-info

これでステータスバーにファイルサイズ、画像サイズ、ファイル名が表示されるようになる。

※画像サイズの表示には ImageMagick が必要。

外部キーハンドラでキーコンボ追加

sxiv はキーイベントのハンドラを ~/.config/sxiv/exec/key-handler に置くことで、キーボードコマンドを定義できる。デフォルトでは C-x を押すことで呼び出される。つまり Emacs みたいに C-x をプレフィクスキーとするキーストロークをバインドできる。

キー操作 機能
C-x 次に打つキーを外部キーハンドラに送る

image-info と同様にサンプルがある。その機能は、「gimp で開く(要gimp)」、「ファイル名コピー(要xsel)」、「画像の回転(要ImageMagick)」、「メタデータ(IPTC)でタグ付け」などといったもので、結構便利だ。

$ mkdir -p ~/.config/sxiv/exec; cd $_
$ cp /usr/share/doc/sxiv/examples/key-handler .
$ chmod +x ./key-handler
スポンサードリンク