Unixでスライドショー: Emacs編
画像と次々と見せるスライドショーツールは各OSにつきものだが、天狗はUnixのそこら辺にころがっているツールでやる。
Emacsは最近(23からか)画像が見れるようになった! そこで、Emacsによるスライドショー
find ~/Desktop/ -type f -name '*.jpg' \
| grep -v ' ' \
| xargs -I % \
emacsclient -e '(progn (find-file "%") (sleep-for 3))'
findで画像らしきファイルを見付けてxargsでemacsclientを回す。emacsclientってのは今走っているEmacsをサーバとみなしてリクエストを送るコマンド。(エディタがサーバだぜ。流石Emacs!) -e で指定したLispを実行してくれる。crontabなど外部エディタを使うコマンドにおいて、viの代りとしてよく使うものだ。elispの表現ではファイルを開けて3秒寝る。grepはスペースの入ったファイル名をさけるため。
でもこれだと、バッファが開きっぱなしになって、沢山みているとメモリがなくなっちゃう。そこで、見終わったバッファは閉じたいんだが、lispでうまくいかない。面倒なんでシェルのレベルで対処する。
そこでこのようなお助けシェルスクリプトを用意して
#!/bin/sh
emacsclient -n $1
sleep 3
emacsclient -n -e "(kill-buffer \"`basename $1`\")"
上のようにファイルストリームをパイプする。
find ~/Desktop/ -type f -name '*.jpg' \
| grep -v ' ' \
| xargs -I % ./slideshow.sh %
Emacsがあればなんでもできる!っということで、簡易スライドショーでした。
次回: Perlでスライドショー