Compiz 壁紙と Nautilus そして Compiz-Deskmenu 導入

のトピックスの前に、また問題。

今度は「ファイル検索gnome-search-tool)」が検索開始ボタンを押した瞬間に以下のようなエラーを吐いて落ちる現象が発生。

** (gnome-search-tool:12273): WARNING **: Cannot extract frame from the grid
**
ERROR:gsearchtool-spinner.c:682:bump_spinner_frame_cb: assertion failed: (frame != NULL)
Aborted

これがどうもGnome-Look からDLしてインストールしたこのCrashbit Custum Orange アイコン・テーマが原因のよう。

文字通りクラッシュ。Gnome の外観の設定で別のアイコンのテーマに変更してみると落ちません。

で、話は変わり昨日の投稿に載せた現在のデスクトップについて。

展開

展開

やはりキューブの4面が全部同じ壁紙では味気ないし、現在どのビューポートなのか判別し難いというわけで、各面に別々の壁紙を設定することにしたわけです。

Ubuntu の Gnome デスクトップ環境の標準では Nautilus が壁紙の描画を担当してるみたいですが、現在のところ複数の壁紙に対応していません。したがって Nautilus によるデスクトップの描画を停止してやり、代りに Compiz の壁紙(Wallpaper)プラグインにそれを担当させてやる必要があります。

Nautilus のデスクトップ描画を停止するにはコンソールから以下のコマンドを実行。

$ gconftool-2 --type bool --set /apps/nautilus/preferences/show_desktop false

ただしこれには副作用があって、Nautilus によるデスクトップの描画を停止させると、デスクトップ上に置かれているランチャーアイコンや、デスクトップ上での右クリックメニューが表示されなくなります。

自分は元々ウィンドウの下に隠れてしまうアイコンを全く使用していなかったし、Cairo-Dock のようなアプリを入れてあるので不都合はありません。

ただ、デスクトップの右クリックメニューはほとんど使わないとはいえ完全になくなると寂しいかも。

なのでそれを代替してくれるこちらの Compiz-Deskmenu を導入することにしました。

Compiz-Deskmenu

Compiz-Deskmenu

Compiz-Fusion 公式サイトの GITWEB から Compiz-Deskmenu のパッケージをまずダウンロードします。

ダウンロードした書庫を適当なディレクトリに展開。コンソールを開いて展開したディレクトリに移動して、早速インストール・・・・、といきたいところですがここでちょっと待った

この Deskmenu には Python スクリプト言語で記述されたメニュー編集ツール(compiz-deskmenu-editor)が付属してまして、上のスクリーンショットに見られる「編集(E)」を選択すると起動して、Deskmenu を素早くカスタマイズでき非常に便利。

これを利用できるようにするには python-lxml というパッケージをインストールしてやる必要があります。

$ sudo apt-get install python-lxml

追記: Compiz をコンパイルしてインストールしたりしていない人は以下を実行したほうがよいかもしれません。
$ sudo apt-get install python-lxml libgtk2.0-dev libwnck-dev libdbus-1-dev compizconfig-settings-manager libdbus-glib-1-dev

次に、このままだとこの編集ツールからはメニュー・アイテム名に日本語を適用してやることができないので、Deskmenu パッケージに同梱されている compiz-deskmenu-editor スクリプトファイルをインストール前に少し修正します。

ファイルをテキストエディタで開いて、530行目subnode.text = text となっている部分を
subnode.text = unicode(text, 'utf-8') に。

661行目self.node.attrib['name'] = widget.props.text となっている部分を

self.node.attrib['name'] = unicode(widget.props.text, 'utf-8')

にそれぞれ変更して保存。

修正が終わったら、compiz-deskmenu を展開したディレクトリで、

$ make

$ sudo make install

を実行すれば、deskmenu 本体とエディタツールがインストールされます。

(アンインストールは同ディレクトリにて、sudo make uninstall を実行。したがって展開したディレクトリは削除せずにそのままにしておく方がベター。)

訂正:展開したディレクトリ内にある Makefike には uninstall のターゲットが記述されていないので、make uninstall でアンインストールはできません・・・。すいません。

paco のような make install でインストールされるファイルを記録して後から簡単に削除できるツールをあらかじめ導入したうえでインストールするか、(久保さんの指摘に感謝。)

$ sudo make uninstall でインストールファイルを削除できるようにしたい場合は、展開したディレクトリ内にある Makefile に以下を追記。 uninstall:以外の行の先頭は Tab キーでインデントさせてください。

uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/compiz-deskmenu
rm -f $(DESTDIR)$(PREFIX)/bin/compiz-deskmenu-menu
rm -f $(DESTDIR)$(PREFIX)/bin/compiz-deskmenu-editor
rm -rf $(DESTDIR)/etc/xdg/compiz/deskmenu/
rm -f $(DESTDIR)$(PREFIX)/share/dbus-1/services/org.compiz_fusion.deskmenu.service

