SSブログ

【Ubuntu 11.10】Compiz Comfig設定マネージャーのプロファイル選択が出来ない問題の対処 --- Compiz Desktop Cubeも動くようになった [ubuntu]

--- 2011/10/15 追記 ---

直してくれてるようです。

https://bugs.launchpad.net/ubuntu/+source/compizconfig-python/+bug/874799

私のパッチとは若干違いますが、基本的に同じ修正です。そのうち出ると思います。

---2011/10/15追記終わり ---

いつの頃か、Compiz Config設定マネージャーでプロファイル設定が出来なくなりました。

下図のように、プロファイルを変えようとしてもメニューが文字化けしてしまいます。

SS-ccsm-bug1-001.JPG

どこが悪いのかちょっとソースを追いかけてみました。

このメニュー部分を出力する仕組みは、下記のようにコールして行われます。

CompizComfig-Settings-Manager (フロントエンド:pythonで記述)
                ↓
CompizConfig-python (Python -C ブリッジ :pythonで記述)
      ↓
libcompizconfg-0 (Compiz Comfig ライブラリ : Cで記述)
      ↓
compizconfig-backend-gconf (gconfへのアクセスルーチン : Cで記述)
      ↓
    Gconfの設定データ

Gconfの設定データを読んだら、その戻り値でプロファイル名をリスト構造で返していき、最終的にCompiz Config設定マネージャーが出力するようになっています。

Gconfの設定データを読み出したcompizconfig-backend-gconfでは、下図のようなデータ形式でデータを詰め込んでいます。

SS-ccsm-bug1-005.JPG

ところが、CompizConfig-pythonの所で、C言語のデータ形式をpython言語読み出せるようにしているのですが、そこでは何故か下記のデータ形式だと思って読みだしていました。

SS-ccsm-bug1-006.JPG

 

というわけで、compizconfig-python(対象:python-compizconfig_0.9.5.94-0ubuntu2_i386.deb) を書き直しました。

下記がそのパッチ。

diff -urN compizconfig-python-0.9.5.94.org/src/compizconfig.pyx compizconfig-python-0.9.5.94/src/compizconfig.pyx
--- compizconfig-python-0.9.5.94.org/src/compizconfig.pyx       2011-09-03 02:36:32.000000000 +0900
+++ compizconfig-python-0.9.5.94/src/compizconfig.pyx   2011-10-07 15:36:19.034895854 +0900
@@ -1178,11 +1178,11 @@
         self.profiles = {}
         self.currentProfile = Profile (self, ccsGetProfile (self.ccsContext))
         cdef CCSStringList * profileList
-        cdef char * profileName
+        cdef CCSString * profileName
         profileList = ccsGetExistingProfiles (self.ccsContext)
         while profileList != NULL:
-            profileName = <char *> profileList.data
-            self.profiles[profileName] = Profile (self, profileName)
+            profileName = <CCSString *> profileList.data
+            self.profiles[profileName.value] = Profile (self, profileName.value)
             profileList = profileList.next
 
         self.backends = {}
 

後は、ビルドして放り込むだけ。

apt-get source compizconfig-python

cd compizconfig-python-0.9.5.94 

ここで上記パッチを当てて、

sudo apt-get build-deb compizconfig-python 

debuild -us -uc -b

でパッケージを作ります。最後のdebuildをするにはいくつかパッケージをインストールしないといけないのですが、忘れてしまいました・・

後はパッケージをインストールするだけなのですが、私は展開してcompizconfig.soのみをコピーしました。

そしたら下記のように変更できる状態になりました。

SS-ccsm-bug1-002.JPG

今まではデフォルトしか選べなかったのですが(私の環境だけかな??)、下図のように他の物も選べます。

SS-ccsm-bug1-003.JPG

おかげで、Desktop Cubeも動くようになりました。

SS-ccsm-bug1-004.jpeg

もしbackendをGSettingsで動かして、本記事のパッチを当てずにまともに動いたら、厄介な状態です。

そうなったら、本記事のパッチを当てた状態でGSettings側のbackendを変えるか、本記事のパッチを当てずにGconfのbackendを変更する事になります。後者の場合、backendをコールするlibcompizconfig-0が受け渡す際の型が違ってしまうので、前者の方が簡単かもしれません。

それから、本対処をしてもまだ問題があるようで、プロファイルを変更した時にやたら時間がかかってしまいます。(かなりかかります。5~10分前後) なんか、一度Compizが落ちてるんじゃないかな~と思ってしまいます。

 

 ←iPad2 (32G)

    先日(10/5)に、スティーブ・ジョブズさんが
    お亡くなりになりました。
    ご冥福をお祈りします。
    でも、私Appleの製品買った事がない。
    値段が少し高いことと、私が持っている
    他のPCや周辺機器との相性を考えると
    購入できなかったです。


nice!(0)  コメント(2) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 2

toga

ホームフォルダに解凍までは多分できているとおもうのですがパッチやビルドのあたりがうまくいきません詳しくお教えもらえますでしょうか
by toga (2011-10-27 21:59) 

あんきょ

☆togaさん☆
下記に詳しく書いてみました。
http://ankyo.blog.so-net.ne.jp/2011-10-28

読んでみて下さい。
by あんきょ (2011-10-28 04:24) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。