Nautilus Renames Extension is released (TAKE2).

遅ればせながらリリースしておく。
RC1 版からの変更点は次のとおり:

  • GConf による設定項目の保存と取得を有効にした
  • nautilus-rename コマンドライン用の man ページ (英語) を追加した
  • 同コマンドラインの i18n 問題を修正した
  • 情報ダイアログの各種アドレス・リンク用のフック関数を追加した
  • Nautilus のコンテキスト・メニューとして表示される項目を GNOME Human Interface Guideline の書式に合わせた
  • メモリ・リークを修正した
  • Nautilus から nautilus-rename コマンドラインを呼び出す時にデフォルトで –just-directory オプションを付けるようにした
  • 同様にデフォルトで –use-gconf オプションを付けるようにした

基本的な機能は変更はなし。GUI の変更は他のメニュー項目とあわせたくらい。使い方は前のブログを参考のこと。
ところでフォルダの扱いだけれども、RC1 版では指定したフォルダの中身すべてが変更対象になっていたが、大量のファイルが存在した場合は処理が重くなったり、再帰リンクによりフォルダの走査が無限ループに入る可能性があったので、セキュリティの面も考慮して、正式版では無効にした (–just-directory を指定することで)。つまり、Nautilus からフォルダを指定した場合はフォルダの名前が変更の対象になるということ。
nautilus-renames-2008070701.png
さて、Nautilus Extension の実装についてだけれども概論は翻訳したドキュメントを参照してもらうとして、ざっと類似したアプリを調べてみると、この手の拡張機能は

  1. 拡張機能のモジュールだけ提供する
  2. 拡張機能のモジュールの他にコマンドラインも提供する

というように2種類の実装スタイルに分けられる。通常は拡張モジュール (実体は共有オブジェクト) として提供し、Nautilus が起動すると自動的に所定のパスから load されて ready 状態になる。
今回の名前一括変更の拡張機能はコマンドラインからも使えた方が良いということで、後者のスタイルで開発することにした。
ちなみに、後者のスタイルで配布されているものは:

  • nautilus-cd-burner (コマンドラインも同名)
  • nautilus-sendto (コマンドラインも同名)

前者のスタイルの代表例としては:

  • nautilus-image-converter
  • nautilus-open-terminal

といった感じ。
実装の手順としては:

  1. コマンドラインの実装
  2. Nautilus 拡張機能のモジュールの実装

のようになる。まず最初に名前を一括変換するコマンドラインを実装し、それから Nautilus Extensions として公開されているインタフェースの一つを使ってコマンドラインを呼び出すモジュールを共有オブジェクトとして実装する。これを次のフォルダにインストールしておけば、自動的に Nautilus が有効にしてくれるというわけだ。

$ pkg-config --variable=extensiondir libnautilus-extension
/usr/lib/nautilus/extensions-2.0

Nautilus 用語では後者のモジュールをプロバイダと呼ぶそうだ。
コマンドラインとモジュールの実装について詳細は次回にでも。
ひとまずリリース情報は次のとおり。
See Also nautilus-renames-1.0.0.tar.bz2: Stable Release
See Also nautilus-renames_1.0.0-mikeforce1_i386.deb: debian パッケージ (for Ubuntu 8.04.1)
See Also 開発ブランチ

$ 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 に統合されているなど機能も大分かぶっているな :o

G22.3 update done.

ja.po の更新も含め安定版 GNOME 2.22.3 のアップデート完了。glibgtk+gvfs などは結構な数のバグが修正されていた。珍しく重複して報告されていた日本語のバグは修正しておいたのだけれど、どうやら gnome-panel はリリースされる気配はないようだ。先月翻訳した日本語のユーザガイドを含んだ gnome-user-docs:(。夏休みと併せて GUADEC 2008 に参加している Hackers も多いからねぇ。
あと、GIMP日本語メッセージをまとめて更新してくれた方がいました。So Cool! 8)

HEAT.

といっても最近の気温ではなく、先々月 DVD の先行予約で手に入れた 1995 年公開の映画 HEAT のことなんだけれども。
本編が172分とは思えないストーリーの充実度。DVD の長丁場だから休み休み観れば良いかと軽い気持ちでいたのだけれど、一気に観ることができ、満足:)
こっちの時の Al Pacino よりも当然ながら格好いい。De Niro も若いねぇ:
heat-20080706.png
意外と豪華なキャスティングだし、Michael Mann の演出がシビレるのでお薦め。

Mikeforce.net was temporary unavailabled.

