1月 242012
 

 普段、職場でも Gentoo Linux を使っている私だが、自宅の開発環境も Gentoo Linux で、GUI周りの更新については自宅で検証してから職場で導入するようにしている。最近、~amd64 に GNOME 3 環境が降りてきたが、特に UI 周りの前評判が悪いこともあって更新を見送っていた。とはいえ、GNOME 3 に更新するのか、xfce4 に移行するのか、はたまた GNOME を捨て去って Gentoo Linux 以前に使っていた KDE に戻るのか決めるべきときにきたこともあり、まずは GNOME 3 を入れて試すことにした。

 更新にあたり、Gentoo 本家の GNOME 3.2 Upgrade Guide を自分用に以下、超和訳してみた。自分用超和訳なので意訳箇所も多いし、誤訳もある可能性もある。

1. 変更点

全体的な変更点

 まずはGNOME 3.2 リリースノート3.0 リリースノートで GNOME 3.x についての変更点を確認して欲しい。

手短に言うと、GNOME 3.2 には標準モードとフォールバックモードという2つのデスクトップモードがある。フォールバックモードでは gnome-base/gnome-panelx11-wm/metacity が動作し、外観と動作は GNOME 2 に似たものになっている。標準モードでは gnome-base/gnome-shellx11-wm/mutter で、外観も動作も GNOME 2 までとは全く異なる。デフォルトでは、どちらのモードを使うかは動作するシステム上のグラフィック周りのハードウェアとドライバが何かによって決まる。(標準モードはここ最近の 3D 機能が必要となる。)

UI の表示言語とエンコーディング

 GNOME 3.2 では sys-apps/accountsservice にユーザの使用する言語の設定機能がある。GNOME では、画面右上角にあるメニューの「マイアカウント」からユーザの使用する言語を設定できる。(訳注: アカウント名をクリック→システム設定→地域と言語) その他に、AccountService 以下にあるファイルを直接編集しても良い。例えばユーザ jrandam の言語をイギリス英語に設定する場合、root 権限で /var/lib/AccountsService/users/jrandom を以下のように変更する。

[User]
Language=en_GB.utf8
フォント

 GNOME 3.2 のデフォルトフォントは media-fonts/cantarell だが、現在、Cantarell は拡張ラテン文字の一部しか含まれていない。そのため、Cantarell でカバーされていない言語のユーザは media-fonts/dejavu のような他のフォントに切り替えたいと感じる場合がある。この場合、gnome-tweak-tool のフォントタブか、ターミナルから以下を実行する。

$ gsettings set org.gnome.desktop.interface font-name 'DejaVu Sans 10'
$ gsettings set org.gnome.desktop.interface document-font-name 'DejaVu Sans 10'
$ gconftool-2 -s -t string /apps/metacity/general/titlebar_font 'DejaVu Sans Bold 10'
アプレット

 GNOME 2 アプレットは GNOME 3.2 では動作しない。フォールバックモードでは動作するが、一部は新しい gtk3 API に対応していない。(Fallback mode allows applets, although some have not yet been ported to the new, gtk3-based APIs.) 標準モードでは全く動作しない。いくつかの昔からあったアプレットの機能については、サードパーティから提供される GNOME Shell extensions に置き換えることができる。

 フォールバックモードでの gnome-panel の(アプレットの追加・削除、移動などの)設定を管理するには、Alt キーを押しながらパネルをクリックする。(訳注: 右クリック) これにより、パネルまたはアプレットの設定を変更するためのメニューが開く。

シャットダウンと再起動

 GNOME Shell 開発者は、デフォルトでシャットダウンや電源 OFF に関連する全てを表示しないという論争を招くような決定をした。電源 OFF メニューは右上のメニュー + Alt キーを押して初めて表示される。

 すぐに目につくシャットダウン GUI が必要なら (例えば帰り間際に PC のシャットダウンをしなければならない職場環境に GNOME 3.2 をインストールする場合) alternative-status-menu 拡張をインストールすれば良い。この拡張は、gnome-extra/gnome-shell-extensions を emerge して

# eselect gnome-shell-extensions enable 'alternative-status-menu@gnome-shell-extensions.gnome.org'

とすれ、全てのユーザに対してデフォルトでこの拡張が有効になる。または、gnome-tweak-tool のGNOME Shell拡張タブでユーザごとに設定すれば良い。