もしくは、以下のコマンドを端末から実行してファイルを単純に削除。

$ sudo rm -f /usr/bin/compiz-deskmenu-menu /usr/bin/compiz-deskmenu /usr/bin/compiz-deskmenu-editor /usr/share/dbus-1/services/org.compiz_fusion.deskmenu.service ; sudo rm -rf /etc/xdg/compiz/deskmenu


インストールが終わったら、今度はデスクトップでマウスをクリックしたときに compiz-deskmenu が起動するように、Compiz の設定をしなければなりません。

この設定は compiz-deskmenu パッケージに同梱されている autoconfig-compiz.py スクリプトを普通のユーザー権限(従って sudo を使ってはいけない)で実行してやれば自動的にやってくれるとのことですが、念のために手動で設定する方法を以下に書いておきます。(同梱のREADMEファイルにも説明が載っています。)

  1. Compiz の設定マネージャ(CCSM)にある「一般オプション(General Options)」 > 「コマンド(Commands)」 > 「コマンドライン0 (Command line 0)」に compiz-deskmenu と入力。
  2. 「一般オプション(General Options)」 > 「コマンド(Commands)」 > 「キー割り当て(Key Bindings)」 > 「コマンド 0 を実行(Run command 0)」に space を設定。追記:space にしなければならないということはなく、任意のキー設定でかまわない感じです。追記#2: というより他では使わないような、このためだけのキーの組み合わせにした方がベター。メニューが意図せずポップアップするのを防ぐため。)
  3. 「ビューポート・スイッチャー(Viewport Switcher)」プラグインを有効化して、> 「デスクトップ上でのビューポート切り替え(Desktop-based Viewport Switching)」 > 「開始アクション実行プラグイン(Plugin for initiate action)」に core と入力。(Compiz Ver.0.8.2 以降では commands と入力。)
  4. 同じく「ビューポート・スイッチャー(Viewport Switcher)」プラグイン > 「デスクトップ上でのビューポート切り替え(Desktop-based Viewport Switching)」 にある 「開始のアクション名(Action name for initiate)」に run_command0_key と入力。

デフォルトでは「ビューポート・スイッチャー(Viewport Switcher)」プラグイン > 「デスクトップ上でのビューポート切り替え(Desktop-based Viewport Switching)」 > 「プラグインアクションの開始(Initiate Plugin Action)」がマウスの Button2 に設定されてるので、デスクトップ上でマウスの中ボタンをクリックすることによって Compiz-Deskmenu がポップアップ表示されます。ちなみに自分は Button3 に設定して、右クリックで開くようにしています。

Compiz-Deskmenu のデフォルトの設定は /etc/xdg/compiz/deskmenu/menu.xml ですが、menu.xml を  /home/ユーザー名/.config/compiz/deskmenu/menu.xml にコピーすれば、そちらの設定の方が読み込まれて適用されます。

/etc/・・・から menu.xml をコピーしていいですし、ダウンロードして展開した Deskmenu のディレクトリにある menu.xml をコピーしてもよいでしょう。

menu.xml をテキストエディタで直接編集してもよいですが、前述のようにデスクトップ上で Deskmenu を開いて編集(Edit)を選択すると立ち上がる GUI の専用ツールを使用して編集することも可能。

これで Nautilus の Show_Desktop オプションを無効にしても困らないどころか、メニューからビューポートの移動ができるし、開いているウィンドウのリストも得られてむしろ便利に!

広告

