一年近く前に submit した Nautilus の i18N 絡みのバグ #750917 が修正されて GNOME 3.20 に取り込まれた 。長かった〜。
「GNOME 3.0」カテゴリーアーカイブ
Building GNOME 3.16 release (TAKE2).
くどいようだけれど、既に GNOME 3.16.2 のビルド・インストールは完了済み。
今回も適当に (というか、やっと systemd を採用した) Ubuntu Desktop をベースに800個以上パッケージをビルドしている。で、自分のマシンは NVIDIA GPU GeForce GTX 960 を搭載しているので、当然ながら Proprietary なドライバをインストールしているのだけれど、GNOME 3.16 の cheese とか totem とか gnome-maps なんかを起動すると:
(totem:23229): Gdk-ERROR **: The program 'totem' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
(Details: serial 401 error_code 8 request_code 154 (GLX) minor_code 31)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the GDK_SYNCHRONIZE environment
variable to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
[1] 23229 trace trap (core dumped) totem
てな具合に GDK/X11 向けのバックエンドで SIGSEGV して起動しない現象が多発して手を焼いた。clutter / clutter-Gtk ライブラリ経由で地図なんかを描画しようとすると落ちる。ビルド時のオプションで無効にしたり、次のように clutter のバックエンドをソフトウェア制御することでなんとか凌いでいた:
$ CLUTTER_BACKEND=x11 cheese
まぁ意外と大勢の人達が直面していた問題だったようで、”Bug 747489 – No access to the Visual used to build the CoglOnscreen” として登録されて対応が進んでいたようだ。clutter の開発版である clutter 1.23.2 と、こちらは未だリリースされていないようだけれど clutter-gtk にもパッチが必要。こちらは、登録済みの Bug 747489 のコメント37 に添付されているので、自前でビルド・インストールしている。
これで正常にアプリを起動することが出来るようになって一安心 :
Building GNOME 3.16 release (TAKE1).
既に GNOME 3.16.2 のビルド・インストールは完了済み。
実は、ここまで来るのにいろいろ紆余曲折があった。というのも、今年の初め、ちょうど出張に入る直前まで、昨年の9月にリリースされた GNOME 3.14 のビルドを「毎度のように」時間を見つけながらやっていたのだけれど、このリリースから部分的にサポートが始まった systemd に対応してみたり、使えない Unity デスクトップを排除するようなパッケージ (例えば unity-settings-daemon の古いサポートを無視したまま新しいバージョンの gnome-settings-daemon) をインストールしてデスクトップ再起動を繰り返しているうちに gnome-shell が起動できなくなり、さらには linux の shutdown さえもまともにできなくなってしまった 。それがわかったのが出張の前日ということもあり、後ろ髪引かれる思いで出張へ。
毎度のことながら ja.po の更新を含めたパッケージ作成には時間がかかるもので、この時は (これも去年の長期出張により一つ前の GNOME 3.12 をスキップしているため) リリースが二つ古い GNOME 3.10 からのアップデートだったということもあり、いろいろなことで時間を食った。さらに改めて振り返ってみると、Running Machine でパッケージを作成しビルドしてインストールというスタイルの「限界」も痛感した 。このスタイルは GNOME デスクトップのビルドを始めてからかれこれ10年近く変えていないのだけれど、近頃の GNOME はデスクトップの領分を越えてシステム規模の Requires まで要求するようになっていく傾向にあり、常々やりずらいなぁと思っていた。大昔だと、例えば Linux Kernel の Inotify やら HAL なんか。そういうことで、今回は systemd を部分的にインストールしたのが不味かったのかなぁと思っている。確か、この時点で Ubuntu デスクトップが systemd をサポートするのは 15.09 からだと聞いていたので、ubuntu 14.03 には少々強引だったかなぁとも。
そんな出張中に「systemd の導入が前倒しで 15.03から」というニュースを聞いたので、出張が終わったらゼロから構築しようと決めた。さらこのビルドからは仮想マシンをテスト機として用意し、ビルドしたパッケージのインストールや実行テストをきっちり行ってから Running Machine にインストールする方法を始めてみることにした。最初はこの二度手間が苦痛だったけど、何度か危ないケースを回避できたこともあり、今ではやってよかったと思っている。
それでもシステム全体をゼロから構築したので、ビルドの他にもいろいろ手間がかかったけれど、出来上がった現在の GNOME 3.16 デスクトップはこんな感じ:
そんなこともあり、$HOME 配下に眠っていた大昔のドット・ファイルを一掃することができたもの良かった 。
GNOME 3.16 の出来の方だけれど、リリースノートを読めばわかる通り、大して嬉しい機能はなく、ちょっとした改善レベルであり、このビルドとインストールにかけた時間のことを考えると残念でならない。まぁ今に始まったことではないけれど。この程度の進歩ならば半年ではなく1年リリースで十分じゃないかと思うのは俺だけだろうか。
通知メカニズムの改善
「全面的な改良」を謳っているけど、数個先のリリースではまた改良されそうな気配:
Nautilus の改善
毎度「見やすさ」とか「見栄え」とかで手が加えられる「ファイルの一覧」こと Nautilus。但し一覧表示すると、「修正日時」や「詳細な修正日時」の項目の書式は US フォーマットのままで日本語。仕方ないので B.G.O #750917 に登録しておいた。直ぐ治したいのであれば、このチケットに貼り付けたパッチを参照のこと:
ということで、しばらくこんな感じで「ぼやいていく」予定。
Building GNOME 3.14 release (TAKE 3).
ひとまず gnome-shell 関連はおいておいて、アプリ単体のビルドを継続中。
まずは Web こと epiphany ウェブブラウザ。WebKitGTK+ をレンダリング・エンジンとして持ち、GNOME デスクトップ向けに GTK+ ツールキットのバージョン3の UI を持つタブ対応ブラウザ。このバージョンでは、Google Chrome 同様にタブ毎にスレッド (プロセス) を割り当てることができるようになった。あとは表示しているウェブ・ページのソースをデフォルトのエディタで開くことができるようになった:
次は Glade ことユーザ・インタフェース・ビルダ。GTK+ バージョン2向けのビルダが Glade-3 と呼ばれ、こちらは GTK+ バージョン3系の UI を設計できる。このバージョンでは、なんとアンケート機能が追加された。同時にユーザ登録する際にメーリングリストの購読も選択できる。一応、個人情報の扱いには注意をはらっている模様。
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 への移行だろうか。プラグインの方もあまり変わっていないような気がする:
最後はドキュメント・ビューアこと Evince。こちらも特にサポートするドキュメントの形式が追加されたわけでもなく、GTK+ バージョン3の新しい UI に追従したような感じ:
例えば表示倍率を変えるメニューはこんな感じ:
まだまだ半分もいっていないな
Building GNOME 3.14 release (TAKE 2).
せっかくなので NetworkManager のバージョン 1.0.0 をビルド・インストールしてみた。ライブラリの統廃合が大きな特徴だけれど、まだ古いライブラリも提供されているのでバージョン 0.9 系の最新版をインストールしているのとあまり変わらない感じ。と思ったら、g-c-c のネットワーク・アプレットが起動されなくなってしまった :
まぁ 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 するはずなのが、どうやら引っかかっていたらしい。なにやらバージョン管理も面倒になったのか、バッサリ割愛されて、かなり古いバージョンのみ弾くような実装に変更されていた。こちらをそのまま適用してネットワーク設定画面を出すことができた:
で肝心のコア・パッケージの方だけれど、安易に upstart を systemd で置き換えようとしたら、何だかいろいろ起動しなくなったので止めた。あと、このバージョンから日本語入力などの「IM 切り替えが gnome-setting-daemon から gnome-shell へ移行された」ようで、なにやらこちらも危険な匂いがしたので、ひとまず gnome-shell とそれに依存するパッケージは保留したまま Standalone なアプリを先にビルド中。
(現在インストール保留中のパッケージ)
- mutter
- clutter と clutter-gtk
- gnome-settings-daemon
- gnome-session
- gcj
- gnome-shell
ということで、現在のデスクトップは GNOME のバージョン 3.10 と 3.14 が混ざった状態。特に支障はないのでどうしょうかなぁと考え中 。