Use devhelp to refer to documents.

オフラインでこの手のリファレンス・マニュアル、特に gtk-doc を使って生成したものを参照したいのであれば、ウェブ・ブラウザよりもキーワード検索が高速な devhelp の方が便利でお薦め:
devhelp-20120825-01.png
devhelp では、これらの html 形式のドキュメントを「ブック」(book) と呼んでいるが、これは起動時に特定のディレクトリに格納されている *.devhelp とか *.devhelp2 というファイル (gzip 圧縮したものでも可能) を読み込んでブックの一覧を生成している。この一覧が、devhelp の左ペインにある「目次」に相当する。
ちなみに、この特定のディレクトリは、バージョン 3.4 のコードを調べてみると

$ cat -n devhelp-3.4.1/src/dh-book-manager.c
291  static void
292  book_manager_add_books_in_data_dir (DhBookManager *book_manager,
293                                      const gchar   *data_dir)
294  {
295          gchar *dir;
296
297          dir = g_build_filename (data_dir, "gtk-doc", "html", NULL);
298          book_manager_add_from_dir (book_manager, dir);
299          g_free (dir);
300
301          dir = g_build_filename (data_dir, "devhelp", "books", NULL);
302          book_manager_add_from_dir (book_manager, dir);
303          g_free (dir);
304  }
305
306  void
307  dh_book_manager_populate (DhBookManager *book_manager)
308  {
309          const gchar * const * system_dirs;
310
311          book_manager_add_books_in_data_dir (book_manager,
312                                              g_get_user_data_dir ());
313
314          system_dirs = g_get_system_data_dirs ();
315          while (*system_dirs) {
316                  book_manager_add_books_in_data_dir (book_manager,
317                                                      *system_dirs);
318                  system_dirs++;
319          }
320
321  #ifdef GDK_WINDOWING_QUARTZ
322          book_manager_add_from_xcode_docset (
323                  book_manager,
324                  "/Library/Developer/Shared/Documentation/DocSets");
325  #endif
326  }

のように、システム規模だと次のディレクトリ (${datadir} はビルド時に決まる) になり:

  • ${datadir}/gtk-doc/html
  • ${datadir}/devhelp/books

ユーザ規模だと次のディレクトリ (${HOME} は実行時に決まる) になる:

  • ${HOME}/.local/share/gtk-doc/html
  • ${HOME}/.local/share/devhelp/books

ということで、ユーザ規模のディレクトリにはこの手の翻訳ドキュメントを展開しておけばよい:

  • gtk-2.14.x-refs.tar.gz: GTK+ 2.14.7 版の API リファレンスのアーカイブ
