遅ればせながらリリースしておく。
RC1 版からの変更点は次のとおり:
- GConf による設定項目の保存と取得を有効にした
- nautilus-rename コマンドライン用の man ページ (英語) を追加した
- 同コマンドラインの i18n 問題を修正した
- 情報ダイアログの各種アドレス・リンク用のフック関数を追加した
- Nautilus のコンテキスト・メニューとして表示される項目を GNOME Human Interface Guideline の書式に合わせた
- メモリ・リークを修正した
- Nautilus から nautilus-rename コマンドラインを呼び出す時にデフォルトで –just-directory オプションを付けるようにした
- 同様にデフォルトで –use-gconf オプションを付けるようにした
基本的な機能は変更はなし。GUI の変更は他のメニュー項目とあわせたくらい。使い方は前のブログを参考のこと。
ところでフォルダの扱いだけれども、RC1 版では指定したフォルダの中身すべてが変更対象になっていたが、大量のファイルが存在した場合は処理が重くなったり、再帰リンクによりフォルダの走査が無限ループに入る可能性があったので、セキュリティの面も考慮して、正式版では無効にした (–just-directory を指定することで)。つまり、Nautilus からフォルダを指定した場合はフォルダの名前が変更の対象になるということ。
さて、Nautilus Extension の実装についてだけれども概論は翻訳したドキュメントを参照してもらうとして、ざっと類似したアプリを調べてみると、この手の拡張機能は
- 拡張機能のモジュールだけ提供する
- 拡張機能のモジュールの他にコマンドラインも提供する
というように2種類の実装スタイルに分けられる。通常は拡張モジュール (実体は共有オブジェクト) として提供し、Nautilus が起動すると自動的に所定のパスから load されて ready 状態になる。
今回の名前一括変更の拡張機能はコマンドラインからも使えた方が良いということで、後者のスタイルで開発することにした。
ちなみに、後者のスタイルで配布されているものは:
- nautilus-cd-burner (コマンドラインも同名)
- nautilus-sendto (コマンドラインも同名)
前者のスタイルの代表例としては:
- nautilus-image-converter
- nautilus-open-terminal
といった感じ。
実装の手順としては:
- コマンドラインの実装
- Nautilus 拡張機能のモジュールの実装
のようになる。まず最初に名前を一括変換するコマンドラインを実装し、それから Nautilus Extensions として公開されているインタフェースの一つを使ってコマンドラインを呼び出すモジュールを共有オブジェクトとして実装する。これを次のフォルダにインストールしておけば、自動的に Nautilus が有効にしてくれるというわけだ。
$ pkg-config --variable=extensiondir libnautilus-extension /usr/lib/nautilus/extensions-2.0
Nautilus 用語では後者のモジュールをプロバイダと呼ぶそうだ。
コマンドラインとモジュールの実装について詳細は次回にでも。
ひとまずリリース情報は次のとおり。
nautilus-renames-1.0.0.tar.bz2: Stable Release
nautilus-renames_1.0.0-mikeforce1_i386.deb: debian パッケージ (for Ubuntu 8.04.1)
開発ブランチ
$ tar xvf nautilus-renames-1.0.0.tar.bz2 $ cd nautilus-renames-1.0.0 $ ./configure --prefix=/usr --sysconfdir=/etc && make $ sudo make install または $ sudo dpkg -i nautilus-renames_1.0.0-mikeforce1_i386.deb あるいは $ svn co \ https://mikeforce.net/svn/MYPROJECTS/nautilus-renames/branches/NAUTILUS_RENAMES_1_0_0 \ nautilus-renames $ cd nautilus-renames/ $ ./autogen.sh --prefix=/usr --sysconfdir=/etc && make
なんか今朝きづいたのだけれど、既に KDE には似たプロジェクトが存在していた。Konqueror に統合されているなど機能も大分かぶっているな 。