2016-09-04 10 views
1

xlibを使用します。私はウィンドウの位置を覚えて、次回起動時にその位置に復元したい。これは、ユーザが出発するたびにウインドウを所望の位置に移動/サイズ変更する必要がないので、ユーザを助ける。Linuxでのウィンドウ状態の特定と復元

多かれ少なかれOKですが、1つの場合を除きます。ウィンドウが最大化されるとき、私は真の(最大化されていない)サイズと位置を決定する方法を見つけることができません。おそらく誰かがそれを行う方法を知っていますか?

+0

あなたは私達にあなたのコードを表示することができますし、あなたを絞り込みます少し質問?あなたが求めているものは今では広すぎて役に立たないからです。 –

+1

ジオメトリは、最大化されないうちに変更されるたびに覚えておいてください。そうすることで、最新のジオメトリが最大化される前のジオメトリを知ることができます。 –

+1

WindowsでGetWindowPlacement()と似たウィンドウマネージャから取得する方法がないことを正しく理解していますが、変更を追跡する必要があります。しかし、ウィンドウマネージャはサイズを変更する前または後に最大化プロパティを設定できます。最大化の結果としてウィンドウサイズが変化しているときに、すでに設定されている最大化プロパティをカウントできますか? – PineForestRanch

答えて

2

これを行うための標準的な方法はわかっていません。 Metacityへのソースを読んだ場合、MetaWindowオブジェクトにこの最大化されていないサイズが保持されていることがわかりますが、プロパティに格納されているとは思われません。このプロパティはEWMHまたはICCCM仕様には表示されません。

特定のウィンドウマネージャによっては、非標準のプロパティに格納する可能性があります。

ウィンドウが最大化されると、最大化フラグ(libwnckはこの種のものを追跡するための古いライブラリですが、わからない新しいものがあります)を使用してプロパティ変更イベントが発生する可能性があります。しかし、私はそれがフラグの設定の前後に起こっているかどうかを定義しているかどうかは疑問です。恐らく、最大化フラグを設定してから1秒以内に画面の大部分をカバーするサイズ変更が最大化、または同様のハックであるとヒューリスティックに仮定することができます。

私は、この機能を利用する最も簡単な方法は、ウィンドウマネージャの拡張機能やプラグインとして実装することだと思っています。何人かのWMがこれをサポートしています。

残念ながら、この仕様はあまりにも壊れており、不明瞭であり、実装が本質的に不可能です。これまで対処されていなかったアプリケーションの協力が必要となるかもしれない中核的な問題は、再起動時に「同じ」ウィンドウを認識してサイズを復元する方法です。 それには欠点があります。

(私はMetacityのを書いて、ずっと前にカップルのセッションマネージャ上で働いていた私は、より多くのあなたに言ったかもしれないが、私は多くの詳細を忘れてしまったかつてので。)

関連する問題