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でスライドショー