ノート PC を閉じたときのサスペンドについて

 GNOME 3 はデフォルトでノート PC を閉じたときにサスペンドする。変更したい場合は、gnome-tweak-tool の Shell タブから変更できる。または、ターミナルから gsettings で変更する。

$ gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action blank

 ノート PC を閉じた時にサスペンドしたくない理由の中で最大のものは、ネットワーク接続を維持したまま別の部屋にノート PC を持っていきたいからということである。そのためには、gnome-extra/office-runner をインストールするとよい。これをインストールすれば、10 分間ノート PC を閉じていてもサスペンドしない。

デスクトップ上のアイコン

 GNOME 3.2 では、もはや Nautilus はデフォルトでデスクトップを管理していないので、~/Desktop は単に普通のファイルフォルダとして扱われる。

 もし GNOME 2 のように Nautilus にデスクトップを管理させたいなら、gnome-tweak-tool の Desktop タブにある対応する設定を変更するか、gsettings コマンドで以下のように設定すればよい。

$ gsettings set org.gnome.desktop.background show-desktop-icons true
Compiz

 GNOME 3.2 標準モード (= GNOME Shell) は Compiz に非対応である。

PulseAudio

 GNOME 3.2 はオーディオサポートに media-sound/pulseaudio が必要になるので pulseaudio USE フラグがグローバルに有効になっている必要がある。(これは desktop/gnome portage プロファイルを使っているのならデフォルトで有効になっている。) PulseAudio の問題についてのトラブルシューティングは、PulseAudio のドキュメント (英語) を参照。

タッチパッドとその他の入力デバイスのカスタマイズ

 GNOME 3では、「タイプ中はタッチパッドを無効にする」にチェックを入れると、キーボードのキーを押してから 2 秒間はタッチパッドが無効になり、GNOME 2 では 0.5 秒無効になる。タイプ中はタッチパッドを無効にしたいが GNOME 2 のようにより短い間だけ無効にしたい場合は、short-touchpad-timeout USE フラグを on にして gnome-base/gnome-settings-daemon を emerge すればよい。

 GNOME 3 では、入力デバイスについての高度な設定のためのカスタムコマンドを設定できる。例えば、タッチパッドで2本指スクロールしたい場合(垂直・水平ともに)やタッチパッドの端でスクロールしたい場合(垂直方向のみ)、

$ cp /usr/share/gnome-settings-daemon-3.0/input-device-example.sh ~/input-device.sh
$ chmod +x ~/input-device.sh
$ gsettings set org.gnome.settings-daemon.peripherals.input-devices hotplug-command ~/input-device.sh

として、input-device.sh の末尾に以下を追加する。

# If the device is a touchpad ...
if ; then
	# ... enable two-finger scrolling (vertical and horizontal) ...
	xinput set-prop "${device}" "Synaptics Two-Finger Scrolling" 1 1
	# ... and edge scrolling (vertical only, no horizontal, no coasting) ...
	xinput set-prop "${device}" "Synaptics Edge Scrolling" 1 0 0
fi
# All further processing will be disabled if $retval == 0
exit $retval

追記: もし hotplug 用のカスタムコマンドが 0 で終了しない場合、gnome-settings-daemon は hotplug コマンドが変更した内容をから元々の入力デバイス設定に戻してしまう。たとえ何があろうとも、自動的にマウスとタッチパッドの設定を希望通りに変更して GNOME 3 が自動的に上書きしないようにしたいなら (これは上の input-device.sh のような入力デバイスのカスタム hotplug コマンドでマウスやタッチパッドの設定を変更できなくなるということでもある)、以下のようにする。

$ gsettings set org.gnome.settings-daemon.plugins.mouse active false
一般的な設定項目と拡張

 GNOME 3.2 は GNOME 2 よりも遥かに設定項目が少なくみえるようにデザインされている。例えば、デフォルトでは Gtk+ テーマを変更する GUI が簡単に見つからないようになっている。設定項目の多くが隠されているが、gnome-extra/gnome-tweak-toolgsettings (gnome-base/dconf に含まれる dconf-editor でどのような設定項目があるか調べることができる) で変更することも可能である。こういった隠された設定項目についての議論はこのガイドの範疇外である。

