2012-01-08 6 views
0

私はPyGTKでユーザの壁紙のパスを決定したいと思います。pygtk(多分X11?)で現在の壁紙へのパスを決定する

は、これを行うためのデスクトップ環境の機能に依存しません。これは、自分自身のようなユーザーがDEを使用しないことが原因です。このため、使用している現在の壁紙を確認するためにX11などを使用できるかどうかは疑問です。

+3

X11に壁紙の概念はありません。ルートウィンドウとその背景がありますが、これはファイルシステムに存在するどんな種類のイメージにも関連していません。 –

+0

詳細についてはこちらをご覧ください。起動時にXがバックグラウンドをどのようにロードしますか?それはイメージファイルからではありませんか? – sqram

+1

X11は起動時に背景イメージを読み込まない。シンプルなパターンやソリッドカラーしか使用できません。 DEやxsetbgのような別のクライアントプログラムは、ディスクから画像を読み込んだり(あるいは合成する)、十数個の画像とブレンドしたり、任意の数の画像処理フィルタを適用したり、ビットマップに変換したりすることができます。それを画面の背景として設定します。 X11自体には、ビットマップがどのように取得されたかを知る方法がありません。 –

答えて

2

デスクトップ環境に頼らなくてはならない(MUST)必要があります。そうしないと、X11は壁紙のようなものを扱わないため、不可能です。背景イメージを設定すると、外部プログラムがイメージをロードし、それをルートウィンドウの背景ピックスマップとして設定します。したがって、特定のローディングメカニズムがイメージパスをどこかに格納しない限り、X11自体は、イメージファイルがディスク上のどこにあるかを決して知ることができません。

+0

を参照してください。 Nitrogenのソースコードを見ると、GTKを使用してファイルをビットマップに変換して使用することがわかりました。だから、システムがロードされると、NitrogenやFehなどのプログラムは、pixmapをXに送信しますか? – sqram

+1

@lyraeそれは本当です。彼らはイメージをロードし、ピックスマップに変換します(ビットマップ*ではありません。これはX11についての話では少し異なります)、そのピックスマップをルートウィンドウの背景として設定します。 – AlQafir