【Ubuntu 11.10:Gnome3】Gnome Shellを動かすとデスクトップの上部パネル上にメニュバーで出てしまう問題。(テスト版が出ました..) [ubuntu]
以前から2度ほど、Gnome Shellに透明化されたパネルテーマを使用すると、パネルの下にファイルマネージャーのバーが見えてしまう問題を記述しました。
『【Ubuntu 11.10:Gnome3】Gnome Shellを動かすとデスクトップの上部パネル上にメニュバーで出てしまう問題。(仮対処と考察)』
下図のように、パネルの下に「ブックマーク」や「ヘルプ」というのが見えてしまう問題です。
下記がバグ報告です。
https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/826771
2011/10/25の夜にテスト版が出ました。上記のコメント#23です。
そこには、proposedを使用してくれという記述があって、下記にリンクが張ってあります。
https://wiki.ubuntu.com/Testing/EnableProposed (英語)
proposedリポジトリを追加する方法が書いてありますが、英語です。その上、バージョンが違うのか、その通りやってもできません。そこで、proposedリポジトリを追加する方法を書いておきます。
ただし、proposedリポジトリというのは、あくまで「テスト版」です。(バグフィックスされたものが沢山あるので、私はインストールしたらすぐに使えるようにしています。)それと、proposedリポジトリを追加すると、この問題以外のテスト版アプリも沢山入ります。proposedリポジトリに入っているパッケージは、リリース版のパッケージを上書きします。
実際にどんな事が起きる可能性があるかというと、例えばfirefox 8 がリリースされると、それがインストールされたりします。(あくまで可能性です。)
これらを理解した上で、追加して下さい。
< proposedリポジトリの追加方法 >
1) アップデートマネージャーを立ち上げる。
アップデートマネージャーを立ち上げて下さい。そしたら、右下の「設定」ボタンを押して下さい。
2) proposedリポジトリを有効にする。
下図が立ち上がりますので、「アップデート」のタブを押して、黄色い色の付いた「プレリリースされたアップデート」の所にチェックをいれて、「閉じる」ボタンを押して下さい。
3) proposedリポジトリのパッケージをインストールする
通常のアップデートマネージャーの画面に戻ったら、一度「再チェック」を押して下さい。
初めて、チェックを入れた時は100Mオーバーのファイルがインストールされます。多分、パッケージ数も数百となるはずです。
あとは、通常通りアップデートをインストールを押せばアップデートできます。
これで、この問題の対処したファイルマネージャー(Nautilus 3.2.1)も入ります。
< proposedを追加しないで対処したい方>
『【Ubuntu 11.10:Gnome3】Gnome Shellを動かすとデスクトップの上部パネル上にメニュバーで出てしまう問題。(仮対処と考察)』
で記述した対処方法を行って下さい。基本的には同じ事です。
< 余談(愚痴) >
『【Ubuntu 11.10:Gnome3】Gnome Shellを動かすとデスクトップの上部パネル上にメニュバーで出てしまう問題。(仮対処と考察)』で記述した対処方法と、Nautilus 3.2.1 がなぜ同じかというと・・・
nautilus-desktop-window.cの100行目付近
desktop_session = g_getenv("DESKTOP_SESSION");
if (desktop_session != NULL && !g_str_has_prefix(desktop_session, "ubunt
u")) {
gtk_widget_destroy (NAUTILUS_WINDOW (window)->details->menubar);
NAUTILUS_WINDOW (window)->details->menubar=0;
}
上記がこの問題の対処部分ですが、DESKTOP_SESSIONの環境変数を取ってきて、ubuntu以外だったら、メニューを表示のデータを保持しているものを削除してしまうという方法を取っています。
DESKTOP_SESSIONで判定するなら、メニュー出力をどのプログラムで止めるかは違いますが、判定方法は同じです。
それに、セッション名(ubuntu)をハードコーディング(ソースコードの中に直接書いてしまうこと)するとは思いませんでした。私なら、セッション名で判定するなら、そのセッション名のリストは外部(多分dconfが良いと思います)に出します。
そうでないと、誰かがUnityを使った新しいセッションを作ったら、今度はセッション名が違うのでグローバルメニューがでません。
私は、メニューを出力する相手(この場合は、Dbusの通信先のunity-panel-service)が動作していれば、メニューを表示(送信)するし、逆に相手がいない場合はメニューを送信しないようにすると思っていました。どのプログラムがそれを実現するかは、考え方は色々あると思います。ただ、GTKとappmenu-gtkで対処するべきだと思います。そうでないと、gtkアプリを全てunity用に改造することになり、現実的ではありません。
それ以外に、現在アプリがグローバルメニューの表示/非表示をコントロールするのはgtk_widget_destroyするしかないようです。『【Ubuntu 11.10:Gnome3】Gnome Shellを動かすとデスクトップの上部パネル上にメニュバーで出てしまう問題。(仮対処と考察)』でも記述しましたが、グローバルメニューに対してgtk_widget_showやgtk_widget_hide関数はなんの影響も与えません。こんなのおかしいです。
これがバグだとすると、今回のNautilus 3.2.1のソースコードにも影響します。(なので、稚拙な英語でコメント入れておきました。英語が下手すぎて意味が通じなかったかも・・)
←モノクロレーザープリンタ(A4)
最近、プリントアウトの回数が増えて
MP610だとインク代が気になり始めた。
これなら、MP610のインク2セット分で購入できる。
これ、購入しようかな。ただ、置き場所が・・