12件のコメント »

  1. ジャンボカレー大盛で said

    こんにちは、最近Ubuntuを使い始めたものです
    デスクトップに別々の壁紙が使いたいと思っていて、わかりやすく説明されていたので参考にさせていただきました

    compiz-deskmenu-editor スクリプトファイルの661行目の件なのですが、全角の「‘」が使われていてコピペしたらうまく動きませんでした
    半角に直してから実行すると上手く行ったので一応報告します

  2. kawaji said

    ご指摘ありがとうございます。
    全角となっていた部分を修正しました。

    書いた投稿がちょっとでもお役に立てば幸いです。:)

  3. bg said

    わかりやすい内容で大変助かりました。ありがとうございます。最近、Ubuntsuを使い始めたのですが、自分の環境では

    >「開始アクション実行プラグイン(Plugin for initiate action)」に core

    の代わりに

    commands

    と設定したら動きましたので報告致します。

  4. kawaji said

    ご指摘有難うございます。早速修正しました。
    Compiz の以前のバージョンだと一般オプション(core)に含まれていたものが、
    最新の Compiz ではコマンド(commands)という独立したプラグインになったので core のままだと動きませんね。

  5. 久保哲也 said

    とてもわかりやすく ためになりました。
    当方は、デュアルモニタなのですが、twinview+compizで使用しています。
    モニタ別に、キューブが回転するよう設定しています。
    winのようにモニタごとに壁紙が設定できないのが残念ですが、ほぼ意図した通りにできました。
    これから、メニューをもっといじりたいと思います。
    そこで質問なのですが、 上の写真にあるように、
    メニューにキーボードショートカットをつけるのにはどうしたらいいのでしょう?
    端末(T) のような。。。。
    Nautilus によるデスクトップの描画を停止させたので、キーボードショートカットも使えないんです。
    復活させる方法を、ぜひお教えください。

  6. kawaji said

    端末(T)の場合ですと、名前に 端末(_T) と入力するだけです。
    つまり、ショートカットとして使用したいアルファベットの前にアンダーバー記号を付けてやるだけでオーケーというわけみたいですね。
    ちなみに、元の Nautilus の右クリックメニューにある「外観の設定」を Compiz-Deskmenu に加えるなら、コマンドは「gnome-appearance-properties」になります。

  7. 久保哲也 said

    有難うございました。教えていただき感謝致します。勉強になります。

    さて、Compiz-Deskmenuへの 変更を一旦元に戻したかったので、
    sudo make uninstall を行いましたが、
    私の環境では sudo make uninstall は 機能しませんでした。
    やむを得ず、とっておいたシステムのフルバックアップ(trueimage)から、前の状態に復元し、
    もう一度、今度は paco をいれて、元にもどすことが比較的容易に出来るように、やってみようと思います。

  8. kawaji said

    こちらこそ久保さんに大感謝です。
    ご指摘のおかげで、アンインストールに関する訂正ができました。
    アンインストールターゲットが書かれておらず、make uninstall が通らないというパターンもあるのだということがわかり勉強になりました。
    実際に確認を取らなかったばかりに、迷惑を掛ける結果になってしまい申し訳ないです。

  9. 久保哲也 said

    早速の訂正、すごいですね。いや、誠実と言うか。。
    私は、50近くになって、linuxをはじめまして、Ubuntuのフォーラムやネットで検索するんですが、Kawaji’s Weblog に何度も助けられています。
    つい先日も、cairo-dock の記事をみまして、きちんと体系的にまとめられていて、わかりやすいんですよね。。いつも感心します。
    linuxのことで、検索をかけると、またKawaji’s Weblogだ! 何てことがけっこうあります。
    私も、本業は建築士なんですが、どんな些細な異でも、不明な点があるとほっておけない、気になってしかたがない、技術屋として共通する点が感じられ、共感するところがあるんですね。
    これからも、頑張ってください。

  10. kawaji said

    実際のところは単に Compiz が使いたくて Ubuntu 7.10 を試したのがきっかけの非技術系の者なので、そういっていただくと大変恐縮です。(;^_^A アセアセ
    例えば Compiz-Deskmenu も、たまたま「みんなの Python」みたいな入門書を少し読んでる最中で、それを参考にちょっと Editor スクリプトに修正を入れたら思いがけず日本語がうまく表示されてしまったので喜びのあまり投稿したという次第。
    その様に、いきおいと思い込みで書いてしまうため、後から投稿に訂正を入れることが多くなってる気がします・・・。
    なので、話半分な感じで眺めてもらえれば。^_^

  11. hs said

    大変参考になりました。
    当方もデュアルモニタです。あんまり予算はないのですが、こればっかりは一旦覚えるとシングルモニタでは不便で…。
    壁紙の変更は前から疑問でしたので助かりました。
    10.04にしてから、PlyMouthで、ちょっとおかしな挙動をしてます。
    ログインのウィンドウがメインの左側に出てこないのです。
    たまに出てくるんですが…。法則がつかめなくて困ってます。
    そちらではいかがですか?

  12. kawaji said

    デュアルモニタ羨ましい。
    机にスペースがなく、自分の環境はデュアルではないため、残念ながらその辺りはよくわかりません。 (;^_^A
    Ubuntu日本語フォーラムに、ログイン画面表示時にマウスカーソルが表示されている方にログイン画面が表示されるという報告が挙がってるので、ひょっとしたらこれに該当するかも。
    もしそうなら、マウスの表示位置が一番の問題となるのかもしれません。
    https://forums.ubuntulinux.jp/viewtopic.php?id=8180
    フォーラムに投稿された方は Nvidia のプロプラドライバを使用されてるとのことですが、例えば Ati や Intel といった他の環境でも同じ挙動なんでしょうかね?

RSS feed for comments on this post · TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。