2012-04-19 2 views
7

Linuxでは、実行中のウィンドウマネージャをプログラムで判断する必要があります。それがどのように使用されるかについてLinux OSでKDEまたはGnome環境が使用されているかどうかを検出する方法

擬似コード:

if(WindowManagerOfOS.isKDE()){ 
     do.anyThing(); 
} 

私はこれをどのように行うことができますか?それも可能ですか?

+1

私は自分のコンピュータ上でこれをテストが、UIManager.getSystemLookAndFeelClassNameは()のいずれか1 – Adam

+0

関連に返すものを見てみてくださいすることはできません。http://stackoverflow.com/questions/3376679/qt-how-to-detect-whether- the-application-running-on-gnome-or-kde –

答えて

10
System.getenv("XDG_CURRENT_DESKTOP") 

返信"GNOME"私のマシンにあります。 KDEベースのボックスで試してみてください。

は公式の答えは、あなたが気になっていないことである

+0

ユーザーは両方ともインストールできますが、両方の環境変数が存在する場合にのみ実行できます。実行中のプロセスをチェックする必要があります。 – Adam

+0

Tomaz、私はこれをチェックするために 'KDE_SESSION_VERSION'を使用します。問題は、KDEがデスクトップを持っていないことです... –

+0

私はコメントを忘れてしまった... System.getenv( "XDG_CURRENT_DESKTOP")はKDEネイティブのLinux Mint 12で私のためにnullを表示します。 –

1

も参照してください。どちらのデスクトップも既存の基準を満たしています。どちらもお互いのソフトウェアを動かすことができます。あなたは何をしようとしていますか?特定のサービスであれば、デフォルトでは1つのディストリビューションしか出荷されませんが、代わりにそのディストリビューションを探さなければなりません。

+3

-1これは質問に対する回答ではなく、コメントであったはずです。 –

+0

これは良い答えだと投票するつもりです。おそらく最高のものではないかもしれませんが、時には「しないでください」と言わなければならない場合があります。 –

+1

人々が気にかけて知っておくべきさまざまな場所があります。最初の例はxdg-utilsの中にありますhttp://cgit.freedesktop.org/xdg/xdg-utils/tree/scripts/xdg-utils-common.in see detectDE ()は、xdg-su/xdg-terminalなどで使用され、グラフィカルなsudoラッパーをどのシェルで使用するかを決定します。固定されたAPIや標準でカバーされていない壁紙などの設定もあります。バラエティの壁紙アプリケーションは、次のスクリプトhttp://bazaar.launchpad.net/~peterlevi/variety/trunk/view/head:/data/scripts/set_wallpaperにあるとおりです。 – simotek

関連する問題