GNOME Shell の動作は拡張を使うことで大きく変更することができる。Gentoo は公式の GNOME リポジトリより gnome-extra/gnome-shell-extensions としてパッケージを作成している。GNOME Shell には https://extensions.gnome.org/ ウェブインターフェイスから拡張をインストールできるブラウザがあるし、その他にも多くの開発者が様々の非公式サイトで拡張を提供している。

 Gentoo では eselect gnome-shell-extensions でシステムレベルでインストールされた (つまり /usr/share/gnome-shell/extensions にインストールされた) 拡張を使うべきかどうかを制御している。新しくシステムレベルでインストールされた拡張は、デフォルトではオフになる。

 全てのユーザに対して、代替ステータスメニューとドック拡張をデフォルトでオンにするには以下のようにする。

# eselect gnome-shell-extensions enable \
  alternative-status-menu@gnome-shell-extensions.gnome.org dock@gnome-shell-extensions.gnome.org

 eselect gnome-shell-extensions で管理されているデフォルト設定については、ユーザごとに extensions.gnome.org ウェブインターフェイスや gnome-tweak-tool の 「GNOME Shell 拡張機能」タブ、gsettings を使ってコマンドラインから上書きできる。例えば Alternative Status Menu とドック拡張をオンにしてそれ以外の全ての拡張をオフにする場合、以下のようにする。

$ gsettings set org.gnome.shell enabled-extensions \
  '["alternative-status-menu@gnome-shell-extensions.gnome.org", "dock@gnome-shell-extensions.gnome.org"]'

追記: GNOME 3.0 では、enabled-extensions キーの代わりに disabled-extensions キーが使われていた。GNOME 3.2 では disabled-extensions キーは無視される。

重要: GNOME Shell 拡張機能のコード品質は非常に重要である。メモリリークのある拡張や GNOME を全く使えなくする拡張もある。Gentoo はサードパーティがリリースした GNOME Shell 拡張による問題はサポートできない。

2. ビデオカードの互換性

AMD / ATI

x11-drivers/ati-drivers (= FGLRX バイナリドライバ) の場合、11.x 系の多くのバージョンで GNOME Shell の描画が崩壊する。回避策として、GNOME をフォールバックモードで起動する (3. トラブルシューティングを参照) か、オープンソースドライバに切り替える必要がある。

 オープンソース版 AMD / ATI ドライバを使う場合は、gallium USE フラグをつけて media-libs/mesa をビルドし、eselect mesa で Gallium3D アーキテクチャをオンにしたほうがよい。Gallium3D がオフの場合、GNOME Shell (gnome-shell USE フラグがついているなら GDM も) が動作中にクラッシュしたり単純に起動に失敗する可能性があり、その場合は GNOME がフォールバックモードで動作することになる。

Intel

 Intelのビデオカードの場合、classic USE フラグ付きで media-libs/mesa をビルドし、eselect mesa で classic アーキテクチャをオンにしておいたほうがよい。でなければフォールバックモードでしか GNOME が動作しないことが多い。

NVIDIA

 x11-drivers/nvidia-drivers で GNOME 3 を動作させる場合、ユーザを video グループに所属させておく必要がある。グループに所属していない場合は GNOME Shell が起動時にクラッシュする。

 x11-drivers/nvidia-drivers では GNOME Shell のシステムトレイが正しく描画されない (全てのアイコンが同じアイコンとして表示される) バージョンがあるが、この問題はバージョン 280.13 以降で修正されている。

 x11-drivers/nvidia-drivers は全てのバージョンで GNOME のカラーマネジメントサポートと非互換である。これは、GNOME のカラーマネジメント機能が XRandR に依存しており、NVIDIA のドライバは現状 XRandR を完全にサポートしていないことによる。現時点でこの問題の回避策は存在しない。

 バグ #375615 によれば、特定のバージョンの x11-drivers/nvidia-drivers (275.28 及び 280.13、285.03 が該当する) では、終了時に Gtk+ アプリケーションがハングする場合がある。これが原因で、GDM でパスワード入力後にフリーズする場合があるし、似たようなケースでログアウト時に GNOME がフリーズする。該当の nvidia-drivers はマスクされているので、この問題を避けるために 275.09.07 や 285.05.09 といったマスクされていないバージョンのドライバを使うようにすること。