今日は朝の 9:20 以降ネットワーク障害のため不通でした。金曜日も何度か不通になっては復旧していたので室内モデムではなさそうだとは思っていたけれど、こう暑いとモデムやハブが逝ってしまいそうな不安もある。
どうやらマンション側の接続に問題があったということで修理をしてもらい、15:00 頃には復旧した。

Nautilus Renames Extension is released (RC1).

まだ RC 版だけど公開してみるMotivationこれで、さくさくっと作ってみようとしたら思わぬところでいろいろはまってしまった :$
GNOME の Nautilus ファイル・マネージャは標準でファイル名を変更する機能を提供しているのに、「Nautilus-Renames」なんて紛らわし名前を付けてしまったんだけど、実際に提供している機能は、どちらかというと複数のファイルやフォルダを指定して名前を一括編集するというもの。開発当初は名前なんかあまり意識していなかったのが災いしたか :P。この機能は、例えばカメラから取り込んだ大量のフォト・ファイルを順番に日付とか通番を付与したファイル名に一括変更することをイメージしている。
Nautilus はファイル単体やフォルダ単体の名前を変更することは可能だけど、なぜか複数選択した時はプロパティ・ダイアログからも変更できない。Nautilus が敬遠される原因って、こういう基本的なファイル操作さえユーザ・インタフェースからきっちり実現できていないところにあるよね :/
このプラグインは、Nautilus ファイル・マネージャに表示されたファイルやフォルダを複数個選択した後に、右クリックしてコンテキスト・メニューを開くと「ファイル名の一括編集」という項目を表示する (ちなみにファイル単体を選択した場合は表示されない):
nautilus-renames-2008062801.png
このメニュー項目をクリックすると「Nautilus 拡張 – 名前の変更」というダイアログが表示される:
nautilus-renames-2008062802.png
ダイアログの一番上にある設定項目「テンプレート(T)」が一括付与する際のファイル名を表す。ここでは次の記号を使って任意の情報をファイル名の中に引用できるようになっている:

$ nautilus-renames --legend
凡例 - テンプレートで利用可能な特殊文字の一覧
#  (通番)
%f (元のファイル名)
%e (元の拡張子)
%d (元の最終変更年月日)
%s (元のファイル・サイズ)
%n (元の通番)

#」という記号は通番の数値一桁に相当し、次の設定項目の「開始(A)」で指定した数値から順に通番を振るようになっている。
その次の「並び替え(S)」と「逆順に並べる(V)」は通番を付与する際の並びを変更するもので、並び替えには名前順 (Basename順)、パス名順 (ディレクトリ名順)、サイズ順、最終修正日時順という種類、そしてそれぞれ昇順/降順の二つの順番を指定できる。
大/小文字(E)」はファイル名を全て大文字にしたり小文字に変換するかを指定する。「元のファイルを残しておく(M)」は、複製を作成してからファイル名を変更する。
テンプレートやオプションを変更する度に「新しい名前のプレビュー(P)」が更新される仕組みになっている。テンプレートが決定したら「変更する(R)」ボタンをクリックする。変更処理が無事完了したらダイアログが消えて、Nautilus ファイル・ブラウザの表示が更新されるはず:
nautilus-renames-2008062804.png
ということで、提供している機能をまとめると:

  • コマンドライン呼び出しと Nautilus 拡張呼び出しの2種類の使い方が可能である
  • フォルダを指定した場合はフォルダの中身が変更対象になる (フォルダ自身を変更対象にする場合は、コマンドライン・オプションで –just-directory オプションを指定する)
  • GConf 経由でオプションの保存が可能である (コマンドライン・オプションで –use-gconf を指定した場合のみ)
  • テンプレートは特別な記号を使って自由にカスタマイズが可能である
  • ファイル名の変更の他に、複製も可能である
  • ファイルの属性毎に並び替えたり、昇順/降順の並び替えたりして通番を付与できる
  • 変更前と後のファイル名を目で確認できる
  • UTF-8 エンコーディングのファイル名をサポートしている
  • 日本語メッセージカタログ付き

nautilus-renames-2008062803.png
但し、この RC 版では、GConf 対応の実装はしているもののなんか上手く動いていないようなので無効にしてある (もう少し .schemas ファイルを見直す必要あり)。
このファイル名変更ダイアログはどこかで見たことがあるかもしれないが、実のところ gThumb の実装を一部流用している。流用した部分と Nautilus 拡張の実装方法、その他プログラムの詳細については 1.0 リリースの時にでも。
See Also nautilus-renames-0.9.90.tar.bz2: Release Candidate1
See Also 開発リポジトリ

$ tar xvf nautilus-renames-0.9.90.tar.bz2
$ cd nautilus-renames-0.9.90
$ ./configure --prefix=/usr --sysconfdir=/etc && make
$ sudo make install