$ mkdir -p ${HOME}/.local/share/gtk-doc/html/
$ tar xvfz gtk-2.14.x-refs.tar.gz -C ${HOME}/.local/share/gtk-doc/html/
$ ls ${HOME}/.local/share/gtk-doc/html/
gtk
$ ls ${HOME}/.local/share/gtk-doc/html/gtk/*/*.devhelp*
${HOME}/.local/share/gtk-doc/html/gtk/html/gtk.devhelp2
ディレクトリ名を変更する
$ mv ${HOME}/.local/share/gtk-doc/html/gtk/html ${HOME}/.local/share/gtk-doc/html/gtk-tmp
$ rm -rf ${HOME}/.local/share/gtk-doc/html/gtk
$ mv ${HOME}/.local/share/gtk-doc/html/gtk-tmp ${HOME}/.local/share/gtk-doc/html/gtk

注意する点として、同名の *.devhelp とか *.devhelp2 といった目次ファイルを持つディレクトリがシステム規模とユーザ規模にある場合はユーザ規模の方が優先されることと、basename(目次ファイル名) をディレクトリ名にする必要があるということ。

moserial.

vala で書かれた GTK+ 3 対応のシリアル端末。ログ記録やファイル転送などの機能あり。シリアルの設定もファイルに保存しておける。でも minicom の方がいいか。
moserial-3.0.7-bbxM-20120723.png
一応、vala も i18n 対応なので、だいぶ前に日本語メッセージを commit しておいたけど、vala と gettext の実装はまだまだような気がする。
こんな風なファイルを用意して configure スクリプトで回収したこれらの情報を config.h 経由で参照するとか:

$ cat Config.vapi
[CCode (cprefix="", lower_case_cprefix="", cheader_filename="config.h")]
namespace Config
{
public const string VERSION;
public const string MOSERIAL_GLADEDIR;
public const string GETTEXT_PACKAGE;
public const string PACKAGE_DATADIR;
public const string PACKAGE_LOCALEDIR;
public const string PACKAGE_NAME;
public const string PACKAGE_VERSION;
}

これを main メソッドの中で gettext に渡すみたいな:

class moserial.Main : GLib.Object
{
(...)
public static int main (string[] args) {
(...)
Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.PACKAGE_LOCALEDIR);
Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8");
Intl.textdomain(Config.GETTEXT_PACKAGE);
(...)
};
};

あとは Makefile.am でいろいろわたしてコンパイルする:

(...)
INCLUDES = -DMOSERIAL_GLADEDIR=\""$(gladedir)"\" \
-DPACKAGE_LOCALEDIR=\""$(datadir)/locale"\"
(...)
$(VALAC) -C -g --pkg Config --pkg dbus-glib-1 --pkg gee-1.0 --pkg gtk+-2.0 \
--vapidir $(top_srcdir)/src $^
(...)

むむ。

GIP-NG, a YA Internet Protocol Calculator.

なるアプリを書いてみた。
というか、正確にはもともと Gip という名前で、インターネット計算機とか IP アドレス計算機とか言われていたアプリを書き直しただけなんだけれど。このオリジナルの Gip は C++ 言語と gtkmm を使ったアプリで、かなり前 (2005年くらい) からリリースが止まっている。気になるほどではないバグが残っているだけで、特に不便はないのだけれど、C++ ではなく C言語の GObject を使ってクラスを実装し、ついでに GTK+ のツールキットをアップグレードしてみた。主な変更点は次のとおり:

  • ビルド環境を autotools にした
  • ツールキットを GTK+ バージョン3にアップグレードした
  • GtkBuilder クラスのユーザ・インタフェースにした
  • オリジナルにあったバグを修正した
  • GOject 化した
  • うちのサイトで公開した

ツールキットは違うけれど、ユーザ・インタフェースの構成はほぼ同じ (芸がなくて済みません;():
Gip (オリジナル)
gip-20120626.png
GIP-NG
gip-ng-20120711.png
オリジナルと変わらない操作性なので違和感はないとは思うけど、起動時にデスクトップの中央に配置されるようにした (ホントはウィンドウマネージャに委譲するのがスジだとは思うけど)。
ソース tarball をダウンロードするか、リポジトリをチェックアウトするかしてビルドできる。実際にインストールしなくてもその場で実行して試せるビルド・オプション (–enable-run-in-place) なんかを用意した。デバッグ文は環境変数 (export MKF_DEBUG=x) を指定すると表示されるようになっている。debian パッケージの debhelper 関連のファイルもあり:

$ tar xvfJ gip-ng-1.9.90.tar.xz
$ cd gip-ng-1.9.90
$ ./configure --enable-debug --enable-run-in-place
もしくは
$ git clone git://mikeforce.net/gip-ng
$ cd gip-ng
$ ./autogen.sh --enable-debug --enable-run-in-place
$ make
$ export MKF_DEBUG=x
$ ./src/gip-ng
# make install

オリジナルで実装されている機能は全て移植済み。あと、一応 Gip の開発者向けメーリングリストにも告知しておいた (が、もしかしたらメーリングリストも停止している!? :$)。
細かい話しだと、GtkTable を使っていたり、desktop ファイルが l10N 化されてないなどあるけど、こちらは別の機会に移植メモでもまとめる予定。
あと、ここで言うのも何だけど、各国語のメッセージ翻訳カタログの更新などは大歓迎 (And updating and new translations are always welcome.)。
あっ、そうそう GIP-NGGIP Next Generation の略です (こちらも芸がなくて済みません)。
See Also GIP-NG バージョン 1.9.90: 開発版のソース tarball (xz 圧縮)
See Also Git リポジトリ: 開発リポジトリ
See Also バグの報告はメールの他にこちらにて。

gnome-shell-extension-weather.

前のバージョンでリリースされていた拡張機能の一つで、今のバージョンでは別のメンテナにより GitHub で fork された、デスクトップから天気予報や現在の情報を確認できる gnome-shell-extension-weather:
gnome-shell-extension-weather-20120627.png
ja.po を commit してもらった。
このリリースでは設定用にダイアログが提供されている:
gnome-shell-extension-weather-dialog-20120627.png

GNOME 3.4 (TAKE 2).

前回の続き。
今使っている gnome-shell-3.4.1 のデスクトップ:
G32-Desktop-20120608.png
ちなみに解像度は 1920×1200 で画面比 16:10。背景はオーソドックスに gnome-backgrounds の中から選んだ Floorboards。アプリのランチャはずっと Docky。特に不満なし。拡張機能でメニュー・スタイルのランチャー (Applicationss Menu) も追加しているけど、Favorits なアプリはこの Docky から起動している。
今のフォントの設定はこんな感じ:
gtweak-fonts-20120608.png
基本的にドキュメントやメールの類は Serif (明朝体)、それ以外の UI やアプリは Sans-Serif (ゴシック体) にしている。特に理由はないけど商用フォントがメイン。
使っているテーマはこんな感じ:
gtweak-theme-20120608.png
GTK+ のウィジェットとウィンドウの装飾にはグレーを基本にしたテーマ。gnome-shell 用のテーマは外観がデフォルトの Adwaita に似ていて、そのままコンパクトにしたレイアウトになっている。意外と軽量:

このテーマを使った gtk3-widget-factory の出力はこんな感じ:
gtk3-widget-factory-20120608.png
ちなみにユーザ規模でテーマの変更は 3.4 のリリースの場合、拡張機能の User Themes をインストールした後に、専用のスキームもインストールしてコンパイルする必要有り:

$ cd $HOME/.local/share/gnome-shell/extensions/
$ cd ./user-theme@gnome-shell-extensions.gcampax.github.com/schemas/
$ ls
org.gnome.shell.extensions.user-theme.gschema.xml
$ sudo install -c -m644 \
./org.gnome.shell.extensions.user-theme.gschema.xml \
/usr/share/glib-2.0/schemas/
$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas

利用している拡張機能の一覧:
gtweak-extensions-20120608.png
その中からいくつかピックアップしてみると、まずアクティビティ・モードに組み込まれた拡張機能の一覧から ON/OFF を切り替えたり、アップデートの通知を確認できる (Extension List):
GnomeShell-ExtensionsList-20120608.png
電卓 (gcalctool) を呼び出して数値計算する (Advanced Calculator):
GnomeShell-AdvancedCalculator-20120608.png
他にも、3.4 になってしばらく更新されていなかったものの今回のリリース向けに最近公開された、右端にポインタを移動してホィールマウスを使ってワークスペースをきりかえる (Desktop Scroller (Original)) とか、アニメーションの速度を調整する (Impatience) には gnome-shell-extensions-pref というツールから:
GnomeShell-Impatience-20120608.png
あと、tracker を使ったデスクトップ検索もいい感じなんだけど、この検索ウィジェットに IME 経由で日本語入力するのがちょっと厄介。あとで調べてみる予定。
最後に、Nokia の携帯から google chat と Empathy とでビデオ・コール (音声もOK) をテストした例:
empathy-videocall-20120607.png
といった感じだけど、やっぱりビギナーにはいろいろ面倒だよな :|