3.8 の紹介ブログを書き終えないうちに 3.10 のビルドを始めてしまい中途半端になってしまったけど、ここは区切りをつけて次のバージョンについてブログしてみる 。
いつものとおり最新版の ubuntu (Kernel 3.11 / libc6 2.17 / gcc 4.8.1) をベースにビルドを開始したのは、3.10 が 2nd リリースされ始めた10月の初めくらい、マイペースで終わったのが11月の中くらい。しかしながら、今回はリリース物を全てインストールしても問題がいくつかあって、それが解決したのが先週の12月初め、といった具合。時間はともかくとして、結果として ubuntu Trap にハマってしまったのと、やはり今回の GNOME リリースも完成度がいまイチだなぁというが総評といったところ。個人的に仕事などで他のデスクトップ (Microsoft Windows 7 とか Apple MacOS X Mavericks) に触れる機会があって、そちらと比較しても User Experiences や Features の面で物足りなさがあり、なんと言うか新鮮さがない感じ。
特に Mavericks の Safari の描画の速さには驚いた。その一方で、同じ (かな?) Webkit を使っている Epiphany の遅さと重さは半端ないんだけど 。
いくつか遭遇した現象
パッチが足りないとか、依存関係やビルド方法が悪いとか、使っているシステムやディストリによっては発生しないかもしれないけど、とりあえず。一応公式リリース後に発生した現象:
- Shutdown/Reboot できない
- GNOME シェルでロック画面のロックを解除できない
- gnome-maps が起動しない
- gnome-documents に何も表示されない
- 巨大化する GtkDialog
- GNOME コントロール・センターのオンライン・アカウントが SIGSEGV する
- GNOME 3.8 の環境に gnome-settings-daemon 3.10.x をインストールしてから再ログインするとカーソルが消えてしまう
最初の gnome-session 経由で電源 OFF したり再起動できないのは非常に苦痛だった。ubuntu 13.10 からログイン関係は systemd がデフォルトになったため gnome-session の他に、gdm を –enable-systemd もしくは –with-systemd するなどして有効にすると上手く機能しなくなった。前の 3.8 から共に systemd をサポートしていたのだけれど、全て無効にしていたので問題はなかった。3.10 では無効にすると逆にログインできなかった。この現象は、ubuntu パッチとして提供さている XDG_CURRENT_DESKTOP なんていう環境変数を gnome-session と gdm 共に export しておくことで解決した。どうやら片方にしか適用していなかったのが問題っぽい。ubuntu って、こういうパッケージを超えたポリシーを多用するので困る 。まぁ debian/changelog にそれぞれ書いてあると言われるとそれまでだけど。
2は gnome-shell のバグ。
3は原因不明。システム規模のアップグレードをしていたらいつの間にか表示されるようになった。JS のエラーだったような気がするけど。
4は Tracker 0.16 をリビルドする (かアップグレードする) 必要がある。
5は GTK+ 3.10.5 から発生している。例えば g-c-c を開くと、こんな感じ:
どうもラベルのラッピングのパラメータを指定していないと発生する現象らしく git の log には
Author: Matthias Clasen <mclasen@redhat.com> Date: Sun Dec 1 14:55:02 2013 -0500
Fix problems with dialog sizing
Many dialogs contain wrapping labels, but don't set max-width-chars on them. Previously, we were capping their width at 640, but since 3.10.5, they extend all the way to the width of the screen, which is not the desired behaviour.
Go back to capping the width of dialogs at 640 in the stable series. In git master, we will set max-width-chars on the labels instead.
https://bugzilla.gnome.org/show_bug.cgi?id=719516 https://bugzilla.gnome.org/show_bug.cgi?id=719569
って 3.10.6 で直ったとあるけどまだ再現するものがある 。
6 は g-c-c のオンラインアカウントで新規にアカウントを追加しようと [+] ボタンを押下するとクラッシュする。ちょうどここで報告されている現象と全く同じ。Bugzilla には一応登録されているようだけど解決したのかどうかは不明。
7 は修正方法はわかったんだけど、まだ稀に発生する。GNOMEシェルを再起動すると直ったり直らなかったり:
$ gsettings get org.gnome.settings-daemon.plugins.cursor active true $ gsettings set org.gnome.settings-daemon.plugins.cursor active false
で、以下はアプリ別に気づいた点など。
GTK+ など
Cairo 1.2.16 は初めて –enable-gl=yes でリビルドした。DRI を使って Kernel の Nvidia ドライバが提供する DRM でアクセスしているのか、体感でも描画は速くなった (このあたりは以前翻訳した “The Linux Graphics Stack” を参照のこと)。
GTK+ 3.10 はというとコンテナ・クラスがいくつか追加されている。例えばアニメーションを消したり出したりする GtkRevealer クラス、いろいろなコンテナをリスト状に配置する GtkListBox クラス、スタックに格納した子ウィジェットを一度に一つだけ順番に表示する GtkStack クラスの他、Nautilus のサイドバー相当の機能を提供する GtkPlaceSidebar クラスなど。
あと GTK+ のウィジェットを HTML5 互換のブラウザ上で描画するためのバックエンドである Bloadway のデーモンもビルドできるようになている。使い方は説明にあるとおり:
①まずデーモンを起動する $ broadwayd Listening on /run/user/1000/broadway1.socket ②別の端末から GDK のバックエンドとして broadway を指定して、GTK+ のアプリを起動する $ GDK_BACKEND=broadway LIBOVERLAY_SCROLLBAR=0 gtk3-demo とか $ GDK_BACKEND=broadway LIBOVERLAY_SCROLLBAR=0 gedit
最後に HTML5 をサポートするブラウザから http://localhost:8080/ にアクセスするだけ:
あとは、上であげたダイアログの幅が妙に大きくなる問題をなんとかしてもらいたい。
GNOME シェルとデスクトップ全般
これが現在の GNOME シェルとデスクトップ。小物は 3.8 からあまり変更していない:
ちなみに、前バージョンを紹介したブロクでも書いたけど、背景と Nautilus との関係は無くなってしまったので、この 3.10 でも同様に Nautilus と g-s-d にパッチをあてて Nautilus で背景を描画するようにしている。
リリースする度に思うのだけれど、慣れ親しんだテーマが次のリリースでは使い物にならないのは、なんとかならないものだろうか 。GTK+ しかり、GNOME シェルしかり。毎回アップグレードするとテーマの一部または全部が「ボロボロ」になってしまい、新しいテーマを探さなくてならない。それにリリース出始めは満足できるテーマが揃っていないし。
これは GNOME シェルの拡張機能にも言える。新しくしたのは良いけど、また新たに User Experiences を構築しないといけないって言うのはダメでしょ。
次は、検索時のアクティビティ画面。外観は 3.8の頃とあまり変わらない。「全てのアプリ」の一覧がページ単位でスクロールするようになったくらいか:
強化されたのは検索機能。これは tracker を起動して情報を収集しておかないと、あまり期待した結果にならないけど、結構便利 (下は「gnome」を検索した結果):
トップバーの右端にある音量と電源ボタンの部分をクリックすると、メイン・メニューが表示される:
メイン・メニューは、使用しているテーマ (や拡張機能) によって若干変わるけど、概ねつぎのような感じ:
テーマに関わらず決まって一番下にメニュー項目が並んでいて、左から設定 (g-c-c)、画面のロック、電源OFF/再起動のボタン。メイン・メニューの中には音量系の部品がデフォルトで含まれている。さらにユーザ名の横にある折りたたみのボタンを押して展開すると、ログアウトボタンとユーザの切り替えボタンが表示される:
あと、ネットワーク設定や Bluetooth のアイコンは、これらのハードウェアが実際に接続されている場合にしか表示されなくなった。この設計思想も理解できないよね。有線 LAN 使っていても何かと設定したくなるだろうに。一応 g-c-c からはできるけど:
あと GNOME シェルで何か書くことあったかな。3.8 の拡張機能も未だに半分以上は利用できないし。多少メモリ・リークが少なくなった!?くらいか。
上にある画面のロックを解除できない問題があった時はホント大変だった。3.8 で、普通にディスプレイの電源が切れるとロックがかかるようにしていたので、一度ロックがかかると毎回バックグランドから gnome-shell に HUP を投げて解除していた 。
GNOME Tweaks
UI が作り直しで、3.8 の頃よりもわかりやすく、日本語に翻訳しがいがあるようになった:
とはいえ、いつも思うけど、このアプリと g-c-c の関係がわからんなぁ 。
Nautilus
変わったところは、サイドバーを GtkPlaceSidebar クラスで置き換えたくらいか。おかげで、かなり前から当てていた、サイドバーに表示するアイテムの順番を変えるパッチが無用になってしまった。なんで「ブックマークの一覧」は折りたためないんだろうか。
あとは、自分の場合は背景を描画する機能を revert するパッチを ubuntu から移植している。
ということで、スクリーンショットは割愛。
と、まぁホントはもっと他のアプリなどを紹介したかったけど、だらだらと長くなってきたので、またの機会 (TAKE 2) に持ち越すことにする (やる気があればだけど… )。