やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

rifle 起動オプション(1.9.2)

 rifleはrangerのアプリランチャー。

ヘルプ

$ rifle --help
Usage: rifle [-fhlpw] [files]

Options:
  --version       show program's version number and exit
  -h, --help      show this help message and exit
  -f FLAGS        use additional flags: f=fork, r=root, t=terminal. Uppercase
                  flag negates respective lowercase flags.
  -l              list possible ways to open the files
                  (id:label:flags:command)
  -p KEYWORD      pick a method to open the files.  KEYWORD is either the
                  number listed by 'rifle -l' or a string that matches a label
                  in the configuration file
  -w PROGRAM      open the files with PROGRAM
  -c CONFIG_FILE  read config from specified file instead of default

-l

$ rifle -l 任意ファイル
そのファイルで起動できるアプリリスト
...

 アプリリストは以下のような内容。

番号:ラベル:フラグ:実行コマンド

 テキストファイル。

$ rifle -l ~/.config/ranger/rifle.conf
0:editor::bash -c "xdotool key ctrl+shift+t && xdotool sleep 1 && xdotool key ctrl+shift+i && xdotool sleep 1 && xdotool type $@ && xdotool sleep 1 && xdotool key Return && xdotool sleep 1 && xdotool type ${VISUAL:-${EDITOR:-sensible-editor}}' '$@ && xdotool sleep 1 && xdotool key Return"
1:pager::"$PAGER" -- "$@"

 画像ファイル。

$ rifle -l /usr/share/rpd-wallpaper/cliff.jpg
0::f:sxiv -- "$@"
1::f:gimp -- "$@"
2:editor:f:gimp -- "$@"
3:::ask
4:editor::${VISUAL:-${EDITOR:-sensible-editor}} -- "$@"
5:pager::"$PAGER" -- "$@"

-p

 指定したファイルに適したアプリで実行する。

rifle -p 0 ~/.config/ranger/rifle.conf
rifle -p editor ~/.config/ranger/rifle.conf
rifle -p pager ~/.config/ranger/rifle.conf
rifle -p wallpaper /usr/share/rpd-wallpaper/cliff.jpg
rifle -p viewer /usr/share/rpd-wallpaper/cliff.jpg
rifle -p viewer /usr/share/raspberrypi-artwork/raspberry-pi-logo.svg

 rifle -pの引数値である<label>には/usr/bin/配下にある実行ファイル名が入るのか?

$ rifle -p viewer /usr/share/rpd-wallpaper/cliff.jpg
Traceback (most recent call last):
  File "/usr/bin/viewer", line 14, in <module>
    from PIL import Image, ImageTk
ImportError: cannot import name 'ImageTk'

 viwerという名前の実行ファイルがあった。これはpythonソースコードだった。たしかPILは画像処理のパッケージだったはず。新しいのはPillowという名前になったはず。

pip3 install Pillow

 以下で実行すると画像が表示された。

rifle -p viewer /usr/share/rpd-wallpaper/cliff.jpg

 だがベクタ画像(SVG)は非対応らしい……。

$ rifle -p viewer /usr/share/raspberrypi-artwork/raspberry-pi-logo.svg
Traceback (most recent call last):
  File "/usr/bin/viewer", line 50, in <module>
    im = Image.open(filename)
  File "/home/pi/.local/lib/python3.5/site-packages/PIL/Image.py", line 2687, in open
    % (filename if filename else fp))
OSError: cannot identify image file '/usr/share/raspberrypi-artwork/raspberry-pi-logo.svg'

 wallpaperはおそらく壁紙を変更するコマンド。fehがないと動かないと思われる。

sudo apt install -y feh

 ただ、Raspbianならpcmanfmのコマンド引数で壁紙を変更できる。

$ pcmanfm --help
...
  -w, --set-wallpaper=FILE          画像ファイルをデスクトップの壁紙に設定する
  --wallpaper-mode=MODE             デスクトップ壁紙のモード設定。 MODE=(color|stretch|fit|crop|center|tile|screen)
...
pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/cliff.jpg

 以下の実行コマンド部分を変更すればできるはず。

label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"

 でも画像ファイル選択をどうやるか。ビューアで表示させたいが面倒。なので省略。

 これまで判明したlabelは以下。

  • label
    • editor
    • pager
    • viewer
    • wallpaper

-w

$ rifle -w leafpad ~/.config/ranger/rifle.conf

 え、意味あるの? 以下のように普通に呼び出したほうが早いと思う。

leafpad rifle -w leafpad ~/.config/ranger/rifle.conf
pluma ~/.config/ranger/rifle.conf
vim rifle -w leafpad ~/.config/ranger/rifle.conf

-c

$ rifle -c /tmp/my-rifle.conf

 デフォルトでなく指定ファイルから読む。

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 9.0 2018-11-13
  • bash 4.4.12
  • python 2.7.13, pip 9.0.1
  • python3 3.5.3, pip3 9.0.1
  • ranger 1.9.2
$ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux