2009年3月20日金曜日

KDEが使える環境でAIRアプリをKDE外から使う

まず結論。
dbusが使える環境で、kdewalletmanagerを起動した状態で、

KDE_SESSION_VERSION=4 KDE_FULL_SESSION=true /opt/TweetDeck/bin/TweetDeck

すればいける(環境変数の値は別のでもいいかもしれないけど調べてない)


以下経緯など
私のマシンでは、kubuntuのKDE4(4.2.1)はちょっと重いので
プログラムを書くのがメインな時はawesomeを使ってみることにした。
(まあ、それでも4.1.xの時と比べたらだいぶマシになった)

そこで困ったのが、AIRアプリであるTweetDeckが動かないこと。
WindowsでもLinuxでも動いて、しかもグループ分けが便利なので気に入って使ってる。
起動すると、次のようなメッセージが出て、画面は表示されるものの使えない状態になる。

$ /opt/TweetDeck/bin/TweetDeck
Unknown desktop manager, only Gnome and KDE are supported
.

Adobe AIRはいまのところKDEとGnomeしかサポートしていないらしい。
試しにKDEWM=/usr/bin/awesomeにして、KDEで使うWindow Managerを
awesomeしたらTweetDeckも動くけど、なんかしっくりこない。


しかたがないので、awesome単体で使える方法を調べることにした。

KDEでTweetDeckを起動するとKwalletが動くので、手動でkwalletmanagerを起動してから
TweetDeckを起動してみたが、また同じメッセージが出てだめだった。

straceを使ってKDEから起動するときと、awesome環境から起動するときの違いをみてみたら、
どうもdbusでkwalletを探してるっぽいことが分かった。

$ qdbus org.kde.kwalletd /modules/kwalletd org.kde.KWallet.localWallet
kdewallet

でも、kwalletmanagerを起動しておけば、ちゃんと見つけられるし、
awesome環境で起動するときは、そもそもkwalletを探していないようなので不足があるようだ。

何か無いかとAIRのディレクトリを探ろうかと思ったら、いきなりlibCore.soを見つけたので、
おもむろにstrings libCore.so | grep -i kdeしてみたら、
KDE_SESSION_VERSION, KDE_FULL_SESSIONが出てきた。
こいつらにKDEで見た値を入れたら動いてしまった。



0 件のコメント:

コメントを投稿