Building GNOME 3.14 release (TAKE 3).

ひとまず gnome-shell 関連はおいておいて、アプリ単体のビルドを継続中。
まずは Web こと epiphany ウェブブラウザ。WebKitGTK+ をレンダリング・エンジンとして持ち、GNOME デスクトップ向けに GTK+ ツールキットのバージョン3の UI を持つタブ対応ブラウザ。このバージョンでは、Google Chrome 同様にタブ毎にスレッド (プロセス) を割り当てることができるようになった。あとは表示しているウェブ・ページのソースをデフォルトのエディタで開くことができるようになった:

internet-web-browser.png epiphany-3.14.png

次は Glade ことユーザ・インタフェース・ビルダ。GTK+ バージョン2向けのビルダが Glade-3 と呼ばれ、こちらは GTK+ バージョン3系の UI を設計できる。このバージョンでは、なんとアンケート機能が追加された。同時にユーザ登録する際にメーリングリストの購読も選択できる。一応、個人情報の扱いには注意をはらっている模様。

glade.png glade-3.14-01.png

Glade には設計した UI をモックアップとして表示する機能が追加されているけど、さらに機能が追加されてスクリーンショットも撮れるようになっていた:

$ glade-previewer --help
用法:
glade-previewer [オプション...] - Glade UI 定義をプレビューする
ヘルプのオプション: -h, --help ヘルプのオプションを表示する --help-all ヘルプのオプションを全て表示する --help-gtk GTK+ のオプションを表示する
アプリケーションのオプション: -f, --filename=FILENAME プレビューするファイルの名前を指定する --template テンプレートを読み込むダミーのウィジェット・クラスを生成する -t, --toplevel=TOPLEVELNAME プレビューするトップレベルの名前を指定する --screenshot スクリーンショットを保存する先のファイル名を指定する --css 使用する CSS ファイルの名前を指定する -l, --listen 標準入力待ちにする --slideshow GtkStack を使って全てのトップレベル・ウィジェットのスライドショーを作成する -v, --version バージョンを表示する --display=DISPLAY 使用するXのディスプレイを指定する

次は画像ビューアこと Eye of GNOME。こちらは何が新しくなったか今ひとつ不明。GTK+ バージョン3の新しい API への移行だろうか。プラグインの方もあまり変わっていないような気がする:

eog.png eog-3.14-01.png
eog-3.14-02.png

最後はドキュメント・ビューアこと Evince。こちらも特にサポートするドキュメントの形式が追加されたわけでもなく、GTK+ バージョン3の新しい UI に追従したような感じ:

evince.png evince-3.14-01.png

例えば表示倍率を変えるメニューはこんな感じ:
evince-3.14-02.png
まだまだ半分もいっていないな :$

Building GNOME 3.14 release (TAKE 2).

せっかくなので NetworkManager のバージョン 1.0.0 をビルド・インストールしてみた。ライブラリの統廃合が大きな特徴だけれど、まだ古いライブラリも提供されているのでバージョン 0.9 系の最新版をインストールしているのとあまり変わらない感じ。と思ったら、g-c-c のネットワーク・アプレットが起動されなくなってしまった :$ :
gcc-panels-network-NM10-01.png
まぁ NetworkManager のバージョン 1.0 は GNOME 3.14 のずっと後にリリースされたから仕方がないとは思うのだけれど、なんだか「気持ち悪い」ので現在の開発ブランチである GNOME 3.15 の g-c-c のソースコードを確認してみたら、こんなログが

commit f30e6df1d4665b06a45ad7bbe7a2ed2bfa9387f5
Author: Bastien Nocera 
Date:   Thu Dec 18 08:04:00 2014 +0100
network: Also work with NM 1.0
Remove the NetworkManager version checking altogether. The code was made to check for now very old versions of NetworkManager, and anything newer than ancient should degrade gracefully if we support newer features.
https://bugzilla.gnome.org/show_bug.cgi?id=741661

このネットワーク・アプレットは起動時に実行中の NetworkManager のバージョンを取得してチェックしている:

static gboolean
panel_check_network_manager_version (CcNetworkPanel *panel)
{
const gchar *version;
gchar **split = NULL;
guint major = 0;
guint micro = 0;
guint minor = 0;
gboolean ret = TRUE;
/* 実行中のバージョンを取得して解析する */
version = nm_client_get_version (panel->priv->client);
if (version != NULL) {
split = g_strsplit (version, ".", -1);
major = atoi (split[0]);
minor = atoi (split[1]);
micro = atoi (split[2]);
}
/* そのバージョンが新しすぎるか、もしくは古すぎるか? */
if (major > 0 || minor > 9 || (minor <= 8 && micro priv->nm_warning_idle = g_idle_add ((GSourceFunc)display_version_warning_idle, panel);
}
g_strfreev (split);
return ret;
}

この実装、本来はバージョン 1.0 の NetworkManager の場合は through するはずなのが、どうやら引っかかっていたらしい。なにやらバージョン管理も面倒になったのか、バッサリ割愛されて、かなり古いバージョンのみ弾くような実装に変更されていた。こちらをそのまま適用してネットワーク設定画面を出すことができた:
gcc-panels-network-NM10-02.png
で肝心のコア・パッケージの方だけれど、安易に upstartsystemd で置き換えようとしたら、何だかいろいろ起動しなくなったので止めた。あと、このバージョンから日本語入力などの「IM 切り替えが gnome-setting-daemon から gnome-shell へ移行された」ようで、なにやらこちらも危険な匂いがしたので、ひとまず gnome-shell とそれに依存するパッケージは保留したまま Standalone なアプリを先にビルド中。
(現在インストール保留中のパッケージ)

  1. mutter
  2. clutter と clutter-gtk
  3. gnome-settings-daemon
  4. gnome-session
  5. gcj
  6. gnome-shell

ということで、現在のデスクトップは GNOME のバージョン 3.10 と 3.14 が混ざった状態。特に支障はないのでどうしょうかなぁと考え中 :|

GTK+ Ref. translation (TAKE 19).

廃止になったウィジェット」が完了。これで第三章の「GTK+ のウィジェットとオブジェクト」の翻訳が全て完了した。この章は長かった。このバージョンの GTK+ には現在の3系とは異なり、GTK の他に gdk-pixbufGDK と言ったコンポーネントが含まれているけど、他のどれよりも規模が大きい。ログを見てみると最初に GTK のコンポーネントの翻訳を開始したのが 2012年1月19日とあるから、ここまでざっと3年はかかっていることになる :|。その間に、巷の2系はバージョン 2.24 までリリースされているけれど :X
とはいえ、まだ第四章の “異なる系からの移植ガイド” が残っているのでこの翻訳自体が完了するのはまだまだ先になるな。このガイドは以前のものに比べると、Deprecated になったクラスがある分だけ少し新規の翻訳が多くなっている。
See Also GTK+ リファレンスマニュアル: v2.14.7 版の API リファレンス
See Also GIT リポジトリ: 作業用の GIT リポジトリ (英文併記)
See Also 誤植/誤訳の報告はメールの他にこちらにて。
昨年「2014年中には終わらせたい」としていた章はちょっとオーバーしたけど無事完了で、正直ホッとした。

Building GNOME 3.14 release (TAKE 1).

一応 gsettings-desktop-schemas までビルドした。GLib や GTK+ といったコア層は完了したので、ちょうどプラットフォーム層のコンポーネントに移行し始めたといったところ。まぁ、この辺りから GNOME 以外の依存関係が広がってくるし、(1回分のリリースを飛ばしている分) ja.po の方も未訳数が桁違いになってくるので、本当に「面倒」なビルド作業はこれからなんだけど。
で、ここまでのビルドで一番気になるのは GTK+ 3.14 のリリースで正式に組み込まれた GtkInspector という内蔵型の対話式デバッガ。その他にも色々あるのだけれどバージョン 3.12 をスキップしちゃっているので実際にどのバージョンで追加されたのか詳細は不明ではあるが、例えば gtk-launch なるコマンドを使うと URI を指定してアプリケーションを起動できるようになっているので、そういった (かなり使うケースが限定される) クラスが追加されているようだ。他には、画像編集系のアプリで使いそうな十字カーソルをキャンバス上で移動させてイベントを発行する Event Axes クラスとか、目的が今ひとつ不明な FlowBox クラス、ジェスチャーをサポートした Gesture クラス、UI 系だと Header Bar クラスや Popover クラスなんかがある。
GtkInspector は、以前は .Parasaite といった GTK+ のアプリケーション一つとして実装され、他のアプリにアタッチしてウィジェットの階層やクラスのプロパティをランタイムで調査できるものだったようさ。そういえば、その昔に似たような機能を持った ginspector なる GObject 系のクラス調査ツールがあった記憶がある (確か日本人が開発していたような)。GtkInspector は、chrome とか firefox といった最近のウェブアプリには標準で実装され Web 開発で HTML ページや CSS のレイアウト調査を行う「インスペクタ」と同様の位置づけだ。従って GTK+ のアプリで、このデバッガを起動する場合は chrome や firefox のそれと同様に [Control]+[Shift]+[I]というショートカットが利用できる。もしくは環境変数として GTK_DEBUG=interactive を指定する。すると GtkWindow を持つアプリから次のようなインスペクタが起動される:
BuildingGNOME3.14-2014122401.png
ここで OK をクリックすると、インスペクタのウィンドウから GTK+ のクラスについて様々な情報を収集できるようになる:
BuildingGNOME3.14-2014122402.png
BuildingGNOME3.14-2014122403.png
CSS エディタではリアルタイムで設定を変更させて確認することが可能になっている。他にもフォントやテーマなんかも変更して即座に確認できるようになっている。
そして、それ以外に気づいた点は gdk-pixbuf を最新版 (2.31系以上) にすると Deprecated な API やクラスが削除されているため GTK+3.0 ではなく GTK+2.0 の方がビルドできなくなるのには注意が必要。その他に NetworkManager の 1.0.0 がリリースされた。その際に今までのクライアント・ライブラリが GObject 化されて libnm という一個のライブラリに統合・置き換えられるようになった。但し、この 1.0.0 では従来の libnm-glib や libnm-gtk などのライブラリも混在できるようになっている。あとベースが Ubuntu 14.04 LTS なので gcc がちょっと古いため 4.9 をインストールしている。あと -fstack-protector-strong というオプションは、このバージョンからサポートされていたようだし。
といったところで、ここまでは特に大きな問題は無し :D

Start to build GNOME 3.14, but….

もう2014年もあと一ヶ月となってしまった所で、昨年のアップグレード以来ほとんどビルドしていなかった GNOME リリースの最新版でもビルドしてインストールでも始めようかと環境を整えていたら、なんと GNOME.org のアカウントが無効になっていた。最後にアクセスしたのは確か今年の7月くらいなんだけど、それから半年近く経ってから checkout してもアクセス権が無いとかで弾かれてしまう。アカウントの連絡先のメールアドレスは gnome.gr.jp ドメインであり、最後に引っ越しした後に forwarding 設定をしていたような記憶もあるが、まったく No Any Notifications だった。まぁ、いいか :|
ということで、今迄は常に Ubuntu の最新版のリリース上でビルドしていたけど、これからは LTS リリースをベースにビルドすることにした。Security Packages 以外のアップグレードの寿命がかなり短いから。