複数ディスプレイの設定

 バグ #392013 によれば、デュアルディスプレイ設定を Zaphod モード (xorg.conf に複数の Device セクションが存在する場合が該当する) にしている場合、GNOME Shell の起動に失敗する。Zaphod モードにしている場合は、フォールバックモードのみ動作可能になる。

 昔の ATI ビデオカード (X850, M28 より古いもの及び X1550) と i945 以前のインテルビデオカードでは、一般的なマルチモニタ設定で GNOME Shell を起動できない。GNOME Shell は、表示対象の全てのディスプレイの解像度を結合したサイズと同じサイズの GL テクスチャを使うが、古いビデオカードが最大で 2,048 x 2,048 ピクセル以下の GL テクスチャしかサポートしていないことが原因である。

3. トラブルシューティング

GDM で「ああ、何かがおかしいです、ログインし直してください」(Oh no! Something has gone wrong) と表示される

 これは GNOME Shell がクラッシュしたのが原因と思われる。原因を特定するには、/var/log/gdm/:0-greeter.log を参照する。回避策として、gnome-shell USE フラグを外して gnome-base/gdm を再ビルドしてみるとよい。

パスワード入力後に GDM がフリーズする

x11-drivers/nvidia-drivers のバグが原因。上の「2. ビデオカードの互換性」を参照。

GNOME がフォールバックモードで起動する

ビデオカード周りのハードウェアやドライバが要求水準以下の場合、GNOME はフォールバックモードで起動する。GNOME がなぜ標準モードで起動しないかについての詳細については、/usr/libexec/gnome-session-check-accelerated-helper を実行すればよい。

$ /usr/libexec/gnome-session-check-accelerated-helper
gnome-session-is-accelerated: No hardware 3D support.
GNOME starts in standard mode

 (例えばパフォーマンスに問題がある場合や個人的な嗜好で) 強制的にフォールバックモードで GNOME を起動するには、システム設定を開くかターミナルから gnome-control-center を起動してシステム情報→グラフィックを選んで強制フォールバックモードをオンにするか、ターミナルから以下のように入力する。

$ gsettings set org.gnome.desktop.session session-name gnome-fallback
Epiphany と Adobe Flash

 インストール直後の状態では、www-plugins/adobe-flash は Gtk+ 2.x を使っているのに対して Epiphany 3 は Gtk+ 3.x のため、Epiphany 3 では Adobe Flash プラグインを読み込めない。ただし、amd64 では回避策がある。USE=-64bit で Adobe Flash プラグインを emerge すれば、プラグインは www-plugins/nspluginwrapper 経由で Gtk+ のバージョン問題を回避して呼び出すことができる。x86 上では残念ながら現時点で良い回避策は存在しない。そのため、www-clients/firefox や www-clients/chromium といった Gtk+ 2.x ベースのブラウザを使うことをおすすめする。

4. GNOME 3.2 にアップグレードする上でのパッケージ依存情報

PyGObject

 dev-python/pygobject のアップグレードの際、パッケージの依存解決で問題が発生する場合がある。この場合、以下のコマンドで手動アップグレードすればよい。

# emerge -1av pygobject:3 pygobject:2
GNOME 2 でのみ動作するアプレット

 gnome-extra/deskbar-appletdev-cpp/libpanelappletmm といった GNOME 2 アプレットや関連するライブラリの一部は GNOME 3 と互換性がなく、アップグレードがブロックされる。これらについては、GNOME 3 にアップグレードする前にアンインストールする必要がある。

新しい GNOME メタ ebuild

 GNOME 3 では、メタ ebuild はいくつかの ebuild に分割されており、様々な USE フラグでインストールする機能を制御できる。gnome-base/gnome, gnome-base/gnome-fallback, gnome-base/gnome-lightの 3 つの主だったメタ ebuild がある。その他のメタ ebuild はこの 3 パッケージから呼び出され、ユーザは必要がない限り直接 emerge しないほうがよい。

 gnome-base/gnome が GNOME 3 をインストールする推奨方法となる。利用可能な USE フラグについては、パッケージの metadata.xmlを参照。

 gnome-base/gnome-fallback はフォールバックモードのみをインストールするメタ ebuild である。GNOME Shell を実行するには非力すぎるマシンで GNOME を動作させる場合や、GNOME Shell を使いたくない場合にこの ebuild を emerge すればよい。

  gnome-base/gnome-light は GNOME 3 を動作させるために必要最低限なライブラリとバイナリを実行するメタ ebuild である。GNOME Shell やフォールバックモード、またはその両方を USE フラグで on/off できる。GNOME 3 インストール方法としては推奨されていないが、ユーザの利便性のために提供されている。


Comments

comments

Powered by Facebook Comments